private void GenerateArmySideType(int side, int army_type, int qty) { var rnd = new Random(); while (qty > 0) { var pos = new PosXY(); if (side == (int)FriendFoeKind.friend) { pos.PosX = rnd.Next(0, glb_settings.get_map_dim_parameter_x() / 2 - 5); pos.PosY = rnd.Next(0, glb_settings.get_map_dim_parameter_y()); } else { pos.PosX = rnd.Next(glb_settings.get_map_dim_parameter_x() / 2 + 5, glb_settings.get_map_dim_parameter_x()); pos.PosY = rnd.Next(0, glb_settings.get_map_dim_parameter_y()); } if (!IsArmy[pos.PosX, pos.PosY]) //empty slot { if (MapTerrain[pos.PosX, pos.PosY] == (int)TerrainKind.grass || MapTerrain[pos.PosX, pos.PosY] == (int)TerrainKind.city) //not on roads or water { var army = new Army(side, army_type); //create unit ArmyUnits.Add(pos, army); //mark on the map IsArmy[pos.PosX, pos.PosY] = true; qty--; } } } }
private void RefreshInfoPaneXY(MouseEventArgs e) { //get current mouse position in map grid values var TempPositionXY = new PosXY(); TempPositionXY = Terra.GetPositionXY(e.X, e.Y); if (CurrentPositionXY != TempPositionXY) { if ((TempPositionXY.PosX != GlobalParameters.OutOfRange) && (TempPositionXY.PosY != GlobalParameters.OutOfRange)) { CurrentPositionXY = TempPositionXY; textBox1.Text = Convert.ToString(Convert.ToInt32(CurrentPositionXY.PosX)); labely.Text = Convert.ToString(Convert.ToInt32(CurrentPositionXY.PosY)); //friend foe label lblFriendFoe.Text = Terra.GetLabelsFriendFoe(Terra.FriendFoe[CurrentPositionXY.PosX, CurrentPositionXY.PosY]); if (Terra.FriendFoe[CurrentPositionXY.PosX, CurrentPositionXY.PosY] == (int)FriendFoeKind.friend) { lblFriendFoe.ForeColor = Color.Green; } else { lblFriendFoe.ForeColor = Color.Red; } //population label var i = Terra.Population[CurrentPositionXY.PosX, CurrentPositionXY.PosY]; var str = i.ToString("# ### ### ###"); lbl_population.Text = str; //army label if (Terra.IsArmy[CurrentPositionXY.PosX, CurrentPositionXY.PosY]) //if there is XY army on the map { var army_type = Convert.ToString(Terra.ArmyUnits[CurrentPositionXY].ArmyType); string fun = GlobalParameters.ArmyTypeLabels[Convert.ToInt32(army_type) - 1]; lbl_army_type.Text = fun; } else { //army label lbl_army_type.Text = ""; } } else { //temporary debugging 45 textBox1.Text = Convert.ToString(999); //friend foe label lblFriendFoe.Text = ""; //population label lbl_population.Text = ""; } } }
public override void DrawArmy(Terrain Terra) { var pos = new PosXY(); foreach (var item in Terra.ArmyUnits) { pos = item.Key; DrawArmyXY(pos, Terra); } }
//locate current position on a map grid, return false if out of the map public override PosXY GetPositionXY(int x, int y) { var result = new PosXY(); if ((x >= 0) && (y >= 0) && (x < glb_settings.get_map_dim_parameter_x() * glb_settings.get_map_box_size()) && (y < glb_settings.get_map_dim_parameter_y() * glb_settings.get_map_box_size())) { result.PosX = x / glb_settings.get_map_box_size(); result.PosY = y / glb_settings.get_map_box_size(); } return(result); }
//army elements public abstract void DrawArmyXY(PosXY pos, Terrain Terra);
public override void DrawArmyXY(PosXY pos, Terrain terra) { //set color var c = Color.White; if (terra.FriendFoe[pos.PosX, pos.PosY] != (int)FriendFoeKind.friend) { c = Color.Orange; } var pen = new System.Drawing.Pen(c); var x = pos.PosX * glb_settings.get_map_box_size(); var y = pos.PosY * glb_settings.get_map_box_size(); var army_type = terra.ArmyUnits[pos]; switch ((int)army_type.ArmyType) { case (int)ArmyType.light_infantry: //infantry light DrawInfantry(pen, x, y); break; case (int)ArmyType.heavy_infantry: //infantry heavy DrawInfantry(pen, x, y); break; case (int)ArmyType.light_cavalry: //cavalry light DrawCavalry(pen, x, y); break; case (int)ArmyType.heavy_cavalry: //cavalry light DrawCavalry(pen, x, y); break; case (int)ArmyType.light_artillery: //cavalry light DrawArtillery(pen, x, y); break; case (int)ArmyType.heavy_artillery: //cavalry light DrawArtillery(pen, x, y); break; case (int)ArmyType.logistic: //cavalry light DrawLogistic(pen, x, y); break; case (int)ArmyType.recruitment: //cavalry light DrawRecruitment(pen, x, y); break; default: break; } //heavy bars added if ((int)army_type.ArmyType == (int)ArmyType.heavy_infantry || (int)army_type.ArmyType == (int)ArmyType.heavy_cavalry || (int)army_type.ArmyType == (int)ArmyType.heavy_artillery) { graph.DrawLine(pen, x + 2, y + 2, x + 10, y + 2); } }