Automatically generate properties, fixes, engine class
This commit is contained in:
parent
49c3b60963
commit
3351993936
2 changed files with 231 additions and 21 deletions
|
@ -3,6 +3,8 @@ using System.CodeDom.Compiler;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using RobocraftX.Common;
|
using RobocraftX.Common;
|
||||||
|
using Svelto.ECS;
|
||||||
|
using Techblox.EngineBlock;
|
||||||
|
|
||||||
namespace CodeGenerator
|
namespace CodeGenerator
|
||||||
{
|
{
|
||||||
|
@ -22,10 +24,12 @@ namespace CodeGenerator
|
||||||
ns.Imports.Add(new CodeNamespaceImport("RobocraftX.Common"));
|
ns.Imports.Add(new CodeNamespaceImport("RobocraftX.Common"));
|
||||||
ns.Imports.Add(new CodeNamespaceImport("Svelto.ECS"));
|
ns.Imports.Add(new CodeNamespaceImport("Svelto.ECS"));
|
||||||
var cl = new CodeTypeDeclaration(name);
|
var cl = new CodeTypeDeclaration(name);
|
||||||
|
cl.BaseTypes.Add(new CodeTypeReference("Block"));
|
||||||
cl.Members.Add(new CodeConstructor
|
cl.Members.Add(new CodeConstructor
|
||||||
{
|
{
|
||||||
Parameters = {new CodeParameterDeclarationExpression("EGID", "egid")},
|
Parameters = {new CodeParameterDeclarationExpression("EGID", "egid")},
|
||||||
Comments = { new CodeCommentStatement($"{name} constructor", true)}
|
Comments = {new CodeCommentStatement($"{name} constructor", true)},
|
||||||
|
BaseConstructorArgs = {new CodeVariableReferenceExpression("egid")}
|
||||||
});
|
});
|
||||||
cl.Members.Add(new CodeConstructor
|
cl.Members.Add(new CodeConstructor
|
||||||
{
|
{
|
||||||
|
@ -41,6 +45,7 @@ namespace CodeGenerator
|
||||||
group))
|
group))
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
GenerateProperties<EngineBlockComponent>(cl);
|
||||||
ns.Types.Add(cl);
|
ns.Types.Add(cl);
|
||||||
codeUnit.Namespaces.Add(ns);
|
codeUnit.Namespaces.Add(ns);
|
||||||
|
|
||||||
|
@ -64,5 +69,33 @@ namespace CodeGenerator
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GenerateProperties<T>(CodeTypeDeclaration cl) where T : IEntityComponent
|
||||||
|
{
|
||||||
|
var type = typeof(T);
|
||||||
|
foreach (var field in type.GetFields())
|
||||||
|
{
|
||||||
|
var propName = char.ToUpper(field.Name[0]) + field.Name.Substring(1);
|
||||||
|
var structFieldReference = new CodeFieldReferenceExpression(new CodeMethodInvokeExpression(
|
||||||
|
new CodeMethodReferenceExpression(new CodeSnippetExpression("BlockEngine"),
|
||||||
|
"GetBlockInfo", new CodeTypeReference(type)),
|
||||||
|
new CodeThisReferenceExpression()), field.Name);
|
||||||
|
cl.Members.Add(new CodeMemberProperty
|
||||||
|
{
|
||||||
|
Name = propName,
|
||||||
|
HasGet = true,
|
||||||
|
HasSet = true,
|
||||||
|
GetStatements =
|
||||||
|
{
|
||||||
|
new CodeMethodReturnStatement(structFieldReference)
|
||||||
|
},
|
||||||
|
SetStatements =
|
||||||
|
{
|
||||||
|
new CodeAssignStatement(structFieldReference, new CodePropertySetValueReferenceExpression())
|
||||||
|
},
|
||||||
|
Type = new CodeTypeReference(field.FieldType)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,35 +1,212 @@
|
||||||
using RobocraftX.Common;
|
//------------------------------------------------------------------------------
|
||||||
using Svelto.ECS;
|
// <auto-generated>
|
||||||
using Techblox.EngineBlock;
|
// Ezt a kódot eszköz generálta.
|
||||||
|
// Futásidejű verzió:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Ennek a fájlnak a módosítása helytelen viselkedést eredményezhet, és elvész, ha
|
||||||
|
// a kódot újragenerálják.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace TechbloxModdingAPI.Blocks
|
namespace TechbloxModdingAPI.Blocks
|
||||||
{
|
{
|
||||||
public class Engine : SignalingBlock
|
using RobocraftX.Common;
|
||||||
|
using Svelto.ECS;
|
||||||
|
|
||||||
|
|
||||||
|
public class Engine : Block
|
||||||
{
|
{
|
||||||
public Engine(EGID id) : base(id)
|
|
||||||
|
/// Engine constructor
|
||||||
|
private Engine(EGID egid) :
|
||||||
|
base(egid)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public Engine(uint id) : base(new EGID(id, CommonExclusiveGroups.ENGINE_BLOCK_BUILD_GROUP))
|
/// Engine constructor
|
||||||
|
private Engine(uint id) :
|
||||||
|
base(new EGID(id, CommonExclusiveGroups.ENGINE_BLOCK_BUILD_GROUP))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool On
|
private bool EngineOn
|
||||||
{
|
{
|
||||||
get => BlockEngine.GetBlockInfo<EngineBlockComponent>(this).engineOn;
|
get
|
||||||
set => BlockEngine.GetBlockInfo<EngineBlockComponent>(this).engineOn = value;
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).engineOn;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).engineOn = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public float CurrentTorque
|
private int CurrentGear
|
||||||
{
|
{
|
||||||
get => BlockEngine.GetBlockInfo<EngineBlockComponent>(this).currentTorque;
|
get
|
||||||
set => BlockEngine.GetBlockInfo<EngineBlockComponent>(this).currentTorque = value;
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentGear;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentGear = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int CurrentGear
|
private float GearChangeCountdown
|
||||||
{
|
{
|
||||||
get => BlockEngine.GetBlockInfo<EngineBlockComponent>(this).currentGear;
|
get
|
||||||
set => BlockEngine.GetBlockInfo<EngineBlockComponent>(this).currentGear = value;
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).gearChangeCountdown;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).gearChangeCountdown = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float CurrentRpmAV
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentRpmAV;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentRpmAV = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float CurrentRpmLV
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentRpmLV;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentRpmLV = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float TargetRpmAV
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).targetRpmAV;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).targetRpmAV = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float TargetRpmLV
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).targetRpmLV;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).targetRpmLV = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float CurrentTorque
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentTorque;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).currentTorque = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float TotalWheelVelocityAV
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).totalWheelVelocityAV;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).totalWheelVelocityAV = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float TotalWheelVelocityLV
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).totalWheelVelocityLV;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).totalWheelVelocityLV = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int TotalWheelCount
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).totalWheelCount;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).totalWheelCount = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool LastGearUpInput
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).lastGearUpInput;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).lastGearUpInput = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool LastGearDownInput
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).lastGearDownInput;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).lastGearDownInput = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float ManualToAutoGearCoolOffCounter
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).manualToAutoGearCoolOffCounter;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).manualToAutoGearCoolOffCounter = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float Load
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).load;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<Techblox.EngineBlock.EngineBlockComponent>(this).load = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue