using System; using RobocraftX.Blocks; using Svelto.ECS; using Unity.Mathematics; using GamecraftModdingAPI; using GamecraftModdingAPI.Utility; namespace GamecraftModdingAPI.Blocks { public class ConsoleBlock : Block { public static ConsoleBlock PlaceNew(float3 position, float3 rotation = default, BlockColors color = BlockColors.Default, byte darkness = 0, int uscale = 1, float3 scale = default, Player player = null) { if (PlacementEngine.IsInGame && GameState.IsBuildMode()) { try { EGID id = PlacementEngine.PlaceBlock(BlockIDs.ConsoleBlock, color, darkness, position, uscale, scale, player, rotation); Sync(); return new ConsoleBlock(id); } catch (Exception e) { Logging.MetaDebugLog(e); } } return null; } public ConsoleBlock(EGID id): base(id) { if (!BlockEngine.GetBlockInfoExists(this.Id)) { throw new BlockTypeException($"Block is not a {this.GetType().Name} block"); } } public ConsoleBlock(uint id): base(id) { if (!BlockEngine.GetBlockInfoExists(this.Id)) { throw new BlockTypeException($"Block is not a {this.GetType().Name} block"); } } // custom console block properties public string Command { get { return BlockEngine.GetBlockInfo(Id).commandName; } set { BlockEngine.GetBlockInfo(Id).commandName.Set(value); } } public string Arg1 { get => BlockEngine.GetBlockInfo(Id).arg1; set { BlockEngine.GetBlockInfo(Id).arg1.Set(value); } } public string Arg2 { get => BlockEngine.GetBlockInfo(Id).arg2; set { BlockEngine.GetBlockInfo(Id).arg2.Set(value); } } public string Arg3 { get => BlockEngine.GetBlockInfo(Id).arg3; set { BlockEngine.GetBlockInfo(Id).arg3.Set(value); } } } }