Пример #1
0
        public void Update(IInvalidator invalidator, LiveSplitState state, float width, float height, LayoutMode mode)
        {
            _mem.Hook();
            if (!_mem.IsHooked)
            {
                return;
            }

            if (_model.CurrentState.CurrentSplitIndex == -1)
            {
                CheckStart();
                return;
            }

            if (_mem.GetGameState() != GameState.Playing)
            {
                return;
            }

            if (_settings.RandomizeSkins && !_playerRandomized)
            {
                _mem.RandomizePlayerAppearance(0);
                _playerRandomized = true;
            }

            CheckItemSplits();

            // TODO: Generic enemy kill split system
            // Unspeakable Deep
            int len = _mem.GetCharCount();

            for (int i = 0; i < len; i++)
            {
                if (_mem.GetCharType(i) != EnemyType.Leviathon || _mem.GetCharHealth(i) <= 0f ||
                    _enemyTrackers.Any(tracker => tracker.CharType == EnemyType.Leviathon))
                {
                    continue;
                }

                _enemyTrackers.Add(new EnemyHealthTracker(_mem, i));
            }

            CheckCharKills();

            if (_model.CurrentState.CurrentSplitIndex == _model.CurrentState.Run.Count - 1 && _mem.IsGameEnding())
            {
                _model.Split();
            }
        }
Пример #2
0
        public static void Main()
        {
            using SaltMemory mem = new SaltMemory();

            while (!mem.IsHooked)
            {
                mem.Hook();
            }

            string anim = mem.GetPlayerAnim(0);

            while (true)
            {
                Thread.Sleep(10);
                string newAnim = mem.GetPlayerAnim(0);

                if (anim != newAnim)
                {
                    anim = newAnim;
                    Console.WriteLine(anim);
                }
            }
        }