public static void Update() { try { if (NeedsNewGameInit) { NewGameInit(); } if (!SkipListeners) { // We do ToArray here so we can change the hashset while we are looping. foreach (var state in TickingUberStates.ToArray()) { // Maybe change this to use our own cache lookup? var value = InterOp.get_uber_state_value(state.GroupID, state.ID); InterOp.set_uber_state_value(state.GroupID, state.ID, value + 1); } } if (FullSyncNextUpdate) { FullSyncNextUpdate = false; Randomizer.Client.SendBulk(SyncedUberStates.Where(uid => uid.State() != null).ToDictionary(uid => uid, (uid) => uid.State().ValueAsFloat())); var bad = SyncedUberStates.Where(uid => uid.State() == null).ToList(); foreach (var baduid in bad) { SyncedUberStates.Remove(baduid); } } while (Randomizer.Client.UberStateQueue.TryTake(out var stateUpdate)) { var(id, val) = stateUpdate.FromNet(); if (id.State().ValueAsFloat() != val) { InterOp.set_uber_state_value(id.GroupID, id.ID, val); } } } catch (Exception e) { Randomizer.Error("USC.Update", e, false); } }
public static void HandleSyncedUberStateChange(UberId id, float value) { InterOp.set_uber_state_value(id.GroupID, id.ID, value); }
public static bool Write(this UberState state, UberValue value) { state.Value = value; InterOp.set_uber_state_value(state.GroupID, state.ID, state.ValueAsFloat()); return(true); }