private ETerrain[,] ReadTerrainFile() { string TerrainFilePath = @"C:\Users\thalesaguiar\Documents\Dev\C#\ROM\terrains.txt"; ETerrain[,] auxTerrains = new ETerrain[BoardConsts.MAX_LIN, BoardConsts.MAX_COL]; int lin = 0; int col = 0; string line; Array terrains = Enum.GetValues(typeof(ETerrain)); FileStream fStream = new FileStream(TerrainFilePath, FileMode.Open, FileAccess.Read); StreamReader file = new StreamReader(fStream); while ((line = file.ReadLine()) != null) { string[] cells = line.Split(' '); foreach (string cell in cells) { cell.Trim(); int type = int.Parse(cell); auxTerrains[lin, col] = (ETerrain)terrains.GetValue(type); col++; } lin++; col = 0; } file.Close(); return(auxTerrains); }
public override void UnAdapt(ETerrain terrain) { switch (terrain) { case ETerrain.MOUNTAIN: MovePoints += 1; break; case ETerrain.PLAIN: break; case ETerrain.RIVER: Atk -= 1; break; case ETerrain.FIELD: Def -= 1; break; case ETerrain.MARSH: Def -= 1; break; case ETerrain.FOREST: MovePoints -= 1; break; case ETerrain.DESERT: MovePoints += 2; break; default: throw new InvalidOperationException("Could not unadapat for " + terrain); } }
public void SetTerrainAt(Coord pos, ETerrain value) { if (Coord.IsValid(pos)) { Terrains[pos.X, pos.Y] = value; } }
public void IncreasePawnsAt(ETerrain terrain) { if (PPTs.ContainsKey(terrain)) { PPTs[terrain] += 1; } }
public static string Convert(this ETerrain terrain) { switch (terrain) { case ETerrain.MOUNTAIN: return("MOUNTAIN"); case ETerrain.PLAIN: return("PLAIN"); case ETerrain.RIVER: return("RIVER"); case ETerrain.FIELD: return("FIELD"); case ETerrain.MARSH: return("MARSH"); case ETerrain.FOREST: return("FOREST"); case ETerrain.DESERT: return("DESERT"); } return("ERROR"); }
public override double Value() { double total = 1; if (Coord.Distance(Target, Oponent.GetCultCenter().Position) < Coord.Distance(AllyPos, Oponent.GetCultCenter().Position)) { total += 2 * (1 + 1.0 / Coord.Distance(AllyPos, Oponent.GetCultCenter().Position)); } ETerrain terrainAtTarget = Boards.TerrainAt(Target); foreach (ETerrain terrain in CurPlayer.GetPawnAt(AllyPos).PositiveTerrains) { if (terrainAtTarget == terrain) { total += 1; break; } } foreach (ABasicPawn enemy in Oponent.GetAttackers()) { if (Coord.Distance(enemy.Position, CurPlayer.GetCultCenter().Position) < BoardConsts.MAX_COL / 2 && Coord.Distance(Target, enemy.Position) < Coord.Distance(AllyPos, enemy.Position)) { total += 3.0 * (1 + 1.0 / Coord.Distance(AllyPos, enemy.Position)); } } return(total); }
public DalrionPawn() { PositiveTerrains = new ETerrain[] { ETerrain.MOUNTAIN, ETerrain.MARSH, ETerrain.DESERT }; BOARD_CHAR = BoardConsts.DALRION_PAWN; CurrLife = 23; TotalLife = 23; Culture = ECultures.DALRIONS; Def = 5; Position = new Coord(0, 0); Size = 1; Atk = 9; AtkRange = 5; MovePoints = 5; }
public void SetNumOfPawnsAt(ETerrain terrain, int numOfPawns) { if (numOfPawns > 0) { if (PPTs.ContainsKey(terrain)) { PPTs[terrain] = numOfPawns; } else { PPTs.Add(terrain, numOfPawns); } } }
public RahkarPawn() { PositiveTerrains = new ETerrain[] { ETerrain.MOUNTAIN, ETerrain.RIVER, ETerrain.MARSH }; BOARD_CHAR = BoardConsts.RAHKAR_PAWN; TotalLife = 14; CurrLife = 14; Culture = ECultures.RAHKARS; Def = 7; Position = new Coord(0, 0); Size = 1; Atk = 8; AtkRange = 7; MovePoints = 5; }
public void Adapt(ETerrain prev, ETerrain actual) { UnAdapt(prev); ReAdapt(actual); }
public abstract void ReAdapt(ETerrain terrain);