NorbiPeti
f403feb298
Removed BlockIdentifiers.OWNED_BLOCKS as the original got replaced with an array Added the correct group for each supported functional block Removed EntityFactory property from IEntitySerializer as it is provided on deserialization
84 lines
2.3 KiB
C#
84 lines
2.3 KiB
C#
using System;
|
|
|
|
using Gamecraft.Blocks.GUI;
|
|
using RobocraftX.Common;
|
|
using Svelto.ECS;
|
|
using Unity.Mathematics;
|
|
|
|
using GamecraftModdingAPI;
|
|
using GamecraftModdingAPI.Utility;
|
|
|
|
namespace GamecraftModdingAPI.Blocks
|
|
{
|
|
public class TextBlock : Block
|
|
{
|
|
|
|
public static TextBlock 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())
|
|
{
|
|
EGID id = PlacementEngine.PlaceBlock(BlockIDs.TextBlock, color, darkness,
|
|
position, uscale, scale, player, rotation);
|
|
return new TextBlock(id);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public TextBlock(EGID id) : base(id)
|
|
{
|
|
if (!BlockEngine.GetBlockInfoExists<TextBlockDataStruct>(this.Id))
|
|
{
|
|
throw new BlockTypeException($"Block is not a {this.GetType().Name} block");
|
|
}
|
|
}
|
|
|
|
public TextBlock(uint id) : base(new EGID(id, CommonExclusiveGroups.BUILD_TEXT_BLOCK_GROUP))
|
|
{
|
|
if (!BlockEngine.GetBlockInfoExists<TextBlockDataStruct>(this.Id))
|
|
{
|
|
throw new BlockTypeException($"Block is not a {this.GetType().Name} block");
|
|
}
|
|
}
|
|
|
|
// custom text block properties
|
|
|
|
/// <summary>
|
|
/// The text block's current text.
|
|
/// </summary>
|
|
public string Text
|
|
{
|
|
get
|
|
{
|
|
return BlockEngine.GetBlockInfo<TextBlockDataStruct>(Id).textCurrent;
|
|
}
|
|
|
|
set
|
|
{
|
|
ref TextBlockDataStruct tbds = ref BlockEngine.GetBlockInfo<TextBlockDataStruct>(Id);
|
|
tbds.textCurrent.Set(value);
|
|
tbds.textStored.Set(value);
|
|
BlockEngine.GetBlockInfo<TextBlockNetworkDataStruct>(Id).newTextBlockStringContent.Set(value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// The text block's current text block ID (used in ChangeTextBlockCommand).
|
|
/// </summary>
|
|
public string TextBlockId
|
|
{
|
|
get
|
|
{
|
|
return BlockEngine.GetBlockInfo<TextBlockDataStruct>(Id).textBlockID;
|
|
}
|
|
|
|
set
|
|
{
|
|
BlockEngine.GetBlockInfo<TextBlockDataStruct>(Id).textBlockID.Set(value);
|
|
BlockEngine.GetBlockInfo<TextBlockNetworkDataStruct>(Id).newTextBlockID.Set(value);
|
|
}
|
|
}
|
|
}
|
|
}
|