Example #1
0
        public Nest(Vars_Func.NestTyp typ, Vector2 position, Environment.Map map, Vector2 targetPosition)
        {
            nextUpgradeCost = 100;
            Environment.Hexagon hex = map.getHexagonAt(position);
            if (typ != Vars_Func.NestTyp.Entrance)
            {
                map.Rooms.ElementAt(map.getHexagonAt(position).RoomNumber - 1).NestType   = typ;
                map.Rooms.ElementAt(map.getHexagonAt(position).RoomNumber - 1).RoomObject = this;
            }
            possibleNextNestHexagons = new List <Vector2>();
            nestHexagons             = new List <Vector2>();
            nestHexagons.Add(position);
            switch (typ)
            {
            case Vars_Func.NestTyp.Entrance:
                hex.Building = true;
                hex.Nest     = true;
                map.Entrances.Add(this);
                hex.IsEntrance = true;
                hex.EnlightendHexagon(map);
                map.Light = Vars_Func.getEntranceRayModel();
                thingTyp  = Vars_Func.ThingTyp.Nest;
                break;

            case Vars_Func.NestTyp.Beetle:
                hex.Typ      = Vars_Func.HexTyp.BeetleNest;
                hex.Building = true;
                hex.Nest     = true;
                getsFeeded   = false;
                maxNutrition = 500f;
                nutrition    = 0f;
                upgrades     = new List <Upgrade>();
                thingTyp     = Vars_Func.ThingTyp.Nest;

                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    nestHexagons.Add(neighbor);
                    map.getHexagonAt(neighbor).Typ      = Vars_Func.HexTyp.BeetleNest;
                    map.getHexagonAt(neighbor).Building = true;
                    map.getHexagonAt(neighbor).Nest     = true;
                }
                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    for (int j = 0; j < 6; ++j)
                    {
                        Vector2 nextNeighbor = map.getHexagonAt(neighbor).Neighbors[j];
                        if (!map.getHexagonAt(nextNeighbor).Nest&&
                            map.getHexagonAt(nextNeighbor).RoomNumber == map.getHexagonAt(neighbor).RoomNumber&&
                            !possibleNextNestHexagons.Contains(nextNeighbor))
                        {
                            possibleNextNestHexagons.Add(nextNeighbor);
                        }
                    }
                }
                map.Nests.Add(this);
                break;

            case Vars_Func.NestTyp.Skeleton:
                hex.Typ      = Vars_Func.HexTyp.Graveyard;
                hex.Building = true;
                hex.Nest     = true;
                getsFeeded   = false;
                maxNutrition = 500f;
                nutrition    = 0f;
                upgrades     = new List <Upgrade>();
                thingTyp     = Vars_Func.ThingTyp.Nest;

                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    nestHexagons.Add(neighbor);
                    map.getHexagonAt(neighbor).Typ        = Vars_Func.HexTyp.Graveyard;
                    map.getHexagonAt(neighbor).Building   = true;
                    map.getHexagonAt(neighbor).Nest       = true;
                    map.getHexagonAt(neighbor).GrowObject = Vars_Func.GrowObject.Graveyard;
                }
                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    for (int j = 0; j < 6; ++j)
                    {
                        Vector2 nextNeighbor = map.getHexagonAt(neighbor).Neighbors[j];
                        if (!map.getHexagonAt(nextNeighbor).Nest&&
                            map.getHexagonAt(nextNeighbor).RoomNumber == map.getHexagonAt(neighbor).RoomNumber&&
                            !possibleNextNestHexagons.Contains(nextNeighbor))
                        {
                            possibleNextNestHexagons.Add(nextNeighbor);
                        }
                    }
                }
                map.Nests.Add(this);
                break;

            case Vars_Func.NestTyp.Farm:
                hex.Typ       = Vars_Func.HexTyp.Farm;
                hex.Building  = true;
                hex.Nest      = true;
                nutrition     = 1;
                maxNutrition  = 1;
                thingTyp      = Vars_Func.ThingTyp.Nest;
                food          = 0;
                getsHarvested = false;
                foodCounter   = 0;

                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    nestHexagons.Add(neighbor);
                    map.getHexagonAt(neighbor).Typ        = Vars_Func.HexTyp.Farm;
                    map.getHexagonAt(neighbor).Building   = true;
                    map.getHexagonAt(neighbor).Nest       = true;
                    map.getHexagonAt(neighbor).GrowObject = Vars_Func.GrowObject.Farm;
                }
                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    for (int j = 0; j < 6; ++j)
                    {
                        Vector2 nextNeighbor = map.getHexagonAt(neighbor).Neighbors[j];
                        if (!map.getHexagonAt(nextNeighbor).Nest&&
                            map.getHexagonAt(nextNeighbor).RoomNumber == map.getHexagonAt(neighbor).RoomNumber&&
                            !possibleNextNestHexagons.Contains(nextNeighbor))
                        {
                            possibleNextNestHexagons.Add(nextNeighbor);
                        }
                    }
                }
                map.Farms.Add(this);
                break;

            case Vars_Func.NestTyp.Temple:
                hex.Typ      = Vars_Func.HexTyp.Temple;
                hex.Building = true;
                hex.Nest     = true;
                nutrition    = 1;
                maxNutrition = 1;
                thingTyp     = Vars_Func.ThingTyp.Nest;
                foodCounter  = 0;

                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    nestHexagons.Add(neighbor);
                    map.getHexagonAt(neighbor).Typ        = Vars_Func.HexTyp.Temple;
                    map.getHexagonAt(neighbor).Building   = true;
                    map.getHexagonAt(neighbor).Nest       = true;
                    map.getHexagonAt(neighbor).GrowObject = Vars_Func.GrowObject.Temple;
                }
                for (int i = 0; i < 6; ++i)
                {
                    Vector2 neighbor = hex.Neighbors[i];
                    for (int j = 0; j < 6; ++j)
                    {
                        Vector2 nextNeighbor = map.getHexagonAt(neighbor).Neighbors[j];
                        if (!map.getHexagonAt(nextNeighbor).Nest&&
                            map.getHexagonAt(nextNeighbor).RoomNumber == map.getHexagonAt(neighbor).RoomNumber&&
                            !possibleNextNestHexagons.Contains(nextNeighbor))
                        {
                            possibleNextNestHexagons.Add(nextNeighbor);
                        }
                    }
                }
                map.Temples.Add(this);
                break;
            }
            this.typ            = typ;
            this.position       = position;
            this.targetPosition = targetPosition;
            hex.Obj             = this;
        }