public static void SyncState(GameSession session, SyncStateData data) { SyncStateData sData; if (_syncStateDic.TryGetValue(session, out sData)) { _syncStateDic[session] = data; } else { _syncStateDic.Add(session, data); } var syncStateDataSet = GetSyncStateDataSet(); var buffer = PackCastPackage(CastID.SyncPlayerState, syncStateDataSet); foreach (var sync in _syncStateDic) { if (sync.Key == session) { continue; } SendCast(sync.Key, buffer); } }
public override void Startup() { _state = new SyncStateData(this); _button = RegisterButton(this, "Progress", true, ShowSyncState, ZPushBehaviour.None); _button.DataProvider = _state; // Add a sync task to start checking. If this finds it's not fully synchronised, it will check more often _task = Watcher.Sync.AddTask(this, Name, CheckSyncState); }
public override bool TakeAction() { var syncData = new SyncStateData() { UserId = Current.UserId, State = _stateData.State }; DispatchCast.Send(new CastSyncPlayerState(Current, syncData)); return(true); }
public CastSyncPlayerState(GameSession session, SyncStateData data) { _session = session; _data = data; }