private static UberState createUberStateEntry(UberId id) { if (!InterOp.get_uber_state_exists(id.GroupID, id.ID)) { Randomizer.Error("cuse", $"Failed to find {id} in uber state system.", false); return(null); } byte[] buffer = new byte[256]; int len = InterOp.get_uber_state_name(id.GroupID, id.ID, buffer, buffer.Length); string name = System.Text.Encoding.ASCII.GetString(buffer, 0, len); len = InterOp.get_uber_state_group_name(id.GroupID, id.ID, buffer, buffer.Length); string groupName = System.Text.Encoding.ASCII.GetString(buffer, 0, len); var s = new UberState() { ID = id.ID, GroupID = id.GroupID, Name = name, GroupName = groupName, Type = InterOp.get_uber_state_type(id.GroupID, id.ID), }; s.Value = CreateValue(s.Type, InterOp.get_uber_state_value(id.GroupID, id.ID)); return(s); }
public static void Update() { float h = InterOp.get_uber_state_value(4, (int)BonusType.HealthRegen); if (h > 0) { InterOp.add_health(h * 0.0028f); } float e = InterOp.get_uber_state_value(4, (int)BonusType.EnergyRegen); if (e > 0) { InterOp.add_energy(e * 0.00028f); } }
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 bool Met() { var value = InterOp.get_uber_state_value(Id.GroupID, Id.ID); return(Target.HasValue ? Target.Value >= value : value > 0); }