internal void update(double gameTime,Timer timer) { if (!enable) return; double currentSeconds = timer.getTime(gameTime); switch(mType){ case type.path: if (currentSeconds >= startTime && path.update(gameTime, currentSeconds)) enable = false; break; case type.sayPack: if (sayPack.update(currentSeconds)) enable = false; break; case type.sayThis: if (startTime <= currentSeconds) { InGame.getInstance().addScreenNote(sayThis); enable = false; } break; } }
internal void startBossFight() { if (fightStatus != FightStatus.preFight) return; //start timer, and check to see if you killed boss in Update loop //if you killed boss, send display a win string on the screen and then start post screen timer = new Timer(mGameTime); fightStatus = FightStatus.fightEngaged; //reset boss cd's /*List<Enemy> enemies = getAliveEnemyMoveables(); foreach (Enemy e in enemies) { e.resetCooldowns(mGameTime); }*/ GameBox.getInstance().save();//for fun thisRaid = PositionFactory.getRaidSetup(getAlivePlayerMoveables()); GameBox.getInstance().setLastRaid(thisRaid); }
public void Update(double gameTime, SimpleMouseState mState, SimpleKeyboardState kState) { mouseState = mState; keyState = kState; mGameTime = gameTime; if (mouseState.right && mouseState.getPos().Y < 550) { tryImoveHere(selected, new Vector2f(mouseState.getPos().X, mouseState.getPos().Y), gameTime); } if (keyState.IsKeyDown(RESTART_KEY)) {//restart GameBox.getInstance().doLastBossFight(); } if (keyState.IsKeyDown(Keyboard.Key.F1) && !prevKeyState.IsKeyDown(Keyboard.Key.F1)) {//lose fight if (fightStatus == FightStatus.fightEngaged || fightStatus == FightStatus.preFight) { fightStatus = FightStatus.fightLost; timer = new Timer(gameTime); } else { GameBox.getInstance().initPostFight(bossFight.getFightID(), finalTime, getPlayerAmt(), damageMeter, fightStatus == FightStatus.fightWon, bossFight.getBossInfo().enragetimer,thisRaid); } } if (fightStatus == FightStatus.fightEngaged || fightStatus == FightStatus.preFight) {//stop updatings stuff after fight for now, later we might have mobs move around after foreach (Moveable m in moveables) { m.Update(gameTime); m.updateBuffs(gameTime); //EFF check if i need all these checks inside this forloop if (mouseState.left) { if (targetNeeded && currentCursor == targetTexture && selected is PlayerClassI && m.isInMe(mouseState.getPos().X, mouseState.getPos().Y)) {//if looking for target PlayerClassI p = (PlayerClassI)selected; if (!targetAll) p.setTarget(m, gameTime); else setAllPlayersTarget(m, gameTime); targetNeeded = false; targetAll = false; currentCursor = null; } else if (mouseState.DoneClickedIt(mouseButton.LEFT) && m.isInMe(mouseState.getPos().X, mouseState.getPos().Y)) { //selection happens right here //selected = m; setSelected(m); } } } } if (kState.IsKeyDown(RAID_TAB_KEY) && !prevKeyState.IsKeyDown(RAID_TAB_KEY)){ //if we hit *TAB* select next person in raid? (maybe closest ?) if(selected != null){ int index = moveables.IndexOf(selected); do{ index = (index + 1) % moveables.Count; }while(moveables[index] is Enemy); setSelected(moveables[index]); } } if (selected is PlayerClassI && kState.IsKeyDown(TARGET_KEY) && !prevKeyState.IsKeyDown(TARGET_KEY)) { if (!targetNeeded) { targetNeeded = true; currentCursor = targetTexture; } else { targetNeeded = false; currentCursor = null; } } if (selected is PlayerClassI && kState.IsKeyDown(TARGETALL_KEY) && !prevKeyState.IsKeyDown(TARGETALL_KEY)) { if (!targetAll) { targetNeeded = true; targetAll = true; currentCursor = targetTexture; } else { targetNeeded = false; targetAll = false; currentCursor = null; } } if (selected is PlayerClassI && kState.IsKeyDown(USE_KEY) && !prevKeyState.IsKeyDown(USE_KEY)) { ((PlayerClassI)selected).doAbility(); } foreach (Projectile p in projectiles) { p.Update(gameTime); if (p.doesCollide() ) { foreach(PlayerClassI m in getAlivePlayerMoveables()){ if(p.getOwner() != m && m.isInMe(p.getMid())) projectilesToRemove.Add(p); } } } foreach (GroundEffect g in groundEffects) { if (g.update(gameTime)) {//if thats true, do groundfire if (g.doAbility == null) { removeGroundEffect(g); continue; } List<PlayerClassI> peopleGotHit = new List<PlayerClassI>(); foreach (PlayerClassI p in getPlayerMoveables()) { //add people to list near fire if( Math.Sqrt(Math.Pow(p.getMid().X-g.getMid().X,2) + Math.Pow(p.getMid().Y-g.getMid().Y,2)) < 13){ peopleGotHit.Add(p); } } foreach(PlayerClassI p in peopleGotHit){ g.doAbility(p); } removeGroundEffect(g); } } //clean up foreach (Projectile p in projectilesToRemove) { projectiles.Remove(p); } projectilesToRemove.Clear(); foreach (GroundEffect g in groundEffectsToRemove) { groundEffects.Remove(g); } groundEffectsToRemove.Clear(); foreach (Projectile p in projectilesToAdd) { projectiles.Add(p); } projectilesToAdd.Clear(); //check if boss enrages if (fightStatus == FightStatus.fightEngaged && !bossEnraged && timer.getTime(gameTime) > bossFight.getBossInfo().enragetimer) { bossFight.setEnraged(true); bossEnraged = true; } //end game stuffs if (fightStatus == FightStatus.fightEngaged) { //check to see if either side has won if (bossFight.isBossFightDead()) {//bossdead finalTime = timer.getFormattedTime(gameTime,3); fightStatus = FightStatus.fightWon; //addScreenNote(bossFight.getBossInfo().deathstring); TODO //start timer to go to post game timer.reset(gameTime); } else if (!areAnyPlayersAlive()) {//peopledead finalTime = timer.getFormattedTime(gameTime,3); fightStatus = FightStatus.fightLost; //start timer to go to post game timer.reset(gameTime); } } raidFrames.checkClicks(mouseState); if (fightStatus == FightStatus.fightLost || fightStatus == FightStatus.fightWon) { if (timer.getTime(gameTime) > TIMETILPOSTGAME) { GameBox.getInstance().initPostFight(bossFight.getFightID(), finalTime, getPlayerAmt(), damageMeter, fightStatus == FightStatus.fightWon, bossFight.getBossInfo().enragetimer, thisRaid); } } //scripts if(fightStatus == FightStatus.fightEngaged) updateScripts(gameTime); //backdrops if (bUpdate = mBackdrop.update(gameTime, 600))//TODO make its so it moves ya know bUpdate = false; //objects? but this should be near other important stuff foreach (FightObject ob in fightObjects) ob.update(gameTime); prevMouseState = mouseState; prevKeyState = kState; }