Exemplo n.º 1
0
 public Hexagon(Vector3 position, Vector2 indexNumber, Vector2[] neighbors, Logic.Vars_Func.HexTyp typ)
 {
     imps                = new List <Imp>();
     this.position       = position;
     this.indexNumber    = indexNumber;
     this.neighbors      = neighbors;
     this.typ            = typ;
     drawColor           = Color.White;
     building            = false;
     roomNumber          = 0;
     parent              = indexNumber;
     boneTransforms      = new Matrix[Logic.Vars_Func.getHexagonModell(typ).Model.Bones.Count];
     currentDrawPosition = Vector3.Zero;
     isEnlightend        = false;
     isStartLight        = false;
     isEntrance          = false;
     isHQ                = false;
     lightPower          = 0;
     fireModels          = new FireModel[3];
     randomValue         = new Random();
     growObject          = Logic.Vars_Func.GrowObject.length;
     targetFlag          = false;
     fireBalls           = new List <FireBallModel>();
 }
Exemplo n.º 2
0
        public Map(int sidelength, Logic.Vars_Func.HexTyp typ, Boolean newGame, float hexagonSideLength)
        {
            map            = new Hexagon[sidelength * sidelength];
            rooms          = new List <Room>();
            nests          = new List <Nest>();
            temples        = new List <Nest>();
            farms          = new List <Nest>();
            entrances      = new List <Nest>();
            creatures      = new List <Creature>();
            heroes         = new List <Creature>();
            impList        = new List <Imp>();
            jobsWaiting    = new Queue <Job>();
            jobsInProgress = new List <Job>();
            jobsDone       = new List <Job>();
            mineJobs       = new List <Vector2>();
            fires          = new List <FireModel>();
            dyingCreatures = new List <Creature>();
            waves          = new List <Wave>();
            endedWaves     = new List <Wave>();
            fireBalls      = new List <FireBallModel>();

            hqPosition = new Vector2();
            //drawHeight = 2; //how many hexagons are drawn up and down of the middle (+1)
            //drawWidth = 5; //how many hexagons are drawn left and right of the middle (+1)
            this.hexagonSideLength = hexagonSideLength;
            if (newGame)
            {
                Vector2 indexNumber = new Vector2(0, 0);
                this.planeSidelength = sidelength;
                //creates a map with proportions sidelength * sidelength
                for (int i = 0; i < sidelength; ++i)
                {
                    for (int j = 0; j < sidelength; ++j)
                    {
                        Vector2[] neighbors = new Vector2[6];
                        //neighbor indices for i even
                        if (i % 2 == 0)
                        {
                            float xValue     = (indexNumber.X - 1 + sidelength) % sidelength;
                            float yUpValue   = (indexNumber.Y + 1) % sidelength;
                            float yDownValue = (indexNumber.Y - 1 + sidelength) % sidelength;

                            neighbors[0] = new Vector2(indexNumber.X, yUpValue);
                            neighbors[1] = new Vector2(indexNumber.X + 1, indexNumber.Y);
                            neighbors[2] = new Vector2(indexNumber.X + 1, yDownValue);
                            neighbors[3] = new Vector2(indexNumber.X, yDownValue);
                            neighbors[4] = new Vector2(xValue, yDownValue);
                            neighbors[5] = new Vector2(xValue, indexNumber.Y);
                            map[(int)(indexNumber.X * sidelength + indexNumber.Y)] = new Hexagon(new Vector3(i * 3 / 2 * hexagonSideLength + hexagonSideLength * 1.5f, j * 2 * hexagonSideLength * 7 / 8 + hexagonSideLength * 7 / 8, 0), indexNumber, neighbors, typ);
                        }
                        //neighbor indices for i uneven
                        else
                        {
                            float xValue     = (indexNumber.X + 1) % sidelength;
                            float yUpValue   = (indexNumber.Y + 1) % sidelength;
                            float yDownValue = (indexNumber.Y - 1 + sidelength) % sidelength;

                            neighbors[0] = new Vector2(indexNumber.X, yUpValue);
                            neighbors[1] = new Vector2(xValue, yUpValue);
                            neighbors[2] = new Vector2(xValue, indexNumber.Y);
                            neighbors[3] = new Vector2(indexNumber.X, yDownValue);
                            neighbors[4] = new Vector2(indexNumber.X - 1, indexNumber.Y);
                            neighbors[5] = new Vector2(indexNumber.X - 1, yUpValue);
                            map[(int)(indexNumber.X * sidelength + indexNumber.Y)] = new Hexagon(new Vector3(i * 3 / 2 * hexagonSideLength + hexagonSideLength * 1.5f, j * 2 * hexagonSideLength * 7 / 8 + hexagonSideLength * 7 / 8 * 2, 0), indexNumber, neighbors, typ);
                        }

                        ++indexNumber.Y;
                        ;
                    }
                    indexNumber.Y = 0;
                    ++indexNumber.X;
                }
            }
            else
            {
                // insert the savegame here.
                //load(null);
            }
        }