예제 #1
0
        //Converti un point en worldLocation
        public static WorldLocation ToWorldLocation(this Point Location)
        {
            WorldLocation WipLocation = new WorldLocation();

            Point ChunkXY = new Point();
            Point TileXY  = new Point();

            ChunkXY.X = Location.X / 16;
            TileXY.X  = Location.X % 16;
            if (TileXY.X < 0)
            {
                TileXY.X = 0;
            }


            ChunkXY.Y = Location.Y / 16;
            TileXY.Y  = Location.Y % 16;
            if (TileXY.Y < 0)
            {
                TileXY.Y = 0;
            }

            WipLocation.tile  = TileXY;
            WipLocation.chunk = ChunkXY;

            return(WipLocation);
        }
예제 #2
0
        public void AddEntity(Obj.ObjEntity _Entity, WorldLocation _WorldLocation)
        {
            Obj.ObjChunk Chunk    = W.chunkManager.GetChunk(_WorldLocation.chunk);
            int          EntityID = _WorldLocation.tile.X + _WorldLocation.tile.Y * 16;

            Chunk.Entities.Add(EntityID, _Entity);
            Chunk.Tiles[_WorldLocation.tile.X, _WorldLocation.tile.Y].Entity = EntityID;
        }
예제 #3
0
        public bool TileIsFree(WorldLocation _WorldLocation)
        {
            Obj.ObjTile ThisTile = W.chunkManager.GetTile(_WorldLocation);
            if (ThisTile.Entity == -1)
            {
                return(true);
            }

            return(false);
        }
예제 #4
0
        //ajoute les cooordonné d'un point a une worldLOcation
        public static WorldLocation AddPoint(this WorldLocation _WorldLocation, Point _Point)
        {
            Point pt = ToPoint(_WorldLocation);

            pt = pt + _Point;

            WorldLocation NewWorldLocation = ToWorldLocation(pt);

            return(NewWorldLocation);
        }
예제 #5
0
        public void RemoveEntity(WorldLocation _WorldLocation)
        {
            ObjTile Tile = W.chunkManager.GetTile(_WorldLocation);

            if (Tile.Entity == -1)
            { // do nothing
            }
            else
            {
                ObjChunk Chunk = W.chunkManager.GetChunk(_WorldLocation);
                Chunk.Entities.Remove(Tile.Entity);
                Tile.Entity = -1;
            }
        }
예제 #6
0
        public GameObject.Event.GameObjectEventArgs GetEventArgs(WorldLocation Location, Point _OnScreenLocation)
        {
            GameObject.Event.GameObjectEventArgs args = new GameObject.Event.GameObjectEventArgs();

            args.CurrentLocation = Location;

            args.ParrentTile = W.chunkManager.GetTile(Location);

            if (args.ParrentTile.Entity == -1)
            {
                args.ParrentEntity = new Obj.ObjEntity(-1, -1);
            }
            else
            {
                args.ParrentEntity = W.chunkManager.GetEntity(Location);
            }

            args.World            = W;
            args.OnScreenLocation = _OnScreenLocation;

            return(args);
        }
예제 #7
0
 //Converti une worldLocation en un point
 public static Point ToPoint(this WorldLocation WorldLocation)
 {
     return(new Point(WorldLocation.chunk.X * 16 + WorldLocation.tile.X, WorldLocation.chunk.Y * 16 + WorldLocation.tile.Y));
 }
예제 #8
0
        public ObjEntity GetEntity(WorldLocation _WorldLocation)
        {
            ObjChunk chk = GetChunk(_WorldLocation);

            return(chk.Entities[GetTile(_WorldLocation).Entity]);
        }
예제 #9
0
 public ObjTile GetTile(WorldLocation _WorldLocation)
 {
     Obj.ObjChunk Chunk = GetChunk(_WorldLocation.chunk);
     return(Chunk.Tiles[_WorldLocation.tile.X, _WorldLocation.tile.Y]);
 }