Пример #1
0
        public override void OnEnter()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (UpdateCache(go))
            {
                STETilemap tilemap = cachedComponent as STETilemap;
                if (forceUpdate.Value)
                {
                    tilemap.UpdateMeshImmediate();
                }
                else
                {
                    tilemap.UpdateMesh();
                }
            }

            Finish();
        }
Пример #2
0
    protected override void ProceedUse(List <Vector2> pTiles)
    {
        NeedBase energyNeed = PlayerNeedManager.Instance.GetNeed("Energy");

        energyNeed.Change(-CurrentTool.EnergyCost * (ToolCursorManager.Instance.CursorIndex + 1));

        List <Vector2> tiles = pTiles;

        foreach (Vector2 tile in tiles)
        {
            if (CheckTileValidity(tile))
            {
                STETilemap affectedLayer = GetTileAffectedLayer(tile);

                uint     rawData  = affectedLayer.GetTileData(tile);
                TileData tileData = new TileData(rawData);
                foreach (AffectedTerrain terrain in AffectedTerrains)
                {
                    if (affectedLayer.name == terrain.LayerName)
                    {
                        tileData.brushId = terrain.BrushId;
                    }
                }
                if (affectedLayer.name == "Dirt")
                {
                    FarmPlot plot = GetPlot(tile);
                    if (plot != null)
                    {
                        Destroy(plot.gameObject);
                    }
                }

                affectedLayer.SetTileData(tile, tileData.BuildData());
                affectedLayer.UpdateMeshImmediate();

                FindObjectOfType <PlayerInventory>().RemoveFromStack(Toolbar.Instance.SelectedSlot.ReferencedItemStack, 1);
                if (Toolbar.Instance.SelectedSlot.ReferencedItemStack == null)
                {
                    return;
                }
            }
        }
    }
    protected override void ProceedUse(List <Vector2> pTiles)
    {
        //Spend player energy
        NeedBase energyNeed = PlayerNeedManager.Instance.GetNeed("Energy");

        energyNeed.Change(-CurrentTool.EnergyCost * (ToolCursorManager.Instance.CursorIndex + 1));

        List <Vector2> tiles = pTiles;

        foreach (Vector2 tile in tiles)
        {
            if (CheckTileValidity(tile))
            {
                FarmPlot plot = GetPlot(tile);
                if (plot != null && plot.Crop != null)
                {
                    plot.Crop.SendMessage("Hit", "Hoe");
                    return;
                }

                STETilemap affectedLayer = GetTileAffectedLayer(tile);
                affectedLayer.Erase(tile);
                affectedLayer.UpdateMeshImmediate();
                if (affectedLayer.name == "Dirt")
                {
                    GameObject.Instantiate(PlotPrefab, tile, this.transform.rotation);
                }
                foreach (AffectedLayer layer in AffectedLayerNames)
                {
                    if (layer.Name == affectedLayer.name)
                    {
                        int rand = Random.Range(0, 100);
                        if (rand <= layer.Output.Chance)
                        {
                            ItemSpawner.Instance.SpawnItems(layer.Output.ContainedItem, tile, (uint)layer.Output.Amount);
                        }
                    }
                }
            }
        }
    }
Пример #4
0
        private void TryToPlaceDirt()
        {
            if (MathHelper.GetRandomInt(0, 100) < 95)
            {
                return;
            }

            var randomTile = GetRandomPlaceableTilePosition();

            if (randomTile.HasValue)
            {
                var flag = GetRandomTileRotationFlag();

                _doodadsBackgroundTilemap.SetTile(
                    randomTile.Value,
                    GetRandomDirtTile(),
                    Tileset.k_BrushId_Default,
                    flag
                    );
                _doodadsBackgroundTilemap.UpdateMeshImmediate();
            }
        }
Пример #5
0
        private void SetDoorState(bool state)
        {
            if (state == _oldState)
            {
                return;
            }

            var top = DoorLocation;
            var bot = new Vector2(top.x, top.y + 1);

            var tileTop = WallTileId; // Default is closed
            var tileBot = FloorTileId;

            if (Locked)
            {
                tileTop = LockedWallTileId;
                tileBot = LockedFloorTileId;
            }
            else if (state)
            {
                tileTop = OpenWallTileId;
                tileBot = OpenFloorTileId;
            }

            DoorTilemap.SetTile(bot, tileTop);
            DoorTilemap.SetTile(top, tileBot);

            if (InvertTiles)
            {
                SetFlipForTile(DoorTilemap, bot);
                SetFlipForTile(DoorTilemap, top);
            }

            _oldState = state;
            DoorTilemap.UpdateMeshImmediate();
        }
Пример #6
0
 void SetTileData(Vector2 pTileWorldPos, TileData pTileData)
 {
     OccupiedLayer.SetTileData(pTileWorldPos, pTileData.BuildData());
     OccupiedLayer.UpdateMeshImmediate();
 }