Пример #1
0
        public void OnPlayerUseWorldItemSecondary(object dialogResult)
        {
            WIListResult result = (WIListResult)dialogResult;

            switch (result.SecondaryResult)
            {
            case "Up":
                if (HasUpperFloor && PowerSource.HasPower && MissionCondition.CheckCondition(State.UpperFloorCondition))
                {
                    TargetElevator.SendToStopIndex(State.StopIndex + 1);
                }
                break;

            case "Down":
                if (HasLowerFloor && PowerSource.HasPower && MissionCondition.CheckCondition(State.LowerFloorCondition))
                {
                    TargetElevator.SendToStopIndex(State.StopIndex - 1);
                }
                break;

            case "Call":
                if (HasLowerFloor && PowerSource.HasPower && MissionCondition.CheckCondition(State.LowerFloorCondition))
                {
                    TargetElevator.SendToStopIndex(State.StopIndex);
                }
                break;

            default:
                break;
            }
        }
        protected IEnumerator CheckConditionOverTime()
        {
            //wait for a second because missions may need to update in response to leaving this location
            double waitUntil = Frontiers.WorldClock.AdjustedRealTime + 2.5f;

            while (Frontiers.WorldClock.AdjustedRealTime < waitUntil)
            {
                yield return(null);
            }
            //see if our mission conditions are met
            if (MissionCondition.CheckCondition(State.Condition))
            {
                //create a spawner that follows the player around
                //this will ensure that even if the location is unloaded
                //the character will still be spawned
                Player.Local.CharacterSpawner.AddSpawnRequest(State.Request);
                if (State.FinishOnSpawn)
                {
                    Finish();
                }
            }
            mCheckingConditionOverTime = false;
            yield break;
        }
Пример #3
0
        public override void PopulateOptionsList(List <WIListOption> options, List <string> message)
        {
            if (!FindElevator())
            {
                return;
            }

            if (gElevatorUpOption == null)
            {
                gElevatorUpOption = new WIListOption("Elevator Up", "Up");
                //gElevatorUpOption.ObexFont = true;

                gElevatorDownOption = new WIListOption("Elevator Down", "Up");
                //gElevatorDownOption.ObexFont = true;

                gElevatorCallOption = new WIListOption("Call Elevator", "Call");
                //gElevatorCallOption.ObexFont = true;
            }

            if (HasUpperFloor)
            {
                gElevatorUpOption.Disabled = !(PowerSource.HasPower && TargetElevator.PlayerIsOnElevator && MissionCondition.CheckCondition(State.UpperFloorCondition));
                options.Add(gElevatorUpOption);
                if (gElevatorUpOption.Disabled)
                {
                    Debug.Log("upper disabled. has power? " + PowerSource.HasPower.ToString() + " player on elevator? " + TargetElevator.PlayerIsOnElevator.ToString() + " condition? " + MissionCondition.CheckCondition(State.UpperFloorCondition).ToString() + " " + State.StopIndex.ToString());
                }
            }
            if (HasLowerFloor)
            {
                gElevatorDownOption.Disabled = !(PowerSource.HasPower && !TargetElevator.PlayerIsOnElevator && !MissionCondition.CheckCondition(State.LowerFloorCondition));
                options.Add(gElevatorDownOption);
                if (gElevatorDownOption.Disabled)
                {
                    Debug.Log("lower disabled. has power? " + PowerSource.HasPower.ToString() + " player on elevator? " + TargetElevator.PlayerIsOnElevator.ToString() + " condition? " + MissionCondition.CheckCondition(State.LowerFloorCondition).ToString() + " " + State.StopIndex.ToString());
                }
            }
            gElevatorCallOption.Disabled = !(PowerSource.HasPower && TargetElevator.CurrentStopIndex != State.StopIndex && MissionCondition.CheckCondition(State.CallElevatorCondition) && !TargetElevator.PlayerIsOnElevator);
            if (gElevatorCallOption.Disabled)
            {
                Debug.Log("call disabled. has power? " + PowerSource.HasPower.ToString() + " already on floor? " + (TargetElevator.CurrentStopIndex == State.StopIndex).ToString() + " condition? " + MissionCondition.CheckCondition(State.CallElevatorCondition).ToString() + " " + State.StopIndex.ToString());
            }
            options.Add(gElevatorCallOption);

            gElevatorUpOption.Disabled   = false;
            gElevatorDownOption.Disabled = false;
            gElevatorCallOption.Disabled = false;
        }