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);
        }
Example #2
0
        /// <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);
            }
        }