Example #1
0
        private EntityFactory(GameSession.GameSession RunningGameSession, LODTerrain.LODTerrain map, Matrix projectionMatrix)
        {
            this.projectionMatrix = projectionMatrix;

            this.LODMap    = map;
            this.buildings = new List <EntityBuilding>();
            this.Movers    = new List <Entity>();

            this.RunningGameSession = RunningGameSession;
        }
Example #2
0
        public bool PlaceBuilding(LODTerrain.LODTerrain map, bool flattening)
        //public bool PlaceBuilding(WorldMap map, bool flattening)
        {
            bool res = PlaceBuilding(map, (int)this.location.X, (int)this.location.Z, flattening);

            if (flattening)
            {
                statusBillboard.loadTexture(this.RunningGameSession.Content.Load <Texture2D>("GUI\\Bilboard"), this.location);
                statusBillboard.offset = surroundingCicle;
                statusBillboard.Show   = true;
            }
            this.Reset();
            return(res);
        }
Example #3
0
        public bool PlaceBuilding(LODTerrain.LODTerrain map, int x, int y, bool flattening)
        //public bool PlaceBuilding(WorldMap map, int x, int y, bool flattening)
        {
            this.location = new Vector3(x, 12, y);
            BoundingBox bbox = this.UpdateBoundingBox();



            float MinX = float.MaxValue;
            float MaxX = float.MinValue;
            float MinZ = float.MaxValue;
            float MaxZ = float.MinValue;

            float Y = float.MaxValue;

            foreach (Vector3 v in corners)
            {
                if (v.X < MinX)
                {
                    MinX = v.X;
                }
                if (v.X > MaxX)
                {
                    MaxX = v.X;
                }

                if (v.Z < MinZ)
                {
                    MinZ = v.Z;
                }
                if (v.Z > MaxZ)
                {
                    MaxZ = v.Z;
                }


                if (v.Y < Y)
                {
                    Y = v.Y;
                }
            }

            int height;

            /*
             * if (flattening)
             * {
             *  height = map.levelTerrainWorldCoor(MinX, MinZ, MaxX, MaxZ);
             * }
             * else
             * {
             *  height = map.getCellHeightFromWorldCoor((MinX + MaxX) / 2, ((MinZ + MaxZ) / 2));
             * }
             */
            height = map.getCellHeightFromWorldCoor((MinX + MaxX) / 2, ((MinZ + MaxZ) / 2));
            // removed flattening of terrain



            this.location = new Vector3(location.X, height, location.Z);

            this.boundingBox = this.UpdateBoundingBox();

            map.AddEntity(this); // .entities.Add(this);

            // surrounding circle.
            float w = bbox.Max.X - bbox.Min.X;
            float h = bbox.Max.Z - bbox.Min.Z;

            if (w > h)
            {
                surroundingCicle = w / 2;
            }
            else
            {
                surroundingCicle = h / 2;
            }

            if (flattening)
            {
                this.RunningGameSession.simulator.AddEntity(this);
                this.RunningGameSession.simulator.AddEvent(new Simulation.Events.BuildingContructionDoneEvent(this));
            }

            return(true);
        }
Example #4
0
 public void RemoveBuilding(LODTerrain.LODTerrain map)
 //public void RemoveBuilding(WorldMap map)
 {
     map.RemoveEntity(this);
 }
Example #5
0
 public static EntityFactory CreateFactory(GameSession.GameSession RunningGameSession, LODTerrain.LODTerrain map, Matrix projectionMatrix)
 {
     if (factorySingleton == null)
     {
         factorySingleton = new EntityFactory(RunningGameSession, map, projectionMatrix);
     }
     return(factorySingleton);
 }