public void Update(GameTime gameTime) { for (int i = 0; i < playerec.Length; i++) playerec[i].Update(gameTime); for (int i = 0; i < enemyrec.Length; i++) enemyrec[i].Update(gameTime); if (!drawprojectile && projectiles.Count > 0) { currentprojectile = projectiles.Dequeue(); shotprojectileat = (int)gameTime.TotalGameTime.TotalMilliseconds; drawprojectile = true; drawplayerhpattime = shotprojectileat + 2 * PROJECTILE_TIME; } if (drawplayerhpattime < gameTime.TotalGameTime.TotalMilliseconds) { drawplayerhp = true; } if (drawplayerhp && drawplayerhpattime + 1000 < gameTime.TotalGameTime.TotalMilliseconds) { drawplayerhp = false; drawplayerhpattime = Int32.MaxValue; } if (drawprojectile) { currentprojectile.Update(gameTime); int curtime = (int)gameTime.TotalGameTime.TotalMilliseconds; if (curtime - shotprojectileat > PROJECTILE_TIME) { drawprojectile = false; } } if (!drawprojectile) { switch (state) { case BattleStageType.ACTION: if (enemies[0].player.GetCurrentHealth() <= 0) { state = BattleStageType.WIN; } if (party.partyMembers[0].GetCurrentHealth() <= 0) { state = BattleStageType.LOSE; } if (state == BattleStageType.ACTION) { aButton.Update(); itemButton.Update(); fleeButton.Update(); spellButton.Update(); } break; case BattleStageType.FIGHT: while (this.currentActions.Count > 0) { BattleAction a = this.currentActions.Dequeue(); a.performAction(gameTime); } //this.state = BattleStageType.ACTION; break; case BattleStageType.FLEE: Console.WriteLine("FLEE STAGE?"); Event e = new Event(); e.setEventType(EventType.MAP_TRANSITION); e.addProperty("x", xRet); e.addProperty("y", yRet); e.addProperty("mapfile", retMap); Game1.addToEventQueue(e); this.continueCombat = false; break; case BattleStageType.LOSE: Event e1 = new Event(); e1.setEventType(EventType.MAP_TRANSITION); e1.addProperty("x", xRet); e1.addProperty("y", yRet); e1.addProperty("mapfile", retMap); Game1.addToEventQueue(e1); Event e2 = new Event(); e2.setEventType(EventType.LOSE_GAME); Game1.addToEventQueue(e2); break; case BattleStageType.WIN: party.partyMembers[0].inventory.AddItem(enemies[0].prize); Event e3 = new Event(); e3.setEventType(EventType.MAP_TRANSITION); e3.addProperty("x", xRet); e3.addProperty("y", yRet); e3.addProperty("mapfile", retMap); Game1.addToEventQueue(e3); Event e4 = new Event(); e4.setEventType(EventType.MESSAGE); e4.addProperty("text", "You looted " + enemies[0].prize.name); Game1.addToEventQueue(e4); break; } } }
public BattleSequence(Party party, Enemy[] enemies, SpriteFont displayTextFont, TileMap battleMap, int xRet, int yRet, String retMap) { this.playerec = new BattleEntity[] { new BattleEntity(new Rectangle(366, 207, 32, 32), Game1.playerLeftFace, Game1.playerLeftFaceHit) }; this.enemyrec = new BattleEntity[] { new BattleEntity(new Rectangle(111, 207, 32, 32), Game1.enemy1RightFace, Game1.enemy1RightFaceHit) }; this.party = party; this.enemies = enemies; this.combatLog = new List<String>(); this.combatLogFont = displayTextFont; this.currentActions = new Queue<BattleAction>(); this.continueCombat = true; this.partyDead = false; this.enemiesDead= false; this.isWaiting = false; this.xRet = Convert.ToString(xRet); this.yRet = Convert.ToString(yRet); this.retMap = retMap; this.projectiles = new Queue<Projectile>(); state = BattleStageType.ACTION; drawplayerhpattime = Int32.MaxValue; }