46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using Godot;
|
|
|
|
public class SacrificeNode : ProgramNode
|
|
{
|
|
public SacrificeNode()
|
|
{
|
|
DisplayText = "Sacrifice";
|
|
TooltipText = "Sacrifices the robot on its current tile to turn that tile's resource into an endless resource.";
|
|
}
|
|
|
|
public override NodeResult Execute(Robot robot, double delta)
|
|
{
|
|
Vector3I mapIndex = Pathfinding.GetClosestStartPoint(robot.Position);
|
|
Tile tile = GameData.map[mapIndex.Y].tiles[mapIndex.X, mapIndex.Z];
|
|
|
|
if (!tile.containsResource || tile.resource == null)
|
|
{
|
|
lastExecutionMessage = "No resource on this tile";
|
|
return NodeResult.FAILURE;
|
|
}
|
|
|
|
if (tile.resource.IsEndless())
|
|
{
|
|
lastExecutionMessage = "Resource is already endless";
|
|
return NodeResult.FAILURE;
|
|
}
|
|
|
|
tile.resource.MakeEndless();
|
|
GameData.robots.Remove(robot);
|
|
robot.QueueFree();
|
|
lastExecutionMessage = "";
|
|
return NodeResult.SUCCESS;
|
|
}
|
|
|
|
public override ProgramNode Duplicate()
|
|
{
|
|
SacrificeNode duplicate = new SacrificeNode();
|
|
return duplicate;
|
|
}
|
|
|
|
public override string Save()
|
|
{
|
|
return $"Name: {DisplayText}";
|
|
}
|
|
}
|