Skip to content

Commit

Permalink
feat: [クラスラッパー]車両の再粘着制御を操作できるように
Browse files Browse the repository at this point in the history
  • Loading branch information
automatic9045 committed Nov 5, 2023
1 parent 63b909f commit 4a8bf14
Show file tree
Hide file tree
Showing 7 changed files with 146 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Libs/BveTypes/BveTypes.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@
<Compile Include="ClassWrappers\Public\DrawDistanceManager.cs" />
<Compile Include="ClassWrappers\Public\Ecb.cs" />
<Compile Include="ClassWrappers\Public\IDrawable.cs" />
<Compile Include="ClassWrappers\Public\ReAdhesionControl.cs" />
<Compile Include="ClassWrappers\Public\ReAdhesionControlMode.cs" />
<Compile Include="ClassWrappers\Public\StationText.cs" />
<Compile Include="ClassWrappers\Public\SpeedLimitText.cs" />
<Compile Include="ClassWrappers\Public\GraphCurve.cs" />
Expand Down
7 changes: 7 additions & 0 deletions Libs/BveTypes/ClassWrappers/Public/CarBc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ private static void Initialize(BveTypeSet bveTypes)
ClassMemberSet members = bveTypes.GetClassInfoOf<CarBc>();

BasicBrakeGetMethod = members.GetSourcePropertyGetterOf(nameof(BasicBrake));
BrakeReAdhesionGetMethod = members.GetSourcePropertyGetterOf(nameof(BrakeReAdhesion));
}

/// <summary>
Expand All @@ -43,5 +44,11 @@ protected CarBc(object src) : base(src)
/// 基礎ブレーキ装置を表す <see cref="ClassWrappers.BasicBrake"/> を取得します。
/// </summary>
public BasicBrake BasicBrake => ClassWrappers.BasicBrake.FromSource(BasicBrakeGetMethod.Invoke(Src, null));

private static FastMethod BrakeReAdhesionGetMethod;
/// <summary>
/// 基礎ブレーキ装置の滑走再粘着制御機構を取得します。
/// </summary>
public ReAdhesionControl BrakeReAdhesion => ReAdhesionControl.FromSource(BrakeReAdhesionGetMethod.Invoke(Src, null));
}
}
61 changes: 61 additions & 0 deletions Libs/BveTypes/ClassWrappers/Public/ReAdhesionControl.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using FastMember;
using TypeWrapping;

namespace BveTypes.ClassWrappers
{
/// <summary>
/// 再粘着制御を表します。
/// </summary>
public class ReAdhesionControl : ClassWrapperBase
{
[InitializeClassWrapper]
private static void Initialize(BveTypeSet bveTypes)
{
ClassMemberSet members = bveTypes.GetClassInfoOf<ReAdhesionControl>();

ModeGetMethod = members.GetSourcePropertyGetterOf(nameof(Mode));

IsEnabledGetMethod = members.GetSourcePropertyGetterOf(nameof(IsEnabled));
IsEnabledSetMethod = members.GetSourcePropertySetterOf(nameof(IsEnabled));
}

/// <summary>
/// オリジナル オブジェクトから <see cref="ReAdhesionControl"/> クラスの新しいインスタンスを初期化します。
/// </summary>
/// <param name="src">ラップするオリジナル オブジェクト。</param>
protected ReAdhesionControl(object src) : base(src)
{
}

/// <summary>
/// オリジナル オブジェクトからラッパーのインスタンスを生成します。
/// </summary>
/// <param name="src">ラップするオリジナル オブジェクト。</param>
/// <returns>オリジナル オブジェクトをラップした <see cref="ReAdhesionControl"/> クラスのインスタンス。</returns>
[CreateClassWrapperFromSource]
public static ReAdhesionControl FromSource(object src) => src is null ? null : new ReAdhesionControl(src);

private static FastMethod ModeGetMethod;
/// <summary>
/// 再粘着制御の動作状態を取得します。
/// </summary>
public ReAdhesionControlMode Mode => (ReAdhesionControlMode)ModeGetMethod.Invoke(Src, null);

private static FastMethod IsEnabledGetMethod;
private static FastMethod IsEnabledSetMethod;
/// <summary>
/// 再粘着制御を使用するかどうかを取得・設定します。
/// </summary>
public bool IsEnabled
{
get => IsEnabledGetMethod.Invoke(Src, null);
set => IsEnabledSetMethod.Invoke(Src, new object[] { value });
}
}
}
34 changes: 34 additions & 0 deletions Libs/BveTypes/ClassWrappers/Public/ReAdhesionControlMode.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BveTypes.ClassWrappers
{
/// <summary>
/// 再粘着制御の動作状態を指定します。
/// </summary>
public enum ReAdhesionControlMode
{
/// <summary>
/// 再粘着制御を動作させないことを指定します。
/// </summary>
Disable,

/// <summary>
/// 電流または圧力を引き下げることを指定します。
/// </summary>
Reduce,

/// <summary>
/// 低い電流または圧力のまま維持することを指定します。
/// </summary>
Hold,

/// <summary>
/// 引き下げた電流または圧力を元に戻すことを指定します。
/// </summary>
Return,
}
}
8 changes: 8 additions & 0 deletions Libs/BveTypes/ClassWrappers/Public/VehicleElectricity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ private static void Initialize(BveTypeSet bveTypes)

