Example #1
0
        private void ToolAction()
        {
            Tool currentTool = Game1.player.CurrentTool;

            //check if tool is enable from config
            ToolConfig ConfigForCurrentTool = new ToolConfig("");

            foreach (ToolConfig TC in ModConfig.tool)
            {
                if (currentTool.name.Contains(TC.name))
                {
                    ConfigForCurrentTool = TC;
                    break;
                }
            }

            if (ConfigForCurrentTool.name == "")
            {
                return;
            }
            else
            if (currentTool.upgradeLevel < ConfigForCurrentTool.minLevel)
            {
                return;
            }

            if (ConfigForCurrentTool.activeEveryTickAmount > 1)
            {
                ConfigForCurrentTool.incrementActiveCount();
                if (ConfigForCurrentTool.canToolBeActive() == false)
                {
                    return;
                }
            }

            int effectRadius = ConfigForCurrentTool.effectRadius;
            int currentWater = 0;

            if (currentTool is WateringCan)
            {
                WateringCan currentWaterCan = (WateringCan)currentTool;
                currentWater = currentWaterCan.WaterLeft;
            }

            float          currentStamina   = Game1.player.stamina;
            List <Vector2> affectedTileGrid = MakeVector2TileGrid(Game1.player.getTileLocation(), effectRadius);

            //if player on horse
            Vector2 currentMountPosition = new Vector2();

            if (Game1.player.isRidingHorse())
            {
                currentMountPosition = Game1.player.getMount().position;
                Game1.player.getMount().position = new Vector2(0, 0);
            }

            //Tool

            //before tool use
            int toolUpgrade = currentTool.upgradeLevel;

            currentTool.upgradeLevel = 4;
            Game1.player.toolPower   = 0;

            //tool use
            foreach (Vector2 tile in affectedTileGrid)
            {
                currentTool.DoFunction(Game1.currentLocation, (int)(tile.X * Game1.tileSize), (int)(tile.Y * Game1.tileSize), 0, Game1.player);
            }

            //after tool use
            if (Game1.player.isRidingHorse())
            {
                Game1.player.getMount().position = currentMountPosition;
            }
            currentTool.upgradeLevel = toolUpgrade;
            Game1.player.stamina     = currentStamina;

            if (currentTool is WateringCan)
            {
                WateringCan currentWaterCan = (WateringCan)currentTool;
                currentWaterCan.WaterLeft = currentWater;
            }
        }