Exemple #1
0
        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--;
                    }
                }
            }
        }
Exemple #2
0
        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 = "";
                }
            }
        }
Exemple #3
0
        public override void DrawArmy(Terrain Terra)
        {
            var pos = new PosXY();

            foreach (var item in Terra.ArmyUnits)
            {
                pos = item.Key;
                DrawArmyXY(pos, Terra);
            }
        }
Exemple #4
0
        //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);
        }
Exemple #5
0
 //army elements
 public abstract void DrawArmyXY(PosXY pos, Terrain Terra);
Exemple #6
0
        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);
            }
        }