@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); }
public void toggleToDoListVisiblity() { todoListGuiElement.setEnabled(!todoListGuiElement.isEnabled()); }
@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); */ }