Files
Hasebe/Assets/Code/OfficeGame/BattleMode/Actions/Deciders/BattleActionDecisionResult.cs
T

89 lines
2.8 KiB
C#

using UnityEngine;
namespace Code.OfficeGame.BattleMode.Actions
{
public abstract class BattleActionDecisionResult
{
public BattleActionType ActionType;
public BattleActionDecisionResultCode ResultCode;
public abstract BattleActionDecisionResult GetSnapshot();
public abstract void RestoreSnapshot(BattleActionDecisionResult snapshot);
}
public class PositionBattleActionDeciderResult : BattleActionDecisionResult
{
public Vector3 Position;
public Quaternion Rotation;
public override BattleActionDecisionResult GetSnapshot()
{
var snapshot = new PositionBattleActionDeciderResult
{
Position = Position,
Rotation = Rotation,
ActionType = ActionType,
ResultCode = ResultCode
};
return snapshot;
}
public override void RestoreSnapshot(BattleActionDecisionResult snapshot)
{
if (snapshot is not PositionBattleActionDeciderResult) return;
var deciderResult = (PositionBattleActionDeciderResult)snapshot;
Position = deciderResult.Position;
Rotation = deciderResult.Rotation;
ActionType = deciderResult.ActionType;
ResultCode = deciderResult.ResultCode;
}
}
public class FrameBattleActionDeciderResult : BattleActionDecisionResult
{
public int FrameCount;
public override BattleActionDecisionResult GetSnapshot()
{
var snapshot = new FrameBattleActionDeciderResult
{
FrameCount = FrameCount,
ActionType = ActionType,
ResultCode = ResultCode
};
return snapshot;
}
public override void RestoreSnapshot(BattleActionDecisionResult snapshot)
{
if (snapshot is not FrameBattleActionDeciderResult) return;
var deciderResult = (FrameBattleActionDeciderResult)snapshot;
FrameCount = deciderResult.FrameCount;
ActionType = deciderResult.ActionType;
ResultCode = deciderResult.ResultCode;
}
}
public class AsIsBattleActionDeciderResult : BattleActionDecisionResult
{
public override BattleActionDecisionResult GetSnapshot()
{
var snapshot = new AsIsBattleActionDeciderResult();
snapshot.ActionType = ActionType;
snapshot.ResultCode = ResultCode;
return snapshot;
}
public override void RestoreSnapshot(BattleActionDecisionResult snapshot)
{
ActionType = snapshot.ActionType;
ResultCode = snapshot.ResultCode;
}
}
}