89 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|
|
} |