示例#1
0
 public void OnEnter(IContext context)
 {
     _onButtonStateEnter.Raise(this);
     CurrentTimeToLive  = TTL;
     CurrentTimeToPress = TTP;
     ButtonScoreValue   = 0;
 }
示例#2
0
    public void InteractionReponse(Object[] args)
    {
        var container_data = new ContainerEventData();

        container_data.Init(container_runtime);
        Container_Open.Raise(gameObject, container_data);
    }
示例#3
0
    public void UpdateState(IContext context)
    {
        CurrentTimeToLive -= Time.deltaTime;

        if (CurrentTimeToLive < TTL - PressBufferMax)
        {
            CurrentTimeToPress -= Time.deltaTime;
        }

        var maxcheck = CurrentTimeToLive < TTL - PressBufferMax;
        var mincheck = CurrentTimeToPress > 0;

        ShouldPress.Value = maxcheck && mincheck ? "yes" : "no";

        if (ButtonPressed || ButtonFinished)
        {
            if (Result)
            {
                _onButtonStateSuccess.Raise(this, context as ButtonPressContext);
                ButtonScoreValue = 1;
            }
            else
            {
                _onButtonStateFailure.Raise(this, context as ButtonPressContext);
            }

//            var numstates = ((ButtonPressContext)context).ButtonPressStates.Count;
//            var turncount = ((ButtonPressContext)context).TurnCount;
//            var nextCount = (turncount + 1) % numstates;
//            var stateindex = Random ? UnityEngine.Random.Range(0, 4) : nextCount;

            context.ChangeState(((ButtonPressContext)context).NextState);
        }
    }
 private void OnTriggerStay(Collider other)
 {
     if (other.CompareTag(ListenerTag.Value))
     {
         onStay.Raise(gameObject, other.gameObject);
     }
 }
示例#5
0
 private void OnCollisionEnter(Collision other)
 {
     if (other.gameObject.tag == "Player")
     {
         ReachedCheckPoint.Raise(ReachItem);
         Destroy(gameObject);
     }
 }
    public void InteractionSet(Object actor)
    {
        InteractorGameObject = actor as GameObject;
        Interactor           = (InteractorGameObject != null) ? InteractorGameObject.GetComponent <IInteractor>() : null;
        Interactor.SetInteraction(this);

        EventInteraction_Set.Raise(gameObject, actor);
    }
示例#7
0
    private void Update()
    {
        switch (GetComponent <Transform>().tag)
        {
        case "P1":
            if (stats.GetStat("PExperience").Value >= 100)
            {
                LevelUpEvent.Raise(this);
                stats.GetStat("PExperience").Value -= 100;
                stats.GetStat("PLevel").Value++;
                UpdateStat();
            }
            break;

        case "P2":
            if (stats.GetStat("PExperience 1").Value >= 100)
            {
                LevelUpEvent.Raise(this);
                stats.GetStat("PExperience 1").Value -= 100;
                stats.GetStat("PLevel 1").Value++;
                UpdateStat();
            }
            break;

        case "P3":
            if (stats.GetStat("PExperience 2").Value >= 100)
            {
                LevelUpEvent.Raise(this);
                stats.GetStat("PExperience 2").Value -= 100;
                stats.GetStat("PLevel 2").Value++;
                UpdateStat();
            }
            break;

        case "P4":
            if (stats.GetStat("PExperience 3").Value >= 100)
            {
                LevelUpEvent.Raise(this);
                stats.GetStat("PExperience 3").Value -= 100;
                stats.GetStat("PLevel 3").Value++;
                UpdateStat();
            }
            break;
        }
    }
    public void OnPlayerNameEntered(object[] args)
    {
        var sender     = args[0];
        var playerName = args[1].ToString();

        if (sender == null)
        {
            return;
        }

        if (RadialSlider.SliderValue < 100)
        {
            InvalidBudgetAmountEvent.Raise(this);
            return;
        }

        var player = new PlayerObject()
        {
            Inputs            = SliderManagers.Select(sm => sm.mainSlider.value).ToList(),
            Name              = playerName,
            ResultsDictionary = new Dictionary <string, List <float> >()
        };

        var sliderindex = 0;

        sliderInputs = SliderManagers.Select(s => s.mainSlider.value).ToList();
        foreach (var formula in FormulaContainerRef.Formulas)
        {
            if (sliderindex < 4)
            {
                formula.input = sliderInputs[sliderindex];
                sliderindex++;
            }

            formula.Calculate();
            player.ResultsDictionary.Add(formula.name, formula.Results);
        }

        player.values = new List <List <float> >();
        foreach (var value in player.ResultsDictionary)
        {
            player.values.Add(value.Value);
        }


        sPlayers.Add(player);

        if (sPlayers.Count >= playerCount)
        {
            InputComplete.Raise(this);
        }
        else
        {
            OnSuccessfulNameEntered.Invoke();
        }
    }
