Files
JuegoSim/Assets/_Project/Scripts/Code/CommandLayer/Commands/CreateBlockCommand.cs
T
2026-07-21 08:56:10 +03:00

66 lines
2.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CreateBlockCommand : ICommand
{
private string prefabId;
private Vector3 position;
private Quaternion rotation;
private GameObject objectCreated;
private string blockId;
private bool layerDiff;
private BlockFactory factory;
private Environment environment;
public CreateBlockCommand(string prefabId, Vector3 position, Quaternion rotation, bool LayerDiff = false)
{
this.prefabId = prefabId;
this.position = position;
this.rotation = rotation;
this.layerDiff = LayerDiff;
this.factory = BlockFactory.getInstance();
this.environment = Environment.getInstance();
}
public CreateBlockCommand(CommandDTO commandDTO)
{
this.prefabId = commandDTO.Parameters["prefabId"].ToString();
this.position = (Vector3)commandDTO.Parameters["position"];
this.rotation = (Quaternion)commandDTO.Parameters["rotation"];
this.layerDiff = (bool)commandDTO.Parameters["layerDiff"];
this.factory = BlockFactory.getInstance();
this.environment = Environment.getInstance();
}
public void execute()
{
objectCreated = factory.createblock(prefabId, position, rotation, blockId, layerDiff);
if (objectCreated != null)
{
Block blockComponent = objectCreated.GetComponent<Block>();
blockId = blockComponent.getBlockId();
}
else
{
Debug.LogWarning("CreateblockCommand: Could not create block with prefab ID " + prefabId);
}
}
public void undo()
{
environment.removeBlock(blockId);
}
public CommandDTO toDTO()
{
return new CommandDTO.CommandDTOBuilder()
.SetCommandName("CreateCommand")
.AddParameter("prefabId", prefabId)
.AddParameter("position", position)
.AddParameter("rotation", rotation)
.AddParameter("layerDiff", layerDiff)
.Build();
}
}