コード例 #1
0
ファイル: PlayState.java プロジェクト: Bro-Pals/GGJ2016
  @Override
  public void onEnter() {
    // currWorkerSleepTime = 0;
    officeWorld = new GameWorld<>(this);
    camera = new Camera();
    toDoList = new ArrayList<>();
    impTaskObjects = new ArrayList<>();
    ticksPerHour = MILLIS_PER_HOUR_INITIAL;
    impWaitTimeCurrent = IMP_WAIT_TIME_STAGE_1;
    // task and todo list init

    MakeCoffeeTask coffeeTask = new MakeCoffeeTask(this);
    MeetingTask meetingTask = new MeetingTask(this);
    TakeLunchTask lunchTask = new TakeLunchTask(this);
    EmailTask emailTask = new EmailTask(this);
    ScareHouseTask scareTask = new ScareHouseTask(this);
    FaxTask faxTask = new FaxTask(this);
    PaperworkTask paperworkTask = new PaperworkTask(this);
    toDoList.add(coffeeTask);
    toDoList.add(meetingTask);
    toDoList.add(lunchTask);
    toDoList.add(emailTask);
    toDoList.add(scareTask);
    toDoList.add(faxTask);

    workers = new Employee[6];
    BufferedImage workerWorkingImg = getAssetManager().getImage("worker");

    impAlertImage = getAssetManager().getImage("impAlert");
    completeDay = getAssetManager().getImage("dayComplete");

    int workerImageAdjust = 44;

    // add everything to the world
    // desk
    officeWorld.addEntity(
        new OfficeObject(officeWorld, 100, getAssetManager().getImage("workerDesk"), camera));
    workers[0] = new Employee(officeWorld, 100 + workerImageAdjust, workerWorkingImg, camera);
    officeWorld.addEntity(workers[0]);
    // meeting door
    officeWorld.addEntity(
        new OfficeTaskObject(
            officeWorld, 400, getAssetManager().getImage("meetingDoor"), camera, meetingTask));
    //  desk
    officeWorld.addEntity(
        new OfficeObject(officeWorld, 550, getAssetManager().getImage("workerDesk"), camera));
    workers[1] = new Employee(officeWorld, 550 + workerImageAdjust, workerWorkingImg, camera);
    officeWorld.addEntity(workers[1]);
    // coffee maker
    officeWorld.addEntity(
        new OfficeTaskObject(
            officeWorld, 850, getAssetManager().getImage("coffeemaker"), camera, coffeeTask));
    // fax machine
    officeWorld.addEntity(
        new OfficeTaskObject(
            officeWorld, 1000, getAssetManager().getImage("faxMachine"), camera, faxTask));
    //  desk
    officeWorld.addEntity(
        new OfficeObject(officeWorld, 1200, getAssetManager().getImage("workerDesk"), camera));
    workers[2] = new Employee(officeWorld, 1200 + workerImageAdjust, workerWorkingImg, camera);
    officeWorld.addEntity(workers[2]);
    //  desk
    officeWorld.addEntity(
        new OfficeObject(officeWorld, 1450, getAssetManager().getImage("workerDesk"), camera));
    workers[3] = new Employee(officeWorld, 1450 + workerImageAdjust, workerWorkingImg, camera);
    officeWorld.addEntity(workers[3]);
    // phone to order lunch
    officeWorld.addEntity(
        new OfficeTaskObject(
            officeWorld, 1650, getAssetManager().getImage("phoneOffice"), camera, lunchTask));
    // demon desk
    officeWorld.addEntity(
        new OfficeTaskObject(
            officeWorld, 1850, getAssetManager().getImage("paperdesk"), camera, paperworkTask));
    // computer to answer emails
    officeWorld.addEntity(
        new OfficeTaskObject(
            officeWorld, 2000, getAssetManager().getImage("computerdesk"), camera, emailTask));
    //  desk
    officeWorld.addEntity(
        new OfficeObject(officeWorld, 2250, getAssetManager().getImage("workerDesk"), camera));
    workers[4] = new Employee(officeWorld, 2250 + workerImageAdjust, workerWorkingImg, camera);
    officeWorld.addEntity(workers[4]);
    //  desk
    officeWorld.addEntity(
        new OfficeObject(officeWorld, 2500, getAssetManager().getImage("workerDesk"), camera));
    workers[5] = new Employee(officeWorld, 2500 + workerImageAdjust, workerWorkingImg, camera);
    officeWorld.addEntity(workers[5]);
    // portal to scare the family
    officeWorld.addEntity(
        new OfficeTaskObject(
            officeWorld, 2800, getAssetManager().getImage("portalOffice"), camera, scareTask));

    // init player last (so they're drawn on top)
    Track right =
        new Track(
            new BufferedImage[] {getImage("demon1"), getImage("demon2"), getImage("demon3")}, 200);
    getAssetManager().createHorizontialFlipCopy(getImage("demon1"), "demon1Left");
    getAssetManager().createHorizontialFlipCopy(getImage("demon2"), "demon2Left");
    getAssetManager().createHorizontialFlipCopy(getImage("demon3"), "demon3Left");
    Track left =
        new Track(
            new BufferedImage[] {
              getImage("demon1Left"), getImage("demon2Left"), getImage("demon3Left")
            },
            200);
    Animation rightAnim = new Animation();
    rightAnim.setTrack(rightAnim.addTrack(right));
    Animation leftAnim = new Animation();
    leftAnim.setTrack(leftAnim.addTrack(left));
    demonPlayer = new PlayerDemon(officeWorld, 0, leftAnim, rightAnim, camera);
    officeWorld.addEntity(demonPlayer);

    // init flip imp images
    getAssetManager()
        .createHorizontialFlipCopy(
            getAssetManager().getImage("troublemaker1"), "troublemaker1flip");
    getAssetManager()
        .createHorizontialFlipCopy(
            getAssetManager().getImage("troublemaker2"), "troublemaker2flip");

    impImage = getImage("troublemaker1flip");

    // employee heads init
    workerHeadsIcon =
        new BufferedImage[] {
          getAssetManager().getImage("workerHeadAwake"),
          // getAssetManager().getImage("workerHeadSleeping"),
          getAssetManager().getImage("workerHeadDead")
        };

    // Background init
    officeBackgroundRepeated = getAssetManager().getImage("foreground");
    coolParallaxScrolling = getAssetManager().getImage("background");
    border = getAssetManager().getImage("border");
    border2 = getAssetManager().getImage("border2");

    // other images init
    canNotDoYetPrompt = getAssetManager().getImage("canNotDoYet");

    /// Gui init
    gui = new Gui();
    GuiGroup main = new GuiGroup();

    main.addElement(new PaperStackGui(0, 300, 200, 300, this));
    main.addElement(clockGui = new ClockGui(600, 300, 200, 300, this));
    // draw last to put it on top
    main.addElement(todoListGuiElement = new ToDoListElement(200, 200, 600, 400, this));
    gui.addGroup("main", main);
    gui.setEnabled("main", true);
    todoListGuiElement.setEnabled(false);
    dayOn = 0;
    SoundPlayer.getSoundPlayer().setMusicTo(SoundPlayer.MAIN_SONG);
  }