示例#9
0
    private void Start()
    {
        if (_inputField == null)
        {
            _inputField = GetComponent <TMP_InputField>();
        }


        _inputField.onSubmit.AddListener((s) => OnEndEditEvent.Raise(new object[] { this, s }));
    }
 public void InteractionRelease()
 {
     if (Interactor != null)
     {
         Interactor.ReleaseInteraction(this);
     }
     InteractorGameObject = null;
     Interactor           = null;
     EventInteraction_Released.Raise(gameObject, InteractorGameObject);
 }
    public void ChangeState(IState next)
    {
        ButtonPressStates.ForEach(x => x.TTL            = _timeToLive);
        ButtonPressStates.ForEach(x => x.TTP            = _timeToPress);
        ButtonPressStates.ForEach(x => x.Random         = _random);
        ButtonPressStates.ForEach(x => x.PressBufferMax = _pressBufferMax);

        CurrentState.OnExit(this);
        _currentTransitionTime = _timeToTransition;
        _onContextTimerStart.Raise(this);
        TurnCount++;
        CurrentState = next;
        CurrentState.OnEnter(this);
    }
示例#12
0
    public void OnItemPickUp(params Object[] args)
    {
        var sender = args[0] as GameObject;
        var item   = args[1] as Item;

        if (sender == null)
        {
            return;
        }

        if (container_runtime.AddContent(item) == true)
        {
            Debug.Log("Added " + item.Name + " to inventory");
            Item_Added.Raise(sender, item);
        }
    }
示例#13
0
 private void Open()
 {
     if (opened)
     {
         //close it
         opened = false;
         Inventory_Closed.Raise(gameObject);
     }
     else
     {
         //open it
         opened = true;
         var data = ScriptableObject.CreateInstance <ContainerEventData>().Init(container_runtime);
         Inventory_Opened.Raise(data);
     }
 }
    public void ResetContext()
    {
        TurnCount  = 0;
        TotalScore = 0;
        COMPLETE   = false;
        ButtonPressStateIndices = new List <int>();

        for (var i = 0; i < _maxTurns; ++i)
        {
            ButtonPressStateIndices.Add(UnityEngine.Random.Range(0, ButtonPressStates.Count));
        }

        CurrentState = ButtonPressStates[ButtonPressStateIndices[TurnCount]];
        CurrentState.OnEnter(this);

        _currentTransitionTime = _timeToTransition;
        SequenceInfo.IntervalStringVariable.Value = _currentTransitionTime.ToString();
        _onContextReset.Raise(this);
    }
    public void UpdateContext()
    {
        SequenceInfo.TimeToLiveStringVariable.Value  = ((ButtonPressObject)CurrentState).CurrentTimeToLive.ToString();
        SequenceInfo.TimeToPressStringVariable.Value = ((ButtonPressObject)CurrentState).CurrentTimeToPress.ToString();
        SequenceInfo.CurrentStateName.Value          = ((ButtonPressObject)CurrentState).name;

        if (TurnCount >= _maxTurns)
        {
            if (COMPLETE)
            {
                return;
            }

            COMPLETE = true;
            SequenceInfo.CurrentStateName.Value = "Finished with score of " + TotalScore;
            _onContextFinished.Raise(this);
            return;
        }

        //we do not update the current state when the transition is counting down
        //should look for a better way to do this since we can not have a 0 interval transition
        if (_currentTransitionTime > 0)
        {
            var newInterval = _currentTransitionTime - Time.deltaTime;
            if (newInterval < 0)
            {
                _currentTransitionTime = _timeToTransition;
                newInterval            = 0;
                _onContextTimerEnd.Raise(this);
            }
            _currentTransitionTime = newInterval;
            SequenceInfo.CurrentStateName.Value       = "Waiting...";
            SequenceInfo.IntervalStringVariable.Value = _currentTransitionTime.ToString();
            return;
        }

        CurrentState.UpdateState(this);
    }
    /// <summary>
    /// </summary>
    /// <param name="args"></param>
    public void onContextTimerEnd(Object[] args)
    {
        var sender = args[0] as ButtonPressContext;

        if (sender == null)
        {
            return;
        }
        var currentState = sender.CurrentState as ButtonPressObject;

        if (currentState != _buttonState)
        {
            return;
        }

        ContextTimerEndResponse.Invoke();

        if (RandomPosition)
        {
            if (MoveInCamera)
            {
                var x      = Random.Range(0f, 1f);
                var y      = Random.Range(0f, 1f);
                var z      = Random.Range(3f, DistanceFromCamera);
                var newPos = new Vector3(x, y, 3);
                gameObject.MoveInCamera(newPos);
            }
            else
            {
                var canvas = GetComponentInParent <Canvas>();
                var rect   = canvas.GetComponent <RectTransform>().rect;
                gameObject.MoveObject(rect.width, rect.height);
            }
        }

        OnButtonGameObjectPositionChange.Raise(ButtonTransform.gameObject);
    }
