示例#1
0
    public void Init(DungeonUnity dungeonUnity, DungeonVector2 position, DungeonTile tile)
    {
        this.tile         = tile;
        this.position     = position;
        this.dungeonUnity = dungeonUnity;

        trans.position = dungeonUnity.GetWorldPosition(position);
        trans.rotation = Quaternion.identity;

        floor     = AddSide(tile.floor, DungeonTileSideType.Floor);
        ceiling   = AddSide(tile.ceiling, DungeonTileSideType.Ceiling);
        wallNorth = AddSide(tile.wallNorth, DungeonTileSideType.WallNorth);
        wallSouth = AddSide(tile.wallSouth, DungeonTileSideType.WallSouth);
        wallEast  = AddSide(tile.wallEast, DungeonTileSideType.WallEast);
        wallWest  = AddSide(tile.wallWest, DungeonTileSideType.WallWest);
    }
示例#2
0
    public void Clear()
    {
        if (!dungeonUnity)
        {
            return;
        }

        if (floor)
        {
            dungeonUnity.tilesSideFactory.ReturnSide(floor);
            floor = null;
        }

        if (ceiling)
        {
            dungeonUnity.tilesSideFactory.ReturnSide(ceiling);
            ceiling = null;
        }

        if (wallNorth)
        {
            dungeonUnity.tilesSideFactory.ReturnSide(wallNorth);
            wallNorth = null;
        }

        if (wallSouth)
        {
            dungeonUnity.tilesSideFactory.ReturnSide(wallSouth);
            wallSouth = null;
        }

        if (wallEast)
        {
            dungeonUnity.tilesSideFactory.ReturnSide(wallEast);
            wallEast = null;
        }

        if (wallWest)
        {
            dungeonUnity.tilesSideFactory.ReturnSide(wallWest);
            wallWest = null;
        }

        dungeonUnity = null;
    }
    public void ReturnSide(DungeonTileSideUnity side)
    {
        List <DungeonTileSideUnity> sidePool;

        if (pool.ContainsKey(side.id))
        {
            sidePool = pool[side.id];
        }
        else
        {
            sidePool = new List <DungeonTileSideUnity>();
            pool.Add(side.id, sidePool);
        }

        side.trans.parent = trans;
        side.go.SetActive(false);
        sidePool.Add(side);
    }
示例#4
0
    private DungeonTileSideUnity AddSide(string id, DungeonTileSideType sideType)
    {
        if (string.IsNullOrEmpty(id))
        {
            return(null);
        }

        if (!IsSideNonSolid(dungeonUnity.dungeon, position, sideType))
        {
            return(null);
        }

        DungeonTileSideUnity side = dungeonUnity.tilesSideFactory.GetSide(id);

        side.trans.parent        = trans;
        side.trans.localPosition = GetSidePosition(sideType);
        side.trans.localRotation = GetSideRotation(sideType);

        return(side);
    }
    public DungeonTileSideUnity GetSide(string id)
    {
        DungeonTileSideUnity side = null;

        if (pool.ContainsKey(id) && pool[id].Count > 0)
        {
            List <DungeonTileSideUnity> sidePool = pool[id];

            side = sidePool[sidePool.Count - 1];
            sidePool.RemoveAt(sidePool.Count - 1);

            side.go.SetActive(true);
        }
        else
        {
            GameObject prefab = GetPrefab(id);

            side = ((GameObject)GameObject.Instantiate(prefab)).GetComponent <DungeonTileSideUnity>();
        }

        return(side);
    }