Ejemplo n.º 1
0
        private void CalculateValues()
        {
            mStateMachin = new StateMachin();

            mHealthLoss = (0.2f * FoodHealth * 0.07f)
                        + (0.4f * Speed * 0.1f)
                        + (0.4f * TurnMomentum * 0.002f)
                        + (0.2f * SightDistance * 0.16f);

            Speed *= (float)Math.Pow(0.98f, mBugStructur.Count);
            TurnMomentum *= (float)Math.Pow(0.98f, mBugStructur.Count);
            mHealthLoss *= (float)Math.Pow(1.01f, mBugStructur.Count);

            mChildHealth = mHealthLoss * 80 * (float)Math.Pow(0.9f, mBugStructur.Count);
            mAChildHealth = mChildHealth * 2 * (float)Math.Pow(0.94f, mBugStructur.Count);

            SightDistance *= (float)Math.Pow(0.96f, Speed);

            pBrain.Speed = Speed;
            Health = 20;

            GetComponent<SphereCollider>().radius = MaxDistance();
            pGetBugDNA = GetBugDNA;

            RegisterStatetransisons();
            mStateMachin.SetToken(BugToken.Start);
        }
        private void RegisterStates()
        {
            mStateMachin = new StateMachin();

            mStateMachin.RegisterState(UIToken.BugMenuOpen, new UIState[] { UIState.Hidden }, UIState.BugMenu, BugMenuOpen);
            mStateMachin.RegisterState(UIToken.BugMenuClose, new UIState[] { UIState.BugMenu }, UIState.Hidden, BugMenuClose);
            mStateMachin.RegisterState(UIToken.ScanUIOpen, new UIState[] { UIState.BugMenu }, UIState.Scan, OpenScan);
            mStateMachin.RegisterState(UIToken.ScanUIClose, new UIState[] { UIState.Scan }, UIState.BugMenu, CloseScan);
        }
        private void RegisterStates()
        {
            mStateMachin = new StateMachin();

            mStateMachin.RegisterState(MousToken.Pickup, new MousState[] { MousState.Normal }, MousState.PickedUp, delegate { PickUp?.Invoke(); mTarget.SetTocken(BugToken.PickUp); });
            mStateMachin.RegisterState(MousToken.Drop, new MousState[] { MousState.PickedUp }, MousState.Normal, delegate { Drop?.Invoke(); mTarget.SetTocken(BugToken.Drop); });
            mStateMachin.RegisterState(MousToken.DeletBug, new MousState[] { MousState.PickedUp }, MousState.Normal, delegate { mTarget = null; });
            mStateMachin.RegisterState(MousToken.EnterInfo, new MousState[] { MousState.PickedUp }, MousState.OverInfo, null);
            mStateMachin.RegisterState(MousToken.ExitInfo, new MousState[] { MousState.OverInfo }, MousState.PickedUp, null);
            mStateMachin.RegisterState(MousToken.InfoClick, new MousState[] { MousState.OverInfo }, MousState.Scaning, delegate { OpenScan?.Invoke(); mTarget.SetTocken(BugToken.OpenScan); });
            mStateMachin.RegisterState(MousToken.InfoClick, new MousState[] { MousState.Scaning }, MousState.PickedUp, delegate { CloseScan?.Invoke(); mTarget.SetTocken(BugToken.CloseScan); });
        }
        private void RegisterStatetransisons()
        {
            mStateMachin = new StateMachin();

            mStateMachin.RegisterState(BugToken.Start, new BugState[] { BugState.Loading }, BugState.Normal, null);
            mStateMachin.RegisterState(BugToken.End, AllBugSate.GetStates, BugState.Loading, delegate { Destroy(gameObject); });
            mStateMachin.RegisterState(BugToken.PickUp, new BugState[] { BugState.Normal, BugState.Horny }, BugState.InAir, PickUp);
            mStateMachin.RegisterState(BugToken.Drop, new BugState[] { BugState.InAir, BugState.OverDelet }, BugState.Normal, Drop);
            mStateMachin.RegisterState(BugToken.EnterDelet, new BugState[] { BugState.InAir }, BugState.OverDelet, null);
            mStateMachin.RegisterState(BugToken.ExitDelet, new BugState[] { BugState.OverDelet }, BugState.InAir, null);
            mStateMachin.RegisterState(BugToken.OpenScan, new BugState[] { BugState.InAir }, BugState.Scaneing, OpenScan);
            mStateMachin.RegisterState(BugToken.CloseScan, new BugState[] { BugState.Scaneing }, BugState.InAir, CloseScan);
            mStateMachin.RegisterState(BugToken.MakeHorny, new BugState[] { BugState.Normal }, BugState.Horny, null);
            mStateMachin.RegisterState(BugToken.LoseHrony, new BugState[] { BugState.Horny }, BugState.Normal, null);
        }