Esempio n. 1
0
  @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);
    */
  }