SlipVelocityCoefficientGetMethod = members.GetSourcePropertyGetterOf(nameof(SlipVelocityCoefficient));
SlipVelocityCoefficientSetMethod = members.GetSourcePropertySetterOf(nameof(SlipVelocityCoefficient));

PowerReAdhesionGetMethod = members.GetSourcePropertyGetterOf(nameof(PowerReAdhesion));
}

/// <summary>
Expand Down Expand Up @@ -61,6 +63,12 @@ public double RegenerationLimit
set => RegenerationLimitSetMethod.Invoke(Src, new object[] { value });
}

private static FastMethod PowerReAdhesionGetMethod;
/// <summary>
/// 自列車の主制御装置の空転・滑走再粘着制御機構を取得します。
/// </summary>
public ReAdhesionControl PowerReAdhesion => ReAdhesionControl.FromSource(PowerReAdhesionGetMethod.Invoke(Src, null));

private static FastMethod SlipVelocityCoefficientGetMethod;
private static FastMethod SlipVelocityCoefficientSetMethod;
/// <summary>
Expand Down
17 changes: 17 additions & 0 deletions Libs/BveTypes/WrapTypes/5.8.7554.391.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<WrapTypes xmlns="http://automatic9045.github.io/ns/xmlschemas/WrapTypesXmlSchema.xsd">
<Enum Wrapper="BrakePosition" Original="ds"/>
<Enum Wrapper="DoorState" Original="dy"/>
<Enum Wrapper="ReAdhesionControlMode" Original="cw"/>

<!-- Unidentified classes -->
<!-- Unidentified classes END -->
Expand Down Expand Up @@ -233,6 +234,9 @@
<Property Wrapper="BasicBrake">
<Getter Original="b"/>
</Property>
<Property Wrapper="BrakeReAdhesion">
<Getter Original="c"/>
</Property>
</Class>

<Class Wrapper="CarDoor" Original="av">
Expand Down Expand Up @@ -705,6 +709,16 @@
</Property>
</Class>

<Class Wrapper="ReAdhesionControl" Original="d8">
<Property Wrapper="Mode">
<Getter Original="b"/>
</Property>
<Property Wrapper="IsEnabled">
<Getter Original="l"/>
<Setter Original="a"/>
</Property>
</Class>

<Class Wrapper="RepeatedStructure" Original="ec">
<Property Wrapper="Models">
<Getter Original="a"/>
Expand Down Expand Up @@ -1271,6 +1285,9 @@
<Getter Original="e"/>
<Setter Original="b"/>
</Property>
<Property Wrapper="PowerReAdhesion">
<Getter Original="l"/>
</Property>
<Property Wrapper="SlipVelocityCoefficient">
<Getter Original="b"/>
<Setter Original="a"/>
Expand Down
17 changes: 17 additions & 0 deletions Libs/BveTypes/WrapTypes/6.0.7554.619.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<WrapTypes xmlns="http://automatic9045.github.io/ns/xmlschemas/WrapTypesXmlSchema.xsd">
<Enum Wrapper="BrakePosition" Original="ds"/>
<Enum Wrapper="DoorState" Original="dy"/>
<Enum Wrapper="ReAdhesionControlMode" Original="cw"/>

<!-- Unidentified classes -->
<!-- Unidentified classes END -->
Expand Down Expand Up @@ -233,6 +234,9 @@
<Property Wrapper="BasicBrake">
<Getter Original="b"/>
</Property>
<Property Wrapper="BrakeReAdhesion">
<Getter Original="c"/>
</Property>
</Class>

<Class Wrapper="CarDoor" Original="av">
Expand Down Expand Up @@ -705,6 +709,16 @@
</Property>
</Class>

<Class Wrapper="ReAdhesionControl" Original="d8">
<Property Wrapper="Mode">
<Getter Original="b"/>
</Property>
<Property Wrapper="IsEnabled">
<Getter Original="l"/>
<Setter Original="a"/>
</Property>
</Class>

<Class Wrapper="RepeatedStructure" Original="ec">
<Property Wrapper="Models">
<Getter Original="a"/>
Expand Down Expand Up @@ -1271,6 +1285,9 @@
<Getter Original="e"/>
<Setter Original="b"/>
</Property>
<Property Wrapper="PowerReAdhesion">
<Getter Original="l"/>
</Property>
<Property Wrapper="SlipVelocityCoefficient">
<Getter Original="b"/>
<Setter Original="a"/>
Expand Down

0 comments on commit 4a8bf14

Please sign in to comment.