コード例 #1
0
        protected override void OnEraseTile(Vector2Int tileXY)
        {
            // Add game coordinates
            tileXY += Vector2Int.one;

            // Find structure on tile
            int playerIndex = 0;
            int unitIndex   = -1;

            for (playerIndex = 0; playerIndex < UserData.current.selectedVariant.players.Count; ++playerIndex)
            {
                PlayerData.ResourceData resData = UserData.current.GetPlayerResourceData(playerIndex);

                for (int i = 0; i < resData.units.Count; ++i)
                {
                    UnitData unit = resData.units[i];

                    RectInt structureArea = StructureData.GetStructureArea(new Vector2Int(unit.position.x, unit.position.y), unit.typeID);
                    if (structureArea.Contains(tileXY))
                    {
                        unitIndex = i;
                        break;
                    }
                }

                if (unitIndex >= 0)
                {
                    break;
                }
            }

            if (unitIndex < 0)
            {
                return;
            }

            PlayerData.ResourceData playerResData = UserData.current.GetPlayerResourceData(playerIndex);

            UnitData structureToRemove = playerResData.units[unitIndex];

            // Remove structure from tile
            playerResData.units.RemoveAt(unitIndex);
            UserData.current.SetUnsaved();

            m_UnitRenderer.RemoveUnit(structureToRemove);
            m_MapRenderer.RefreshTiles(StructureData.GetBulldozedStructureArea(new Vector2Int(structureToRemove.position.x - 1, structureToRemove.position.y - 1), structureToRemove.typeID));
        }