private bool LoadMap() { mTitleMap.Load("Demos/SuperFlagRun/TitleMap"); mGameMap.Load("Demos/SuperFlagRun/GameMap"); if (mTitleMap != null && mTitleMap.status == RB.AssetStatus.Ready) { mTitleMap.LoadLayer("Terrain", SuperFlagRun.MAP_LAYER_TITLE_TERRAIN); mTitleMap.LoadLayer("Deco", SuperFlagRun.MAP_LAYER_TITLE_DECO); mTitleMap.LoadLayer("Sky", SuperFlagRun.MAP_LAYER_TITLE_SKY); } if (mGameMap != null) { mGameMap.LoadLayer("Sky", SuperFlagRun.MAP_LAYER_SKY); mGameMap.LoadLayer("Clouds", SuperFlagRun.MAP_LAYER_CLOUDS); mGameMap.LoadLayer("Terrain", SuperFlagRun.MAP_LAYER_TERRAIN); mGameMap.LoadLayer("Background", SuperFlagRun.MAP_LAYER_BACKGROUND); } RB.MapLayerSpriteSheetSet(SuperFlagRun.MAP_LAYER_TITLE_TERRAIN, assets.spriteSheetTerrain); RB.MapLayerSpriteSheetSet(SuperFlagRun.MAP_LAYER_TITLE_DECO, assets.spriteSheetDeco); RB.MapLayerSpriteSheetSet(SuperFlagRun.MAP_LAYER_TITLE_SKY, assets.spriteSheetDeco); RB.MapLayerSpriteSheetSet(SuperFlagRun.MAP_LAYER_SKY, assets.spriteSheetDeco); RB.MapLayerSpriteSheetSet(SuperFlagRun.MAP_LAYER_CLOUDS, assets.spriteSheetDeco); RB.MapLayerSpriteSheetSet(SuperFlagRun.MAP_LAYER_TERRAIN, assets.spriteSheetTerrain); RB.MapLayerSpriteSheetSet(SuperFlagRun.MAP_LAYER_BACKGROUND, assets.spriteSheetDeco); RB.SpriteSheetSet(assets.spriteSheetTerrain); if (mGameMap != null) { mGameMapSize = mGameMap.size; // Convert TMXProperties to simple ColliderInfo.ColliderType, for faster access for (int x = 0; x < mGameMapSize.width; x++) { for (int y = 0; y < mGameMapSize.height; y++) { var tilePos = new Vector2i(x, y); var tileProps = RB.MapDataGet <TMXMapAsset.TMXProperties>(MAP_LAYER_TERRAIN, tilePos); if (tileProps != null) { RB.MapDataSet <ColliderInfo.ColliderType>(MAP_LAYER_TERRAIN, tilePos, (ColliderInfo.ColliderType)tileProps.GetInt("ColliderType")); } else { RB.MapDataSet <ColliderInfo.ColliderType>(MAP_LAYER_TERRAIN, tilePos, ColliderInfo.ColliderType.NONE); } } } } return(true); }
/// <summary> /// Reset all entity lists for all tiles. This is expensive and should not be done often. /// </summary> public void UpdateAllEntityMapPositions() { // Clear all entity lists for (int x = 0; x < size.width; x++) { for (int y = 0; y < size.height; y++) { var entityList = RB.MapDataGet <List <EntityID> >(C.LAYER_TERRAIN, new Vector2i(x, y)); if (entityList == null) { entityList = new List <EntityID>(); RB.MapDataSet(C.LAYER_TERRAIN, new Vector2i(x, y), entityList); } else { entityList.Clear(); } } } for (int i = 0; i < EntityStore.entities.Count; i++) { var e = EntityStore.entities[i].e; if (e == null) { continue; } if (e.pos.x < 0 || e.pos.y < 0 || e.pos.x >= size.width || e.pos.y >= size.height) { continue; } var entityList = RB.MapDataGet <List <EntityID> >(C.LAYER_TERRAIN, e.pos); entityList.Add(e.id); } }