Spaces:
Runtime error
Runtime error
File size: 2,683 Bytes
ac55997 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
using System;
using Photon.Deterministic;
namespace Quantum
{
partial struct TurnData
{
public void Update(Frame f)
{
var config = f.FindAsset<TurnConfig>(ConfigRef.Id);
if (config == null || !config.UsesTimer || Status != TurnStatus.Active)
{
return;
}
Ticks++;
if (Ticks >= config.TurnDurationInTicks)
{
f.Signals.OnTurnEnded(this, TurnEndReason.Time);
}
}
public void AccumulateStats(TurnData from)
{
Ticks += from.Ticks;
Number++;
}
public void SetType(TurnType newType, Frame f = null)
{
if (Type == newType)
{
return;
}
var previousType = Type;
Type = newType;
f?.Events.TurnTypeChanged(this, previousType);
}
public void SetStatus(TurnStatus newStatus, Frame f = null)
{
if (Status == newStatus)
{
return;
}
var previousStatus = Status;
Status = newStatus;
f?.Events.TurnStatusChanged(this, previousStatus);
if (Status == TurnStatus.Active)
{
f?.Events.TurnActivated(this);
}
}
// frame is only necessary if caller wants to raise events
public void ResetTicks(Frame f = null)
{
ResetData(Type, Status, Entity, Player, ConfigRef, f);
}
public void Reset(TurnConfig config, TurnType type, TurnStatus status, Frame f = null)
{
ResetData(type, status, Entity, Player, config, f);
}
public void Reset(EntityRef entity, PlayerRef owner, Frame f = null)
{
ResetData(Type, Status, entity, owner, ConfigRef, f);
}
public void Reset(TurnConfig config, TurnType type, TurnStatus status, EntityRef entity, PlayerRef owner, Frame f = null)
{
ResetData(type, status, entity, owner, config, f);
}
private void ResetData(TurnType type, TurnStatus status, EntityRef entity, PlayerRef owner, AssetRefTurnConfig config, Frame f = null)
{
if (entity != EntityRef.None)
{
Entity = entity;
}
if (owner != PlayerRef.None)
{
Player = owner;
}
if (config != null)
{
ConfigRef = config;
}
var previousType = Type;
Type = type;
var previousStatus = Status;
Status = status;
Ticks = 0;
if (Type != previousType)
{
f?.Events.TurnTypeChanged(this, previousType);
}
if (Status != previousStatus)
{
f?.Events.TurnStatusChanged(this, previousStatus);
if (Status == TurnStatus.Active)
{
f?.Events.TurnActivated(this);
}
}
f?.Events.TurnTimerReset(this);
}
}
}
|