예제 #1
0
        public void Initialize(FezSettings settings)
        {
            CurrentLevel = 0;
            NextLevel    = 0;
            isLoading    = false;
            inDoor       = false;

            //set splits
            splits = new InfoList();
            splits.AddRange(DefaultInfo.BaseSplits);

            foreach (var _setting in settings.CheckedSplits)
            {
                if (!_setting.isEnabled)
                {
                    splits.Remove(splits[_setting.Name]);
                }
            }
        }
예제 #2
0
        public bool doSplit(Process game)
        {
            data.UpdateAll(game);

            //check for loading
            byte _load = Convert.ToByte(data["TimerBool"].Current);

            if (_load == 0 && isLoading == false)
            {
                LoadStart?.Invoke(this, EventArgs.Empty);
                isLoading = true;
            }
            else if (_load == 1 && isLoading == true)
            {
                LoadEnd?.Invoke(this, EventArgs.Empty);
                isLoading = false;
            }

            //check for update to room
            byte _door = Convert.ToByte(data["DoorEnter"].Current);

            if (_door == 1 && inDoor == false)
            {
                NextLevel = Convert.ToInt32(data["DoorDest"].Current);
                inDoor    = true;
            }
            else if (_door == 0 && inDoor == true)
            {
                CurrentLevel = NextLevel;
                inDoor       = false;
            }

            //check for splits
            foreach (var _split in splits)
            {
                int count = 0;
                foreach (var _trigger in _split.Triggers)
                {
                    if (_trigger.Key == "CurrentLevel")
                    {
                        if (CurrentLevel == _trigger.Value)
                        {
                            count++;
                        }
                    }
                    else if (_trigger.Key == "NextLevel")
                    {
                        if (NextLevel == _trigger.Value)
                        {
                            count++;
                        }
                    }
                    else
                    {
                        int _int = Convert.ToInt32(data[_trigger.Key].Current);

                        if (_int == _trigger.Value)
                        {
                            count++;
                        }
                    }
                }

                if (count == _split.Triggers.Count)
                {
                    splits.Remove(_split);
                    return(true);
                }
            }

            return(false);
        }