Ejemplo n.º 1
0
    void Start()
    {
        fsm = new FSMManager <Data>();

        StateBase <Data> defreezeState = new DefreezeState(fsm);

        defreezeState.AddTransition(Transition.PressFreeze, StateID.FreezeState);
        defreezeState.AddTransition(Transition.PressReset, StateID.ResetState);

        StateBase <Data> freezeState = new FreezeState(fsm);

        freezeState.AddTransition(Transition.PressDefreeze, StateID.DefreezeState);
        freezeState.AddTransition(Transition.PressReset, StateID.ResetState);

        StateBase <Data> resetState = new ResetState(fsm);

        resetState.AddTransition(Transition.PressDefreeze, StateID.DefreezeState);
        resetState.AddTransition(Transition.PressFreeze, StateID.FreezeState);


        fsm.AddState(defreezeState);
        fsm.AddState(freezeState);
        fsm.AddState(resetState);

        fsm.InitState(freezeState);
    }
Ejemplo n.º 2
0
    void ChargeFreeze(FreezeState freeze)
    {
        int freezeManaDelta = freezeManaCapacity - freeze.GetMana();

        if (freezeManaDelta > Game.Score.GetMana())
        {
            freezeManaDelta = Game.Score.GetMana();
        }
        freeze.AddManaCharge(freezeManaDelta);
        Game.Score.AddMana(-freezeManaDelta);

        Log("Charge Freeze: DELTA=" + freezeManaDelta.ToString());
    }
Ejemplo n.º 3
0
 public void Reset()
 {
     n_RestoreDefaults();
     if (cancelControlOnReset)
     {
         GameManager.Instance.GetPlayer().GetTelekinesis().CancelTelekinesis();
         FreezeState freezeState = GetComponent <FreezeState>();
         if (freezeState != null)
         {
             freezeState.Unfreeze();
         }
     }
 }
Ejemplo n.º 4
0
    void ReleaseTarget()
    {
        if (target == null)
        {
            Log("Target Release Canceled: because no target");
            return;
        }

        Log("Target Release");
        target.GetComponent <TelekinesisInteractionTarget>().RestoreState();
        target = null;
        freeze = null;
        interactionSystem.markForTelekinesisTarget = true;
    }
Ejemplo n.º 5
0
    void Update()
    {
        // Start Telekinesis
        if (Input.GetButtonDown("Fire1"))
        {
            Log("Fire1");
            if (interactionSystem.TelekinesisTarget != null)
            {
                // Get Target, stop looking
                target = interactionSystem.TelekinesisTarget.GetComponent <Rigidbody2D>();
                interactionSystem.markForTelekinesisTarget = false;
                // Unfreeze If Frozen
                {
                    FreezeState freezeState = target.GetComponent <FreezeState>();
                    if (freezeState != null)
                    {
                        freezeState.Unfreeze();
                        Log("Unfreeze");
                    }
                }
                // Do Telekinesis thing
                AdjustRigidbodyForTelekinesis();

                costTickCounter = 0f;
                SetTelekinesisOutlineToTarget(1f, 1f);
            }
        }

        // Release Telekinesis
        if (Input.GetButtonUp("Fire1"))
        {
            Log("Released Telekinesis");
            if (target != null)
            {
                CancelTelekinesis();
            }
        }

        // Stop Freeze recharge
        if (Input.GetButtonUp("Fire2"))
        {
            Log("Released Freeze");
            ReleaseTarget();
        }

        // Get or Make Freeze
        if (Input.GetButtonDown("Fire2"))
        {
            Log("Pressed Freeze");
            TryGetTarget();

            if (target != null)
            {
                freeze = target.transform.gameObject.GetComponent <FreezeState>();
                if (freeze == null)
                {
                    if (Game.Score.GetMana() > 0)
                    {
                        freeze = ApplyFreezeToTarget();
                        ChargeFreeze(freeze);
                    }
                }
            }
        }

        // Charge Freeze
        if (Input.GetButton("Fire2"))
        {
            if (freeze != null)
            {
                if (freeze.GetMana() < freezeManaCapacity)
                {
                    ChargeFreeze(freeze);
                }
            }
        }
    }