コード例 #2
0
ファイル: PlayState.java プロジェクト: Bro-Pals/GGJ2016
 public void toggleToDoListVisiblity() {
   todoListGuiElement.setEnabled(!todoListGuiElement.isEnabled());
 }
コード例 #3
0
ファイル: PlayState.java プロジェクト: Bro-Pals/GGJ2016
  @Override
  public void render(Object o) {
    Graphics2D g2 = (Graphics2D) o;
    // Clear the background
    g2.setColor(Color.BLACK);
    g2.fillRect(0, 0, 800, 600);
    // 1. clip office work to draw.
    // 800x300 Office world from (0, 0)
    //    draw background(s)
    //    draw all of the office furniture/people
    //    draw the demon
    //    If one is viewing the tasks window, render the tasks.
    Graphics2D officeRender = (Graphics2D) g2.create(0, 0, 800, 300); // reset the graphics

    // Draw the background
    officeRender.drawImage(coolParallaxScrolling, -parallaxOffset, 0, null);
    officeRender.drawImage(coolParallaxScrolling, 800 - parallaxOffset, 0, null);
    officeRender.drawImage(coolParallaxScrolling, -parallaxOffset, 100, null);
    officeRender.drawImage(coolParallaxScrolling, 800 - parallaxOffset, 100, null);

    int offset = ((int) camera.getXLocation()) % officeBackgroundRepeated.getWidth();
    for (int i = 0; i < ((officeBackgroundRepeated.getWidth() / 800) + 1); i++) {
      officeRender.drawImage(
          officeBackgroundRepeated,
          (int) (-offset + (i * officeBackgroundRepeated.getWidth())),
          100,
          null);
    }

    for (int i = 0; i < officeWorld.getEntities().size(); i++) {
      officeWorld.getEntities().get(i).render(officeRender);
    }
    officeRender.dispose();
    // 2. clip task world to draw.
    // 400x300 task world from (200, 300)
    //    If there is an active task, draw it
    //    Otherwise, draw a placeholder(?)
    Graphics2D taskRender = (Graphics2D) g2.create(200, 300, 400, 300);
    /// for (int j=0; j<toDoList.size(); j++) {
    ///     toDoList.get(j).render(g2); // pass the clipped graphics in
    /// }
    if (activeTask != null) {
      // find what task needs to be done next
      activeTask.render(taskRender);
      if (!isCompletedWithTasks()
          && activeTask != toDoList.get(nextTaskIndex)
          && !activeTask.isComplete()
          && !(activeTask instanceof HitImpTask)
          && !(activeTask instanceof InterviewTask)
          && !(activeTask instanceof PaperworkTask)) {
        // prompt that the task is visited too  early
        taskRender.drawImage(canNotDoYetPrompt, 0, 0, null);
      }
    } else {
      // Whatever is there with no task
    }
    taskRender.dispose();

    if (isFinishedWithDailyThings() && !viewingCompletedDay) {
      // SoundPlayer.getSoundPlayer().playVictoryMusic();
      SoundPlayer.getSoundPlayer().setMusicTo(SoundPlayer.NONE);
      SoundPlayer.getSoundPlayer().playVictoryMusic();
      viewingCompletedDay = true;
    }

    // draw the to-do list on top of everything
    if (viewingTasks) {
      // View all of the tasks.
    }
    gui.render(o);
    // Draw borders

    g2.drawImage(border, 0, 300, null);
    g2.drawImage(border2, 196, 306, null);
    g2.drawImage(border2, 598, 306, null);

    // render employee status gui according to what state they're in.
    for (int i = 0; i < workers.length; i++) {
      g2.drawImage(workerHeadsIcon[(workers[i].getState())], 495 + (50 * i), 10, null);
    }

    BufferedImage dayImg = getAssetManager().getImage("day" + (dayOn + 1));
    if (dayImg != null) {
      g2.drawImage(dayImg, 10, 10, null);
    }

    // draw the alert GUI warning about an imp attack
    for (int i = 0; i < impTaskObjects.size(); i++) {
      int yPos = 30 + (i * 25);
      int xPos = (int) (impTaskObjects.get(i).getX() - camera.getXLocation());
      // contain it to the screen so one can see what direction to go.
      if (xPos < 10) {
        xPos = 10;
      } else if (xPos > 730) {
        xPos = 770;
      }
      g2.drawImage(impAlertImage, xPos, yPos, null);
    }

    // Draw an imp that is flying across the screen
    if (showImp) {
      g2.drawImage(
          impImage,
          impXLoc - (impImage.getWidth() / 2),
          (int) ((((float) ((impXLoc - 400) * (impXLoc - 400))) / 1000) + 150)
              - (impImage.getHeight() / 2),
          null);
    }

    if (viewingCompletedDay) {
      // g2.drawImage(completeDay, 200, 150, null);
    }

    // draw the todolist last to go on top
    todoListGuiElement.render(o);

    /*
    Debugging things
    */
    /*
    g2.setColor(Color.WHITE);
    g2.fillRect(0, 0, 150, 50);
    g2.setColor(Color.BLACK);
    g2.drawString("activeTask: " + activeTask, 10, 20);
    g2.drawString("paperworkLeft: " + paperworkLeft, 10, 30);
    */
  }