Ignore:
Timestamp:
2013-07-23 11:06:44 (6 years ago)
Author:
dezhidki
Message:

Talletus.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/World/Level.cs

    r4535 r4550  
    88using System.Collections.Generic; 
    99using Viewport = CastleMaster.Graphics.Viewport; 
     10using CastleMaster.Players; 
    1011 
    1112namespace CastleMaster.World 
     
    5758        private EntityComprarer comparer = new EntityComprarer(); 
    5859        private AnimationHelper waterAnimation = new AnimationHelper(10, 2); 
     60        private Player[] players; 
    5961 
    6062        public Level(Texture2D tileMap) 
     
    6466            height = tileMap.Height; 
    6567 
     68            players = new Player[2]; 
    6669            tiles = new int[width * height]; 
    6770            data = new byte[width * height]; 
     
    8083            InitLevel(); 
    8184        } 
     85 
     86        public Player[] Players { get { return players; } } 
    8287 
    8388        public int Width { get { return width; } } 
     
    181186        } 
    182187 
     188        public void SetPlayer(Player player, int id) 
     189        { 
     190            players[id] = player; 
     191        } 
     192 
    183193        public void SetTile(int tileX, int tileZ, int tileID) 
    184194        { 
     
    242252        } 
    243253 
     254        public List<BoundingRectangle> GetCollidables(Entity ent, BoundingRectangle entBR) 
     255        { 
     256            List<BoundingRectangle> result = new List<BoundingRectangle>(); 
     257 
     258            int x0 = (int)(entBR.XLeft / Viewport.TILESIZE); 
     259            int z0 = (int)(entBR.ZFar / Viewport.TILESIZE); 
     260            int x1 = (int)(entBR.XRight / Viewport.TILESIZE); 
     261            int z1 = (int)(entBR.ZNear / Viewport.TILESIZE); 
     262 
     263            for (int z = z0; z <= z1; z++) 
     264            { 
     265                if (z < 0 || z >= height) continue; 
     266                for (int x = x0; x <= x1; x++) 
     267                { 
     268                    if (x < 0 || x >= width) continue; 
     269 
     270                    foreach (Entity e in entitiesInTiles[x + z * width]) 
     271                    { 
     272                        if (e != ent && entBR.Intersects(e.BoundingRectangle)) 
     273                            e.AddBoundingRect(ref result, ent); 
     274                    } 
     275 
     276                    Tile t = registeredTiles[tiles[x + z * width]]; 
     277                    if (t.ID != TILE_VOID && t.IsSolid && t.GetBoundingRect(x, z).Intersects(entBR)) 
     278                        t.AddBoundingRect(ref result, x, z); 
     279                } 
     280            } 
     281 
     282            return result; 
     283        } 
     284 
    244285        private bool IsValidPos(int tileX, int tileZ) 
    245286        { 
Note: See TracChangeset for help on using the changeset viewer.