/// <summary> /// Initialize a battle sequence by name. This call happens at the start of a battle and is required /// for this scene to not die a horrible death. /// </summary> /// <param name="battleName">Name of the battle to be initialized</param> public void SetBattle(string battleName) { // set up defaults BattleBoard = new BattleBoard(); RoundNumber = 0; FactionTurn = 0; _state = BattleState.PlayerTurn; var partyGrid = new List <Point>(); _battleBoardLayer = new BattleBoardLayer(this, null); _battleBoardLayer.CharacterSelected += SelectCharacter; Components.Add(_battleBoardLayer); switch (battleName) { case "coliseum/halls": _battleBoardLayer.SetBackground("Zones/Coliseum/Halls/north"); _battleBoardLayer.SetGrid("Zones/Coliseum/Halls/battle"); BattleBoard.Sandbag = Grid.FromBitmap(Game.Services, "Zones/Coliseum/Halls/battle"); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/Halls/north")); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 393, Y = 190, DrawOrder = 248 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 393, Y = 390, DrawOrder = 448 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 393, Y = 590, DrawOrder = 648 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 593, Y = 190, DrawOrder = 248 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 593, Y = 390, DrawOrder = 448 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 593, Y = 590, DrawOrder = 648 }); partyGrid.Add(new Point(10, 13)); partyGrid.Add(new Point(11, 13)); partyGrid.Add(new Point(9, 13)); partyGrid.Add(new Point(10, 12)); partyGrid.Add(new Point(11, 12)); partyGrid.Add(new Point(9, 12)); BattleBoard.Characters.Add(GenerateCombatant("Guard 1", "coliseum/guard", new Vector2(9, 3))); BattleBoard.Characters.Add(GenerateCombatant("Guard 2", "coliseum/guard", new Vector2(11, 3))); BattleBoard.Characters.Add(GenerateCombatant("Guard Captain", "coliseum/guard", new Vector2(10, 3))); BattleBoard.Characters.Add(GenerateCombatant("Guard 3", "coliseum/guard", new Vector2(9, 10))); BattleBoard.Characters.Add(GenerateCombatant("Guard 4", "coliseum/guard", new Vector2(11, 10))); BattleBoard.Characters.Add(GenerateCombatant("Guard 5", "coliseum/guard", new Vector2(10, 10))); _startingDialog = Dialog.Fetch("coliseum", "guards"); break; default: throw new Exception("unknown battle " + battleName); } // add party to the party grid for this battle, in order for (var i = 0; i < ((SRPGGame)Game).Party.Count; i++) { var character = ((SRPGGame)Game).Party[i]; character.Avatar.Location.X = partyGrid[i].X; character.Avatar.Location.Y = partyGrid[i].Y; BattleBoard.Characters.Add(character); } _battleBoardLayer.SetBoard(BattleBoard); _commander.BattleBoard = BattleBoard; // center camera on partyGrid[0] UpdateCamera( 0 - partyGrid[0].X * 50 + Game.GraphicsDevice.Viewport.Width / 2, 0 - partyGrid[0].Y * 50 + Game.GraphicsDevice.Viewport.Height / 2 ); ChangeFaction(0); }
/// <summary> /// Initialize a battle sequence by name. This call happens at the start of a battle and is required /// for this scene to not die a horrible death. /// </summary> /// <param name="battleName">Name of the battle to be initialized</param> public void SetBattle(string battleName) { // set up defaults BattleBoard = new BattleBoard(); RoundNumber = 0; FactionTurn = 0; _state = BattleState.PlayerTurn; var partyGrid = new List<Point>(); _battleBoardLayer = new BattleBoardLayer(this, null); _battleBoardLayer.CharacterSelected += SelectCharacter; Components.Add(_battleBoardLayer); switch(battleName) { case "coliseum/halls": _battleBoardLayer.SetBackground("Zones/Coliseum/Halls/north"); _battleBoardLayer.SetGrid("Zones/Coliseum/Halls/battle"); BattleBoard.Sandbag = Grid.FromBitmap(Game.Services, "Zones/Coliseum/Halls/battle"); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/Halls/north")); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 393, Y = 190, DrawOrder = 248 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 393, Y = 390, DrawOrder = 448 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 393, Y = 590, DrawOrder = 648 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 593, Y = 190, DrawOrder = 248 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 593, Y = 390, DrawOrder = 448 }); _battleBoardLayer.AddImage(new ImageObject(Game, _battleBoardLayer, "Zones/Coliseum/pillar") { X = 593, Y = 590, DrawOrder = 648 }); partyGrid.Add(new Point(10,13)); partyGrid.Add(new Point(11,13)); partyGrid.Add(new Point(9,13)); partyGrid.Add(new Point(10,12)); partyGrid.Add(new Point(11,12)); partyGrid.Add(new Point(9,12)); BattleBoard.Characters.Add(GenerateCombatant("Guard 1", "coliseum/guard", new Vector2(9, 3))); BattleBoard.Characters.Add(GenerateCombatant("Guard 2", "coliseum/guard", new Vector2(11, 3))); BattleBoard.Characters.Add(GenerateCombatant("Guard Captain", "coliseum/guard", new Vector2(10, 3))); BattleBoard.Characters.Add(GenerateCombatant("Guard 3", "coliseum/guard", new Vector2(9, 10))); BattleBoard.Characters.Add(GenerateCombatant("Guard 4", "coliseum/guard", new Vector2(11, 10))); BattleBoard.Characters.Add(GenerateCombatant("Guard 5", "coliseum/guard", new Vector2(10, 10))); _startingDialog = Dialog.Fetch("coliseum", "guards"); break; default: throw new Exception("unknown battle " + battleName); } // add party to the party grid for this battle, in order for(var i = 0; i < ((SRPGGame)Game).Party.Count; i++) { var character = ((SRPGGame) Game).Party[i]; character.Avatar.Location.X = partyGrid[i].X; character.Avatar.Location.Y = partyGrid[i].Y; BattleBoard.Characters.Add(character); } _battleBoardLayer.SetBoard(BattleBoard); _commander.BattleBoard = BattleBoard; // center camera on partyGrid[0] UpdateCamera( 0 - partyGrid[0].X*50 + Game.GraphicsDevice.Viewport.Width/2, 0 - partyGrid[0].Y*50 + Game.GraphicsDevice.Viewport.Height/2 ); ChangeFaction(0); }