public void SpawnUnit(Unit UnitToSpawn, MapZones Side, bool UI_Show) { UnitToSpawn.Position = new Vector2(Position.X, Position.Y); if (Side == MapZones.RIGHT) { UnitToSpawn.CurrentFrame = 1; } else { UnitToSpawn.CurrentFrame = 5; } UnitOnTile = UnitToSpawn; UnitToSpawn.Spawn(); if (TileContains == MapTiles.NONE) { TileContains = MapTiles.WITH_UNIT; } else { TileContains = MapTiles.WITH_UNIT_AND_BUILDING; } if (!UI_Show) { UnitToSpawn.UI_Visible = false; } }
public void HighLiteTilesWithPF(MapZones Opponent) { int PL; List <Point> Marked; PathFinding(ActionStartPoint.X, ActionStartPoint.Y, 0, 0, Tiles[ActionStartPoint.X][ActionStartPoint.Y].UnitOnTile.MovePointsLeft, out PL, out Marked, Opponent); foreach (var Til in Marked) { if (!ChangedAnimTiles.Contains(Til)) { ChangedAnimTiles.Add(Til); } } foreach (var TilCoords in Marked) { ChangeTilesAnims(2, 1, new Animation(1, 1, true), TilCoords); } }
public bool Equals(ZoneData other) { if (other == null) { return(false); } return(CurrentZoneIndex.Equals(other.CurrentZoneIndex) && CurrentLevel.Equals(other.CurrentLevel) && FindIndex.Equals(other.FindIndex) && Zones.SequenceEqual(other.Zones) && ZoneInfo.SequenceEqual(other.ZoneInfo) && NumberOfZones.Equals(other.NumberOfZones) && NumberOfZoneInfos.Equals(other.NumberOfZoneInfos) && MapZones.SequenceEqual(other.MapZones) && AudioZones.SequenceEqual(other.AudioZones) && NumberOfMapZones.Equals(other.NumberOfMapZones) && NumberOfAudioZones.Equals(other.NumberOfAudioZones)); }
public bool CheckTileAllowed(Point TileCoords, MapZones AllowedZones, CardCanUseOnTiles AllowedTiles) { if (AllowedZones == MapZones.RIGHT && TileCoords.Y != Tiles[0].Length - 1) { return(false); } if (AllowedZones == MapZones.LEFT && TileCoords.Y != 0) { return(false); } if (AllowedTiles == CardCanUseOnTiles.ONLY_NONE && Tiles[TileCoords.X][TileCoords.Y].TileContains != MapTiles.NONE) { return(false); } if (AllowedTiles == CardCanUseOnTiles.ONLY_WITH_BUILDING && Tiles[TileCoords.X][TileCoords.Y].TileContains != MapTiles.WITH_BUILDING) { return(false); } if (AllowedTiles == CardCanUseOnTiles.ONLY_WITH_UNIT && Tiles[TileCoords.X][TileCoords.Y].TileContains != MapTiles.WITH_UNIT) { return(false); } if (AllowedTiles == CardCanUseOnTiles.WITH_BUILDING_AND_WITH_UNIT && Tiles[TileCoords.X][TileCoords.Y].TileContains != MapTiles.WITH_UNIT_AND_BUILDING) { return(false); } if (AllowedTiles == CardCanUseOnTiles.NONE_OR_WITH_UNIT && !(Tiles[TileCoords.X][TileCoords.Y].TileContains == MapTiles.NONE || Tiles[TileCoords.X][TileCoords.Y].TileContains == MapTiles.WITH_UNIT)) { return(false); } if (AllowedTiles == CardCanUseOnTiles.NONE_OR_WITH_BUILDING && !(Tiles[TileCoords.X][TileCoords.Y].TileContains == MapTiles.NONE || Tiles[TileCoords.X][TileCoords.Y].TileContains == MapTiles.WITH_BUILDING)) { return(false); } if (AllowedTiles == CardCanUseOnTiles.WITH_BUILDING_OR_WITH_UNIT && !(Tiles[TileCoords.X][TileCoords.Y].TileContains == MapTiles.WITH_UNIT || Tiles[TileCoords.X][TileCoords.Y].TileContains == MapTiles.WITH_BUILDING)) { return(false); } return(true); }
public void Update(ref bool IsMouseHandled, Map TiledMap, Camera cam, float CardAppearPos, bool IsPlayerTurn, MapZones PlayerZone, GameState state, int PlayerMoney) { ChooseArrow.Update(); for (var i = 0; i < KilledNonTargetCards.Count; i++) { if (KilledNonTargetCards[i] != null) { if (KilledNonTargetCards[i].CurrAnimName == "NONE") { KilledNonTargetCards.RemoveAt(i); i--; } else { KilledNonTargetCards[i].UpdateAnims(); } } } if (_ChoosedCard == -1) { for (var i = 0; i < Cards.Count; i++) { if (Cards[i] != null) { Cards[i].MoveUpdate(); Cards[i].UpdateAnims(); if (!IsMouseHandled && Cards[i].Update() != ButtonStates.NONE) { IsMouseHandled = true; _ChoosedCard = i; } else { Cards[i].StopAnimation(true); //Cards[i].IterationReset(); Cards[i].Down(); } } } } else if (Cards[_ChoosedCard] != null) { IsMouseHandled = true; for (var i = 0; i < Cards.Count; i++) { Cards[i].MoveUpdate(); Cards[i].UpdateAnims(); } if (MouseControl.IsLeftBtnClicked) { if (IsClick) { IsClick = false; Cards[_ChoosedCard].IsPressed = false; } else { IsClick = true; Cards[_ChoosedCard].IsPressed = true; } } var Upd = Cards[_ChoosedCard].Update(); if (IsPlayerTurn && (IsClick || Upd == ButtonStates.PRESSED)) { CalculateCardPosition(10, true, _ChoosedCard); Cards[_ChoosedCard].Down(); Cards[_ChoosedCard].SetUpLayer(); Cards[_ChoosedCard].Position = new Vector2(MouseControl.X - (Cards[_ChoosedCard].FrameSize.X * 0.25f), MouseControl.Y - (Cards[_ChoosedCard].FrameSize.Y * 0.25f)); if (MouseControl.Y < CardAppearPos) { IsMouseHandled = false; if (Cards[_ChoosedCard].IsTargeted) { if (!TiledMap.IsAnimsChanged) { TiledMap.ChangeTilesAnims(2, 1, new Animation(1, 1, true), TiledMap.GetTilesByAllowedZones(Cards[_ChoosedCard].AllowedZones, Cards[_ChoosedCard].AllowedTiles)); } Cards[_ChoosedCard].Disappear(); ChooseArrow.Appear(); ChooseArrow.BeginPoint = new Vector2((300 + CurrentScreenRes.X) / 2, CurrentScreenRes.Y + 20); ChooseArrow.EndPoint = new Vector2(MouseControl.X, MouseControl.Y); } else { Cards[_ChoosedCard].PlayAnimation("Choosed"); } } else { if (Cards[_ChoosedCard].IsTargeted) { TiledMap.SetDefault(); ChooseArrow.Disappear(); Cards[_ChoosedCard].Appear(); Cards[_ChoosedCard].IsDisappearing = false; } else { Cards[_ChoosedCard].CurrentFrame = 0; } } } else if (Upd != ButtonStates.NONE) { if (Upd == ButtonStates.CLICKED) { Cards[_ChoosedCard].Down(); if (Cards[_ChoosedCard].IsTargeted) { ChooseArrow.Disappear(); Cards[_ChoosedCard].Appear(); Cards[_ChoosedCard].IsDisappearing = false; } else { Cards[_ChoosedCard].StopAnimation(true); } if (MouseControl.Y < CardAppearPos) { var Tmp = TiledMap.GetTileIJByCoords(MouseControl.MouseToWorldCoords(cam)); Tile TmpTile; if (Tmp != null) { TmpTile = TiledMap.GetTile(Tmp[0], Tmp[1]); } else { TmpTile = null; } if (Cards[_ChoosedCard].IsTargeted) { if (TmpTile != null && PlayerMoney >= Convert.ToInt32(Cards[_ChoosedCard].MoneyInfo.Text) && TiledMap.CheckTileAllowed(new Point(Tmp[0], Tmp[1]), PlayerZone, Cards[_ChoosedCard].AllowedTiles)) //DONE: Убрать костыль TmpTile.NotSelectedFrame != 0, ввести тип Player для поиска правильной стороны { //TEST: Юниты //TmpTile.SpawnUnit(new Unit(Vector2.Zero, GameContent.UnitTextures[0], GameContent.UI_Info_Allied, GameContent.UI_InfoFont, Color.White, 392, 20, 5, 3, 6, 1, 2, Side.PLAYER, AttScript, ScrForUnit, new Point(Tmp[0], Tmp[1]), new Animation(8, 17, false), 0.4f), MapZones.RIGHT, TiledMap.UI_VisibleState); CommandParser.SendCommandToGameServer(new string[] { "SPAWN", _ChoosedCard.ToString(), Tmp[0].ToString(), Tmp[1].ToString() }); state.SetEnemyTurn(); Cards.RemoveAt(_ChoosedCard); } else { CalculateCardPosition(10, true); } } else { Cards[_ChoosedCard].StopAnimation(true); KilledNonTargetCards.Add(new Card(Cards[_ChoosedCard])); KilledNonTargetCards.Last().Disappear(); Cards.RemoveAt(_ChoosedCard); } TiledMap.SetDefault(); } else { CalculateCardPosition(10, true); } _ChoosedCard = -1; } } else { Cards[_ChoosedCard].Down(); //Cards[_ChoosedCard].IterationReset(); _ChoosedCard = -1; } } }
public void Update(ref bool IsMouseHandled, Map map, Hand hand, Camera cam, GameMenu Menu, MapZones Opponent) { EnemyTurnMoveProcess(); Br.UpdateAnims(); if (_IsEndGame) { if (iteration < 300) { iteration++; if (iteration >= 60 && iteration < 90) { EndGame.Visible = true; EndGame.Scale -= new Vector2(0.0333f); } } else { if (iteration == 300) { Parent.EndGame(); iteration++; } } } else if (_IsVs) { Cardchoose.Update(); if (ChooseConfirm.Update() == ButtonStates.CLICKED) { Parent.IsNotLockClick = false; ChooseConfirm.Visible = false; var replacedcards = Cardchoose.GetReplacedCards(); var command = new List <string>(); for (var i = 0; i < replacedcards.Length; i++) { if (replacedcards[i] == true) { command.Add(i.ToString()); } } if (command.Count == 0) { command.Add("NONE"); } CommandParser.SendCommandToGameServer(command.ToArray()); } IsMouseHandled = true; if (iteration < 120) { if (IsStartVs && iteration > 80) { PlayerIcon.Position += new Vector2((_DestinationPointPlayer.X - PlayerIcon.Position.X) / 8, 0); OpponentIcon.Position -= new Vector2((OpponentIcon.Position.X - _DestinationPointOpponent.X) / 8, 0); PlayerName.Position = new Vector2(PlayerIcon.Position.X + PlayerIcon.Texture.Width / 2 * PlayerIcon.Scale.X - PlayerName.Font.MeasureString(PlayerName.Text).X, PlayerIcon.Position.Y + PlayerIcon.Texture.Height * PlayerIcon.Scale.Y); OpponentName.Position = new Vector2(OpponentIcon.Position.X + OpponentIcon.Texture.Width / 2 * OpponentIcon.Scale.X - OpponentName.Font.MeasureString(OpponentName.Text).X, OpponentIcon.Position.Y + OpponentIcon.Texture.Height * OpponentIcon.Scale.Y); } if (IsStopVs && iteration > 80) { PlayerIcon.Position -= _TmpPlDistance; OpponentIcon.Position -= _TmpOpDistance; PlayerIcon.Scale -= _TmpIconScale; OpponentIcon.Scale -= _TmpIconScale; PlayerName.Position -= _TmpPlNameDistance; OpponentName.Position -= _TmpOpNameDistance; PlayerName.Scale -= _TmpTextScale; OpponentName.Scale -= _TmpTextScale; Vs.Visible = false; } if (iteration == 119) { if (IsStartVs) { IsStartVs = false; StopVS(); } else if (IsStopVs) { IsStopVs = false; PlayerIcon.Position = Vector2.Zero; OpponentIcon.Position = new Vector2(_CurrentScreenRes.X - OpponentIcon.Texture.Width * OpponentIcon.Scale.X, 0); PlayerIcon.Scale = new Vector2(0.4f); OpponentIcon.Scale = new Vector2(0.4f); PlayerName.Scale = Vector2.One; OpponentName.Scale = Vector2.One; PlayerName.Position = PlayerIcon.Position + new Vector2(PlayerIcon.Texture.Width * PlayerIcon.Scale.X + 10, 0); OpponentName.Position = OpponentIcon.Position - new Vector2(OpponentName.Font.MeasureString(OpponentName.Text).X + 10, 0); ChooseText.Visible = true; ChooseOrderText.Visible = true; ChooseConfirm.Visible = true; var Cards = new Card[ShowingCards.Length]; for (var i = 0; i < ShowingCards.Length; i++) { Cards[i] = new Card(Vector2.One, GameContent.CardTexture, GameContent.UnitCards[ShowingCards[i]].Card_Decoration, new Vector2(16, 9), 200, 10, 0, 13, new Animation(14, 16, true), new Animation(2, 6, false), new Animation(7, 12, false), new Animation(1, 1, true), 0, GameContent.UI_InfoFont, Color.White, GameContent.UnitCards[ShowingCards[i]].Name, GameContent.UnitCards[ShowingCards[i]].Damage.ToString(), GameContent.UnitCards[ShowingCards[i]].Armor.ToString(), GameContent.UnitCards[ShowingCards[i]].AttackRadius.ToString(), GameContent.UnitCards[ShowingCards[i]].Speed.ToString(), GameContent.UnitCards[ShowingCards[i]].HP.ToString(), GameContent.UnitCards[ShowingCards[i]].Cost.ToString(), 141, 315, 4, 4, 37, true, Parent.PlayerSide, Layer: 0.001f); } Cardchoose.ShowCards(true, Cards); } else { _IsVs = false; ChooseText.Visible = false; ChooseOrderText.Visible = false; ChooseText.Text = "Выберите карту"; ChooseText.Position = new Vector2((CurrentScreenRes.X - ChooseText.Font.MeasureString(ChooseText.Text).X) / 2, CurrentScreenRes.Y / 2 - 250); hand.AddCards(20, Cardchoose.GetCards(true).ToArray()); Cardchoose.ClearCardList(); Br.ScreenBrUp(); } } iteration++; } } else if (IsPlayerTurnStarted) { if (iteration < 100) { NewTurnText.Update(); if (iteration == 79) { NewTurnText.Disappear(); } iteration++; } else { if (!IsPlayerTurnCardShown) { IsPlayerTurnCardShown = true; ChooseText.Visible = true; var Cards = new Card[ShowingCards.Length]; for (var i = 0; i < ShowingCards.Length; i++) { Cards[i] = new Card(Vector2.One, GameContent.CardTexture, GameContent.UnitCards[ShowingCards[i]].Card_Decoration, new Vector2(16, 9), 200, 10, 0, 13, new Animation(14, 16, true), new Animation(2, 6, false), new Animation(7, 12, false), new Animation(1, 1, true), 0, GameContent.UI_InfoFont, Color.White, GameContent.UnitCards[ShowingCards[i]].Name, GameContent.UnitCards[ShowingCards[i]].Damage.ToString(), GameContent.UnitCards[ShowingCards[i]].Armor.ToString(), GameContent.UnitCards[ShowingCards[i]].AttackRadius.ToString(), GameContent.UnitCards[ShowingCards[i]].Speed.ToString(), GameContent.UnitCards[ShowingCards[i]].HP.ToString(), GameContent.UnitCards[ShowingCards[i]].Cost.ToString(), 141, 315, 4, 4, 37, true, Parent.PlayerSide, Layer: 0.001f); } Cardchoose.ShowCards(false, Cards); } var Upd = Cardchoose.Update(); if (Upd != -1) { Cardchoose.Enabled = false; //Отправить на серв данные CommandParser.SendCommandToGameServer(new string[] { "CHOOSE", Upd.ToString() }); } } } else { if (!IsMouseHandled) { if (MouseControl.X < UI_BottomLeft.Texture.Width) { if (MouseControl.Y > _CurrentScreenRes.Y - UI_BottomLeft.Texture.Height) { IsMouseHandled = true; } } else if (MouseControl.Y > _CurrentScreenRes.Y - UI_Bottom.Texture.Height) { IsMouseHandled = true; } else if (MouseControl.Y < UI_UpLeft.Texture.Height) { IsMouseHandled = true; } } var MoveUpd = Btn_Move.Update(); var AttackUpd = Btn_Attack.Update(); var EndTurnUpd = Btn_EndTurn.Update(); var StatsUpd = Btn_Stats.Update(); var ChatUpd = Btn_Chat.Update(); var GameMenuUpd = Btn_GameMenu.Update(); _ShowInf = false; if (!(map.IsPathFinding || map.IsAttack)) { Btn_EndTurn.Enabled = true; if (!map.IsPathFinding) { Btn_Attack.Enabled = true; } if (!map.IsAttack) { Btn_Move.Enabled = true; } for (var i = 0; i < hand.CardsCount; i++) { hand[i].Enabled = true; } } else { for (var i = 0; i < hand.CardsCount; i++) { hand[i].Enabled = false; } } if ((MoveUpd == ButtonStates.CLICKED || (Btn_Move.Enabled && KeyBindings.CheckKeyReleased("KEY_MOVEUNIT"))) && map.SelectedTile.X != -1) { if (map.IsPathFinding) { map.IsPathFinding = false; map.SetDefault(); map.UpdateAllTiles(cam); map.CreatePathArrows(null, cam); } else if ((map.GetTile(map.SelectedTile.X, map.SelectedTile.Y).TileContains == MapTiles.WITH_UNIT || map.GetTile(map.SelectedTile.X, map.SelectedTile.Y).TileContains == MapTiles.WITH_UNIT_AND_BUILDING) && map.GetTile(map.SelectedTile.X, map.SelectedTile.Y).UnitOnTile.side == Side.PLAYER) { Btn_Attack.Enabled = false; Btn_EndTurn.Enabled = false; map.IsPathFinding = true; map.ActionStartPoint = new Point(map.SelectedTile.X, map.SelectedTile.Y); map.HighLiteTilesWithPF(Opponent); map.UpdateAllTiles(cam); } } else if (MoveUpd == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Перемещение/ближний бой"; _ShowInf = true; } if ((AttackUpd == ButtonStates.CLICKED || (Btn_Attack.Enabled && KeyBindings.CheckKeyReleased("KEY_ATTACKUNIT"))) && map.SelectedTile.X != -1) { if (map.IsAttack) { map.IsAttack = false; map.SetDefault(); map.UpdateAllTiles(cam); map.CreatePathArrows(null, cam); } else if ((map.GetTile(map.SelectedTile.X, map.SelectedTile.Y).TileContains == MapTiles.WITH_UNIT || map.GetTile(map.SelectedTile.X, map.SelectedTile.Y).TileContains == MapTiles.WITH_UNIT_AND_BUILDING) && map.GetTile(map.SelectedTile.X, map.SelectedTile.Y).UnitOnTile.side == Side.PLAYER && map.GetTile(map.SelectedTile.X, map.SelectedTile.Y).UnitOnTile.CanAttack) { Btn_EndTurn.Enabled = false; Btn_Move.Enabled = false; map.IsAttack = true; map.ActionStartPoint = new Point(map.SelectedTile.X, map.SelectedTile.Y); map.HighLiteTilesWithEnemy(); map.UpdateAllTiles(cam); } } else if (AttackUpd == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Дальняя атака"; _ShowInf = true; } if (StatsUpd == ButtonStates.CLICKED || KeyBindings.CheckKeyReleased("KEY_STATS")) { if (map.UI_VisibleState) { map.HideUnitStats(); } else { map.ShowUnitStats(); } } else if (StatsUpd == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Скрыть/показать\n характ. юнитов"; _ShowInf = true; } if (ChatUpd == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Чат"; _ShowInf = true; } if (GameMenuUpd == ButtonStates.CLICKED) { Menu.Show(this, Parent, null); } else if (GameMenuUpd == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Игровое меню"; _ShowInf = true; } if (PlayerPoints.Update() == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Очки/Необходимо\nдля победы"; _ShowInf = true; } if (OpponentPoints.Update() == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Очки/Необходимо\nдля победы"; _ShowInf = true; } if (PlayerMoney.Update() == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Ресурсы"; _ShowInf = true; } if (RoundTime.Update() == ButtonStates.ENTERED) { Inf.Appear(); Inf.Text = "Время хода"; _ShowInf = true; } //*TEST if (EndTurnUpd == ButtonStates.CLICKED) { //if(IsEnemyTurn) // SetPlayerTurn(1); //else // SetEnemyTurn(); Parent.SetEnemyTurn(); CommandParser.SendCommandToGameServer(new string[] { "NEXTTURN" }); //DONE: Отправить на сервер команду смены хода } //*TEST if (!_ShowInf) { Inf.Disappear(); } else { Inf.Position = new Vector2(MouseControl.X + 10, MouseControl.Y); } Inf.Update(); if (map.ChoosedTileI != -1) { var tmptile = map.GetTile(map.ChoosedTileI, map.ChoosedTileJ); if (tmptile.UnitOnTile != null) { TileName.Text = tmptile.TileName + ", " + tmptile.UnitOnTile.Name; } else { TileName.Text = map.GetTile(map.ChoosedTileI, map.ChoosedTileJ).TileName; } TileName.Position = new Vector2(UI_BottomLeft.Position.X + UI_BottomLeft.Texture.Width / 2 - TileName.Font.MeasureString(TileName.Text).X / 2, UI_BottomLeft.Position.Y + 5); } } }
public Card(Vector2 Position, Texture2D Texture, Texture2D ArtTexture, Vector2 ArtOffset, int FrameSizeX, int FPS, int NotSelectedFrame, int DisabledFrame, Animation Selected, Animation Disappear, Animation Appear, Animation Choosed, int ClickedFrame, SpriteFont Font, Color TextColor, string CardName, string DamageInfo, string DefenseInfo, string AttackDistanceInfo, string MovePointsInfo, string HPInfo, string MoneyInfo, int CardName_OffsY, int Stats_OffsY, int FirstStat_OffsX, int MidStat_OffsX, int StatCellWidth, bool IsTargeted, MapZones AllowedZones = MapZones.ALL, CardCanUseOnTiles AllowedTiles = CardCanUseOnTiles.ONLY_NONE, float Layer = DefaultLayer) : base(Position, Texture, FrameSizeX, FPS, NotSelectedFrame, Selected, ClickedFrame, DisabledFrame, Layer) { _UpPosition = new Vector2(base.Position.X - FrameSize.X * 0.25f, base.Position.Y - FrameSize.Y * 0.5f); _DownPosition = new Vector2(base.Position.X, base.Position.Y); this.ArtOffset = ArtOffset; this.Stats_OffsY = Stats_OffsY; this.FirstStat_OffsX = FirstStat_OffsX; this.MidStat_OffsX = MidStat_OffsX; this.StatCellWidth = StatCellWidth; this.CardName = new BasicText(new Vector2(Position.X + (FrameSize.X - Font.MeasureString(CardName).X) / 2, Position.Y + CardName_OffsY), CardName, Font, TextColor, Layer - 0.0001f); this.CardName_OffsY = CardName_OffsY; this.DamageInfo = new BasicText(new Vector2(Position.X + FirstStat_OffsX + (StatCellWidth - Font.MeasureString(DamageInfo).X) / 2, Position.Y + Stats_OffsY), DamageInfo, Font, TextColor, Layer - 0.0001f); this.DefenseInfo = new BasicText(new Vector2(Position.X + FirstStat_OffsX + StatCellWidth + (StatCellWidth - Font.MeasureString(DefenseInfo).X) / 2, Position.Y + Stats_OffsY), DefenseInfo, Font, TextColor, Layer - 0.0001f); this.AttackDistanceInfo = new BasicText(new Vector2(Position.X + FirstStat_OffsX + MidStat_OffsX + StatCellWidth * 2 + (StatCellWidth - Font.MeasureString(AttackDistanceInfo).X) / 2, Position.Y + Stats_OffsY), AttackDistanceInfo, Font, TextColor, Layer - 0.0001f); this.MovePointsInfo = new BasicText(new Vector2(Position.X + FirstStat_OffsX + MidStat_OffsX * 2 + StatCellWidth * 3 + (StatCellWidth - Font.MeasureString(MovePointsInfo).X) / 2, Position.Y + Stats_OffsY), MovePointsInfo, Font, TextColor, Layer - 0.0001f); this.HPInfo = new BasicText(new Vector2(Position.X + FirstStat_OffsX + MidStat_OffsX * 2 + StatCellWidth * 4 + (StatCellWidth - Font.MeasureString(HPInfo).X) / 2, Position.Y + Stats_OffsY), HPInfo, Font, TextColor, Layer - 0.0001f); this.MoneyInfo = new BasicText(new Vector2(Position.X + FirstStat_OffsX + MidStat_OffsX * 2 + StatCellWidth * 4 + 1 + (StatCellWidth - Font.MeasureString(MoneyInfo).X) / 2, Position.Y + 1 + (StatCellWidth - Font.MeasureString(MoneyInfo).Y) / 2), MoneyInfo, Font, Color.Khaki, Layer - 0.0001f); Art = new BasicSprite(Position + ArtOffset, ArtTexture, Layer + 0.0005f); AddAnimation("Disappear", Disappear); AddAnimation("Appear", Appear); AddAnimation("Choosed", Choosed); LastLayer = Layer; IsDown = true; IsPressed = false; LockClicking = false; IsMoving = false; this.IsTargeted = IsTargeted; MoveSpeed = 0; UpdBtnAnims = false; this.AllowedTiles = AllowedTiles; this.AllowedZones = AllowedZones; }
public void Update(ref bool IsMouseHandled, Hand hand, Camera cam, bool IsPlayerTurn, MapZones Opponent, GameState gameState) { if (MouseControl.IsRightBtnClicked) { if (IsPathFinding) { IsPathFinding = false; SetDefault(); UpdateAllTiles(cam); CreatePathArrows(null, cam); } else if (IsAttack) { IsAttack = false; SetDefault(); UpdateAllTiles(cam); CreatePathArrows(null, cam); } else { DeSelectTile(SelectedTile); } } if (_ChoosedTileI == -1 || _ChoosedTileJ == -1) { for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { Tiles[i][j].UpdateAnims(); if (!IsMouseHandled && Tiles[i][j].Update(cam: cam) != ButtonStates.NONE) { IsMouseHandled = true; _ChoosedTileI = i; _ChoosedTileJ = j; } else { Tiles[i][j].StopAnimation(true, Tiles[i][j].NotSelectedFrame); } Tiles[i][j].UpdateUnit(this, cam); } } } } else if (Tiles[_ChoosedTileI][_ChoosedTileJ] != null) { Tiles[_ChoosedTileI][_ChoosedTileJ].UpdateAnims(); var UpdateResult = Tiles[_ChoosedTileI][_ChoosedTileJ].Update(cam: cam); if (!IsMouseHandled && UpdateResult != ButtonStates.NONE) { IsMouseHandled = true; if (UpdateResult == ButtonStates.CLICKED) { if (IsPathFinding) { IsPathFinding = false; int PL; List <Point> Marked; var Path = PathFinding(ActionStartPoint.X, ActionStartPoint.Y, _ChoosedTileI, _ChoosedTileJ, Tiles[ActionStartPoint.X][ActionStartPoint.Y].UnitOnTile.MovePointsLeft, out PL, out Marked, Opponent); if (Path != null) { var Command = new string[Path.Count + 1]; Command[0] = "MOVE"; for (var i = 1; i < Command.Length; i++) { Command[i] = Path[i - 1].X.ToString() + " " + Path[i - 1].Y.ToString(); } CommandParser.SendCommandToGameServer(Command); gameState.SetEnemyTurn(); } //UnitMove(PathFinding(ActionStartPoint.X, ActionStartPoint.Y, _ChoosedTileI, _ChoosedTileJ, Tiles[ActionStartPoint.X][ActionStartPoint.Y].UnitOnTile.MovePointsLeft, out PL, out Marked, Opponent)); SetDefault(); UpdateAllTiles(cam); CreatePathArrows(null, cam); DeSelectTile(SelectedTile); SelectTile(new Point(_ChoosedTileI, _ChoosedTileJ)); //Переместить } else if (IsAttack) { IsAttack = false; if (EnemyFinding(ActionStartPoint.X, ActionStartPoint.Y, Tiles[ActionStartPoint.X][ActionStartPoint.Y].UnitOnTile.AttackDistance).Contains(new Point(_ChoosedTileI, _ChoosedTileJ))) { //Tiles[ActionStartPoint.X][ActionStartPoint.Y].UnitOnTile.Attack(Tiles[_ChoosedTileI][_ChoosedTileJ].UnitOnTile); CommandParser.SendCommandToGameServer(new string[] { "ATTACK", ActionStartPoint.X.ToString(), ActionStartPoint.Y.ToString(), _ChoosedTileI.ToString(), _ChoosedTileJ.ToString() }); gameState.SetEnemyTurn(); } SetDefault(); UpdateAllTiles(cam); CreatePathArrows(null, cam); } else { if (SelectedTile.X != -1) { DeSelectTile(SelectedTile); } if (IsPlayerTurn) { SelectTile(new Point(_ChoosedTileI, _ChoosedTileJ)); } } } if (IsPathFinding) { int PL; List <Point> Marked; CreatePathArrows(PathFinding(ActionStartPoint.X, ActionStartPoint.Y, _ChoosedTileI, _ChoosedTileJ, Tiles[ActionStartPoint.X][ActionStartPoint.Y].UnitOnTile.MovePointsLeft, out PL, out Marked, Opponent), cam); foreach (var Til in Marked) { if (!ChangedAnimTiles.Contains(Til)) { ChangedAnimTiles.Add(Til); } } foreach (var TilCoords in Marked) { ChangeTilesAnims(2, 1, new Animation(1, 1, true), TilCoords); } } else if (IsAttack) { Attack_Radius.Visible = true; var EnFind = EnemyFinding(ActionStartPoint.X, ActionStartPoint.Y, Tiles[ActionStartPoint.X][ActionStartPoint.Y].UnitOnTile.AttackDistance); foreach (var Til in EnFind) { if (!ChangedAnimTiles.Contains(Til)) { ChangedAnimTiles.Add(Til); } } foreach (var TilCoords in EnFind) { ChangeTilesAnims(2, 1, new Animation(1, 1, true), TilCoords); } if (EnFind.Contains(new Point(_ChoosedTileI, _ChoosedTileJ))) { var TmpList = new List <Point>(); TmpList.Add(new Point(ActionStartPoint.X, ActionStartPoint.Y)); TmpList.Add(new Point(_ChoosedTileI, _ChoosedTileJ)); CreatePathArrows(TmpList, cam); } else { CreatePathArrows(null, cam); } } if (hand.ChoosedCard == -1) { Info.Appear(); Info.Position = new Vector2(MouseControl.X - Info.Texture.Width / 2, MouseControl.Y + 20); Info.NeedMovePointsText = Tiles[_ChoosedTileI][_ChoosedTileJ].MovingPointsNeeded.ToString(); Info.DefenseText = Tiles[_ChoosedTileI][_ChoosedTileJ].GiveArmor.ToString(); } } else { Info.Disappear(); Tiles[_ChoosedTileI][_ChoosedTileJ].StopAnimation(true, Tiles[_ChoosedTileI][_ChoosedTileJ].NotSelectedFrame); _ChoosedTileI = -1; _ChoosedTileJ = -1; } for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { Tiles[i][j].UpdateUnit(this, cam); } } } } Info.Update(); FlyingTextProcessor.Update(); }
public Point[] GetTilesByAllowedZones(MapZones AllowedZones, CardCanUseOnTiles AllowedTiles) { var TileList = new List <Point>(); if (AllowedZones == MapZones.ALL) { switch (AllowedTiles) { case CardCanUseOnTiles.ONLY_NONE: for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { if (Tiles[i][j].TileContains == MapTiles.NONE) { TileList.Add(new Point(i, j)); } } } } break; case CardCanUseOnTiles.ONLY_WITH_BUILDING: for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { if (Tiles[i][j].TileContains == MapTiles.WITH_BUILDING) { TileList.Add(new Point(i, j)); } } } } break; case CardCanUseOnTiles.ONLY_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { if (Tiles[i][j].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, j)); } } } } break; case CardCanUseOnTiles.WITH_BUILDING_AND_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { if (Tiles[i][j].TileContains == MapTiles.WITH_UNIT_AND_BUILDING) { TileList.Add(new Point(i, j)); } } } } break; case CardCanUseOnTiles.NONE_OR_WITH_BUILDING: for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { if (Tiles[i][j].TileContains == MapTiles.NONE || Tiles[i][j].TileContains == MapTiles.WITH_BUILDING) { TileList.Add(new Point(i, j)); } } } } break; case CardCanUseOnTiles.NONE_OR_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { if (Tiles[i][j].TileContains == MapTiles.NONE || Tiles[i][j].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, j)); } } } } break; case CardCanUseOnTiles.WITH_BUILDING_OR_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (Tiles[i][j] != null) { if (Tiles[i][j].TileContains == MapTiles.WITH_BUILDING || Tiles[i][j].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, j)); } } } } break; } } else if (AllowedZones == MapZones.LEFT) { switch (AllowedTiles) { case CardCanUseOnTiles.ONLY_NONE: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][0].TileContains == MapTiles.NONE) { TileList.Add(new Point(i, 0)); } } break; case CardCanUseOnTiles.ONLY_WITH_BUILDING: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][0].TileContains == MapTiles.WITH_BUILDING) { TileList.Add(new Point(i, 0)); } } break; case CardCanUseOnTiles.ONLY_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][0].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, 0)); } } break; case CardCanUseOnTiles.WITH_BUILDING_AND_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][0].TileContains == MapTiles.WITH_UNIT_AND_BUILDING) { TileList.Add(new Point(i, 0)); } } break; case CardCanUseOnTiles.NONE_OR_WITH_BUILDING: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][0].TileContains == MapTiles.NONE || Tiles[i][0].TileContains == MapTiles.WITH_BUILDING) { TileList.Add(new Point(i, 0)); } } break; case CardCanUseOnTiles.NONE_OR_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][0].TileContains == MapTiles.NONE || Tiles[i][0].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, 0)); } } break; case CardCanUseOnTiles.WITH_BUILDING_OR_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][0].TileContains == MapTiles.WITH_BUILDING || Tiles[i][0].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, 0)); } } break; } } else { switch (AllowedTiles) { case CardCanUseOnTiles.ONLY_NONE: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.NONE) { TileList.Add(new Point(i, Tiles[0].Length - 1)); } } break; case CardCanUseOnTiles.ONLY_WITH_BUILDING: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.WITH_BUILDING) { TileList.Add(new Point(i, Tiles[0].Length - 1)); } } break; case CardCanUseOnTiles.ONLY_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, Tiles[0].Length - 1)); } } break; case CardCanUseOnTiles.WITH_BUILDING_AND_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.WITH_UNIT_AND_BUILDING) { TileList.Add(new Point(i, Tiles[0].Length - 1)); } } break; case CardCanUseOnTiles.NONE_OR_WITH_BUILDING: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.NONE || Tiles[Tiles[0].Length - 1][i].TileContains == MapTiles.WITH_BUILDING) { TileList.Add(new Point(i, Tiles[0].Length - 1)); } } break; case CardCanUseOnTiles.NONE_OR_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.NONE || Tiles[Tiles[0].Length - 1][i].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, Tiles[0].Length - 1)); } } break; case CardCanUseOnTiles.WITH_BUILDING_OR_WITH_UNIT: for (var i = 0; i < Tiles.Length; i++) { if (Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.WITH_BUILDING || Tiles[i][Tiles[0].Length - 1].TileContains == MapTiles.WITH_UNIT) { TileList.Add(new Point(i, Tiles[0].Length - 1)); } } break; } } if (ChangedAnimTiles.Count > 0) { SetDefault(); } ChangedAnimTiles = new List <Point>(TileList); return(TileList.ToArray()); }
private List <Point> GetSmez(Point vers, bool isfirst, MapZones Opponent) { var list = new List <Point>(); if (!isfirst && Tiles[vers.X][vers.Y].UnitOnTile != null) { return(list); } if (vers.X - 1 >= 0) { if (Tiles[vers.X - 1][vers.Y] != null) { list.Add(new Point(vers.X - 1, vers.Y)); } } if (vers.X + 1 < Tiles.Length) { if (Tiles[vers.X + 1][vers.Y] != null) { list.Add(new Point(vers.X + 1, vers.Y)); } } if (vers.Y % 2 == 0) { if (vers.Y + 1 < Tiles[0].Length) { if (!(Opponent == MapZones.RIGHT && vers.Y + 1 == Tiles[0].Length - 1)) { if (Tiles[vers.X][vers.Y + 1] != null) { list.Add(new Point(vers.X, vers.Y + 1)); } if (vers.X - 1 >= 0) { if (Tiles[vers.X - 1][vers.Y + 1] != null) { list.Add(new Point(vers.X - 1, vers.Y + 1)); } } } } if (vers.Y - 1 >= 0) { if (!(Opponent == MapZones.LEFT && vers.Y - 1 == 0)) { if (Tiles[vers.X][vers.Y - 1] != null) { list.Add(new Point(vers.X, vers.Y - 1)); } if (vers.X - 1 >= 0) { if (Tiles[vers.X - 1][vers.Y - 1] != null) { list.Add(new Point(vers.X - 1, vers.Y - 1)); } } } } } else { if (vers.Y + 1 < Tiles[0].Length) { if (!(Opponent == MapZones.RIGHT && vers.Y + 1 == Tiles[0].Length - 1)) { if (Tiles[vers.X][vers.Y + 1] != null) { list.Add(new Point(vers.X, vers.Y + 1)); } if (vers.X + 1 < Tiles.Length) { if (Tiles[vers.X + 1][vers.Y + 1] != null) { list.Add(new Point(vers.X + 1, vers.Y + 1)); } } } } if (vers.Y - 1 >= 0) { if (!(Opponent == MapZones.LEFT && vers.Y - 1 == 0)) { if (Tiles[vers.X][vers.Y - 1] != null) { list.Add(new Point(vers.X, vers.Y - 1)); } if (vers.X + 1 < Tiles.Length) { if (Tiles[vers.X + 1][vers.Y - 1] != null) { list.Add(new Point(vers.X + 1, vers.Y - 1)); } } } } } return(list); }
public List <Point> PathFinding(int starti, int startj, int stopi, int stopj, int MovePoints, out int PathLength, out List <Point> Marked, MapZones Opponent) { var dlini = new double[Tiles.Length, Tiles[0].Length]; var puti = new List <Point> [Tiles.Length, Tiles[0].Length]; var marked = new List <Point>(); for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { dlini[i, j] = double.PositiveInfinity; } } var used = new HashSet <Point>(); var needuse = new HashSet <Point>(); var first = true; dlini[starti, startj] = 0; puti[starti, startj] = new List <Point> { new Point(starti, startj) }; needuse.Add(new Point(starti, startj)); while (needuse.Count > 0) { var min = double.PositiveInfinity; Point v = new Point(-1, -1); for (var i = 0; i < Tiles.Length; i++) { for (var j = 0; j < Tiles[0].Length; j++) { if (!used.Contains(new Point(i, j)) && dlini[i, j] < min) { min = dlini[i, j]; v = new Point(i, j); } } } if (v.X == -1) { break; } used.Add(v); needuse.Remove(v); foreach (var rebro in GetSmez(v, first, Opponent)) { if (!used.Contains(rebro)) { if (Tiles[rebro.X][rebro.Y].UnitOnTile != null) //&& Tiles[rebro.X][rebro.Y].UnitOnTile.side == Side.PLAYER) { continue; } if (dlini[v.X, v.Y] + Tiles[rebro.X][rebro.Y].MovingPointsNeeded < dlini[rebro.X, rebro.Y] && dlini[v.X, v.Y] + Tiles[rebro.X][rebro.Y].MovingPointsNeeded <= MovePoints) { marked.Add(new Point(rebro.X, rebro.Y)); dlini[rebro.X, rebro.Y] = dlini[v.X, v.Y] + Tiles[rebro.X][rebro.Y].MovingPointsNeeded; puti[rebro.X, rebro.Y] = new List <Point>(puti[v.X, v.Y]) { new Point(rebro.X, rebro.Y) }; needuse.Add(rebro); } } } first = false; } PathLength = (int)dlini[stopi, stopj]; Marked = marked; return(puti[stopi, stopj]); }
public GameState(NetworkInterface NI, Game1 Parent, int ScreenWidth, int ScreenHeight, GraphicsDevice gr_Device) { this.Parent = Parent; this.NI = NI; gr_Dev = gr_Device; int[][] mass = null; while (true) { var msg = NI.GetNextMsg(); if (msg != null) { var masss = (mass as object); Serialization.DeSerialize(msg, ref masss, typeof(int[][])); mass = masss as int[][]; break; } } var CP = new List <Point>(); while (true) { var msg = NI.GetNextMsg(); if (msg != null) { string[] str; var masss = (mass as object); Serialization.DeSerialize(msg, ref masss, typeof(string[])); str = masss as string[]; foreach (var point in str) { var split = point.Split(' '); CP.Add(new Point(Convert.ToInt32(split[0]), Convert.ToInt32(split[1]))); } break; } } Log.SendMessage("Ожидание команды начала игры"); var player1_name = ""; var player2_name = ""; var player_money = ""; var player1_icon = 0; var player2_icon = 0; string[] tmpmsg = null; int[] Cards = null; while (true) { var msg = NI.GetNextMsg(); if (msg != null) { var masss = (tmpmsg as object); Serialization.DeSerialize(msg, ref masss, typeof(string[])); tmpmsg = masss as string[]; player1_name = tmpmsg[0]; player2_name = tmpmsg[1]; player_money = tmpmsg[2]; PlayerSide = (tmpmsg[3] == "RIGHT") ? MapZones.RIGHT : MapZones.LEFT; OpponentSide = (PlayerSide == MapZones.LEFT) ? MapZones.RIGHT : MapZones.LEFT; player1_icon = Convert.ToInt32(tmpmsg[4]); player2_icon = Convert.ToInt32(tmpmsg[5]); Cards = new int[tmpmsg.Length - 6]; for (var i = 6; i < tmpmsg.Length; i++) { Cards[i - 6] = Convert.ToInt32(tmpmsg[i]); } break; } } watch = new Stopwatch();//ДЫБГ var MapArr = new Tile[8][]; var Rnd = new Random(); for (var i = 0; i < 8; i++) { MapArr[i] = new Tile[15]; for (var j = 0; j < 15; j++) { if (j % 2 == 0) { MapArr[i][j] = new Tile(new Vector2(j * 294, i * 339), GameContent.TileBorder, GameContent.TileBorder_HL, GameContent.TileTypes[mass[i][j]].Tile_Decoration, 392, 20, 0, new Animation(1, 1, true), 1, GameContent.TileTypes[mass[i][j]].SpeedNeeded, GameContent.TileTypes[mass[i][j]].Armor, GameContent.TileTypes[mass[i][j]].Name, LAYER_MAP); } else if (i != MapArr.GetLength(0) - 1) { MapArr[i][j] = new Tile(new Vector2(j * 294, i * 339 + 169.5f), GameContent.TileBorder, GameContent.TileBorder_HL, GameContent.TileTypes[mass[i][j]].Tile_Decoration, 392, 20, 0, new Animation(1, 1, true), 1, GameContent.TileTypes[mass[i][j]].SpeedNeeded, GameContent.TileTypes[mass[i][j]].Armor, GameContent.TileTypes[mass[i][j]].Name, LAYER_MAP); } else { MapArr[i][j] = null; } } } Map = new Map(MapArr, 0, 1, new Animation(1, 1, true), GameContent.ArrowSegment, GameContent.ArrowEnd, GameContent.UI_TileInfo, GameContent.Tile_ControlPoint_Neutral, GameContent.Tile_ControlPoint_Allied, GameContent.Tile_ControlPoint_Enemy, GameContent.Unit_AttackRadius, GameContent.UI_InfoFont, Color.White, CP.ToArray()); //foreach (var Til in Map) // if (Til != null) // { // Til.Scale = new Vector2(2, 2); // Til.Position = new Vector2(Til.Position.X * Til.Scale.X, Til.Position.Y * Til.Scale.Y); // } char a = Convert.ToChar(12); //var Arr = new Card[10]; //Arr[0] = new Card(new Vector2(100, 300), Content.Load<Texture2D>(@"Textures\Card"), Content.Load<Texture2D>(@"Textures\Tiger"), new Vector2(16, 9), 200, 10, 0, 13, new Animation(0, 0, true), new Animation(2, 6, false), new Animation(7, 9, false), new Animation(1, 1, true), 0, Content.Load<SpriteFont>(@"Fonts\TileInfoFont"), Color.White, "Pz. VI H \"Tiger\"", "3", "1", "5", "5", "6", 141, 315, 4, 4, 37, false, Layer: LAYER_CARDS) //{ // Scale = new Vector2(0.5f, 0.5f) //}; //for (var i = 1; i < Arr.Length; i++) //{ // Arr[i] = new Card(new Vector2(100 + i * 60, 300), Content.Load<Texture2D>(@"Textures\Card"), Content.Load<Texture2D>(@"Textures\Tiger"), new Vector2(16, 9), 200, 10, 0, 13, new Animation(0, 0, true), new Animation(2, 6, false), new Animation(7, 12, false), new Animation(1, 1, true), 0, Content.Load<SpriteFont>(@"Fonts\TileInfoFont"), Color.White, "Pz. VI H \"Tiger\"", "3", "1", "5", "5", "6", 141, 315, 4, 4, 37, true, Layer: LAYER_CARDS + 0.001f * i) // { // Scale = new Vector2(0.5f, 0.5f), // AllowedZones = MapZones.RIGHT // }; //} Hand = new Hand(new Vector2(ScreenWidth / 2, ScreenHeight - 175), null, new Vector2(ScreenWidth, ScreenHeight), GameContent.ArrowSegment, GameContent.ArrowEnd, LAYER_CARDS); UI = new MainUI ( new Vector2(ScreenWidth, ScreenHeight), GameContent.UI_Main_Bottom, GameContent.UI_Main_Bottom_Left, GameContent.UI_Main_Up, GameContent.UI_Main_Up_Left, GameContent.UI_Main_Up_Right, GameContent.UI_Btn_NewTurn, GameContent.UI_Btn_Move, GameContent.UI_Btn_Attack, GameContent.UI_Btn_Menu, GameContent.UI_Btn_Chat, GameContent.UI_Btn_Stats, GameContent.UI_Player_Icons[player1_icon], GameContent.UI_Player_Icons[player2_icon], GameContent.UI_Flag_Player, GameContent.UI_Flag_Enemy, GameContent.UI_Money, GameContent.UI_HourGlass, GameContent.UI_Vs, GameContent.UI_AlliedPoint, GameContent.UI_EnemyPoint, GameContent.UI_NeutralPoint, GameContent.UI_EnemyTurn, GameContent.UI_VictoryImage, GameContent.UI_LoseImage, GameContent.UI_ButtonFont, GameContent.UI_MiniFont, GameContent.UI_NewTurnFont, gr_Device, this, player1_name, player2_name, 0, 1, 0, 1, 50, Convert.ToInt32(player_money), 1, "1:30", new string[] { "A", "B", "C" }, Cards, (Cards.Length == 3) ? true : false, LAYER_UI_FAR); // TODO: use this.Content to load your game content here cam = new Camera(new Vector2(ScreenWidth, ScreenHeight)); cam.Zoom = 0.25f; laststate = 0; KeyBindings.Init(); KeyBindings.RegisterKeyBind("KEY_MOVEUNIT", Keys.M); KeyBindings.RegisterKeyBind("KEY_ATTACKUNIT", Keys.F); KeyBindings.RegisterKeyBind("KEY_STATS", Keys.T); KeyBindings.RegisterKeyBind("KEY_CAMMOVE_UP", Keys.W); KeyBindings.RegisterKeyBind("KEY_CAMMOVE_DOWN", Keys.S); KeyBindings.RegisterKeyBind("KEY_CAMMOVE_LEFT", Keys.A); KeyBindings.RegisterKeyBind("KEY_CAMMOVE_RIGHT", Keys.D); UnitAttEngine = new Script("", "GameCursachProject", false); //TEST //Map.GetTile(4, 6).SpawnUnit(new Unit(Vector2.Zero, GameContent.UnitTextures[0], GameContent.UI_Info_Enemy, GameContent.UI_InfoFont, Color.White, 392, 20, 5, 3, 6, 1, 2, Side.OPPONENT, GameContent.UnitAttackScripts[0], UnitAttEngine, new Point(4, 6), new Animation(8, 17, false), 0.4f), MapZones.RIGHT, Map.UI_VisibleState); //TEST SetEnemyTurn(); }