示例#17
0
    /// <summary>
    ///     Successful valid state change raise events and invoke unity events
    /// </summary>
    /// <param name="state"></param>
    private void ChangeState(ObjectiveStatus state)
    {
        Status = state;
        QuestChange.Raise(this);
        switch (Status)
        {
        case ObjectiveStatus.None:
            break;

        case ObjectiveStatus.Inactive:
            QuestStart.Raise(this);
            break;

        case ObjectiveStatus.Active:
            break;

        case ObjectiveStatus.Complete:
            QuestComplete.Raise(this);
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
示例#18
0
    public void OnExit(IContext context)
    {
        ((ButtonPressContext)context).TotalScore += ButtonScoreValue;

        _onButtonStateExit.Raise(this);
    }
 public void InteractionEnd(Object actor)
 {
     EventInteraction_End.Raise(gameObject, InteractorGameObject);
 }
 public void InteractionBegin(Object token)
 {
     UnityEngine.Assertions.Assert.IsNotNull(Interactor);
     BeginResponse.Invoke(new[] { gameObject, InteractorGameObject, token });
     EventInteraction_Begin.Raise(gameObject);
 }
 public void OnButtonClick()
 {
     SubmitButtonClicked.Raise(this);
 }
示例#22
0
 public void ChangeSceneEvent(string sceneName)
 {
     ButtonCLickEvent.Raise();
     SceneManager.LoadScene(sceneName);
 }
示例#23
0
 public void OnPhysicsTriggerEnter(Object[] args)
 {
     Container.AddContent(obj: Item);
     ItemPickedUp.Raise(Item);
     Destroy(obj: gameObject);
 }
示例#24
0
 public void ChangeSceneEvent(params Object[] args)
 {
     ButtonClickEvent.Raise(this);
     SceneManager.LoadScene("");
 }
示例#25
0
    private void OnCollisionEnter(Collision other)
    {
        switch (other.gameObject.tag)
        {
        case "P1":
        {
            ItemPickedUp.Raise(Item, this.gameObject);
            var ib     = other.gameObject.GetComponent <IStorageable>();
            var player = other.gameObject.transform.parent.gameObject.GetComponentInChildren <Canvas>().GetComponentInChildren <InventoryText>();
            SwitchCheck(player);
            ib.AddToInventory(Item, gameObject);
            ItemObjectPooler.s_instance.Destroy(gameObject);
            break;
        }

        case "P2":
        {
            ItemPickedUp1.Raise(Item, this.gameObject);
            var ib1    = other.gameObject.GetComponent <IStorageable>();
            var player = other.gameObject.transform.parent.gameObject.GetComponentInChildren <Canvas>().GetComponentInChildren <InventoryText>();
            SwitchCheck(player);
            ib1.AddToInventory(Item, gameObject);
            ItemObjectPooler.s_instance.Destroy(gameObject);
            break;
        }

        case "P3":
        {
            ItemPickedUp2.Raise(Item, this.gameObject);
            var ib2    = other.gameObject.GetComponent <IStorageable>();
            var player = other.gameObject.transform.parent.gameObject.GetComponentInChildren <Canvas>().GetComponentInChildren <InventoryText>();
            SwitchCheck(player);
            ib2.AddToInventory(Item, gameObject);
            ItemObjectPooler.s_instance.Destroy(gameObject);
            break;
        }

        case "P4":
        {
            ItemPickedUp3.Raise(Item, this.gameObject);
            var ib3    = other.gameObject.GetComponent <IStorageable>();
            var player = other.gameObject.transform.parent.gameObject.GetComponentInChildren <Canvas>().GetComponentInChildren <InventoryText>();
            SwitchCheck(player);
            ib3.AddToInventory(Item, gameObject);
            ItemObjectPooler.s_instance.Destroy(gameObject);
            break;
        }
        }

        var mc = other.gameObject.GetComponent <MeshCollider>();

        if (!mc)
        {
            return;
        }
        if (mc.sharedMesh != this.GetComponent <MeshCollider>().sharedMesh)
        {
            this.GetComponent <Rigidbody>().drag = 50f;
            TimeOffSurface = 0;
            StopCoroutine("OffPlanet");
        }
    }