コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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); }
        }
コード例 #4
0
        public bool Met()
        {
            var value = InterOp.get_uber_state_value(Id.GroupID, Id.ID);

            return(Target.HasValue ? Target.Value >= value : value > 0);
        }