示例#1
0
    void Start()
    {
        LevelNumber.text = (SceneNumber + 1).ToString();
        if (SceneNumber == 0)
        {
            fade = gameObject.GetComponent <FadeTransition>();
            Debug.Log("Start");
            stateMethod = new FState(WaitForPlayButton);
            fade.Sprite.gameObject.SetActive(true);
            fade.ImmediateOpaque();

            stateMethod = new FState(WaitForPlayButton);
            DisplayStartMenu();
        }
        if (SceneNumber >= 1 && SceneNumber != 4)
        {
            Debug.Log("Start scene 2 - 3");
            stateMethod = new FState(WaitForPlayButton);
            fade.ImmediateOpaque();

            Application.LoadLevel(SceneNumber);
            //DisplayLevelMenu();
        }
        if (SceneNumber == 4)
        {
            Debug.Log("Start scene 4");
            fade.ImmediateOpaque();
            EndGameMenu.SetActive(true);
        }
    }
示例#2
0
    public void OnUpdate()
    {
        //EState frameState = states[(int)_currentEState].OnUpdate();

        EState frameState = _currentState.OnUpdate();

        if (frameState != _currentEState)
        {
            _currentState.OnEnd();
            // Troca de estado
            _currentEState = frameState;

            switch (_currentEState)
            {
            case EState.Menu:
                _currentState = new FMenu(this);
                break;

            case EState.Jogo:
                _currentState = new FGame(this);
                break;

            case EState.GameOver:
                _currentState = new FGameOver(this);
                break;

            default:
                break;
            }
            _currentState.OnBegin();
        }
    }
示例#3
0
    public void OnUpdate()
    {
        EState frameState = _state.OnUpdate();

        if (frameState != _currentEState)
        {
            _state.OnEnd();
            // Troca de estado
            _currentEState = frameState;

            switch (_currentEState)
            {
            case EState.Inicio:
                _state = new FInicio(this);
                break;

            case EState.Menu:
                _state = new FMenu(this);
                break;

            case EState.Chefe_1:
                _state = new FChefe_1(this);
                break;

            case EState.GameOver:
                _state = new FGameOver(this);
                break;

            default:
                break;
            }
            _state.OnBegin();
        }
    }
示例#4
0
 public static void F()
 {
     var s = new FState { x = 0 };
     Action<int> f = s.f;
     f(10);
     Console.WriteLine(s.x);
 }
示例#5
0
            public static void F()
            {
                var s = new FState {
                    x = 0
                };

                F_f(10, ref s);
                Console.WriteLine(s.x);
            }
示例#6
0
            public static void F()
            {
                var s = new FState {
                    x = 0
                };
                Action <int> f = s.f;

                f(10);
                Console.WriteLine(s.x);
            }
示例#7
0
 void RandomizeFinished()
 {
     if (ready)
     {
         if (fade.ToTransparent())
         {
             InitLevel();
             stateMethod = new FState(WaitForGoal);
             stateMethod();
         }
     }
 }
示例#8
0
    //Display Start Menu, wait for player to hit play button, reset play bool
    void WaitForPlayButton()
    {
        Debug.Log("Waiting for play button");

        //Display
        if (playerButtonClick)
        {
            StartMenu.SetActive(false);
            playerButtonClick = false;
            Randomize();
            stateMethod = new FState(RandomizeFinished);
        }
    }
示例#9
0
        /// <summary>
        /// Moving and rotating the object including positions of vertices, connectors, proteins.
        /// </summary>
        /// <param name="rotation">Rotation quaternion.</param>
        /// <param name="vector">Moving vector.</param>
        private void RotateAndMove(Quaternion?rotation, Vector3D?vector)
        {
            Vertices = CreateVertices(RotateAndMoveCollection(rotation, vector, Vertices), Name);

            foreach (var connector in Connectors)
            {
                connector.Positions = new ReadOnlyCollection <Point3D>(RotateAndMoveCollection(rotation, vector, connector.Positions));
            }

            foreach (var protein in Proteins)
            {
                protein.Position = RotateAndMovePoint(rotation, vector, protein.Position);
            }

            Quaternion = rotation.HasValue ? (rotation.Value * Quaternion).Normalized : Quaternion;

            // If the object is newly created, its state stays "Create" even if it is moved
            if (State != FState.Create)
            {
                State = FState.Move;
            }
        }
示例#10
0
 public StadoGame()
 {
     _currentEState = EState.Inicio;
     _state         = new FInicio(this);
 }
示例#11
0
    //private FState[] states = new FMenu[5];

    public FGameState()
    {
        _currentEState = EState.Menu;
        _currentState  = new FMenu(this);
    }
示例#12
0
        /// <summary>
        /// </summary>
        /// <param name="b"></param>
        /// <param name="snapshot"></param>
        /// <param name="serialise_individual_observables"></param>
        /// <param name="do_serialise_unobservables"></param>
        /// <param name="do_serialise_aggregated_float_array"></param>
        /// <returns></returns>
        static Offset <FState> SerialiseState(FlatBufferBuilder b,
                                              EnvironmentSnapshot snapshot,
                                              bool do_serialise_unobservables          = false,
                                              bool do_serialise_aggregated_float_array = false,
                                              bool serialise_individual_observables    = false)
        {
            var n = b.CreateString(snapshot.EnvironmentName);

            var observables_vector = _null_vector_offset;

            if (do_serialise_aggregated_float_array)
            {
                observables_vector = FState.CreateObservablesVector(b, snapshot.Observables);
            }

            var unobservables = _null_unobservables_offset;

            if (do_serialise_unobservables)
            {
                var state_unobservables = snapshot.Unobservables;
                if (state_unobservables != null)
                {
                    var bodies = state_unobservables.Bodies;

                    FUnobservables.StartBodiesVector(b, bodies.Length);
                    foreach (var rig in bodies)
                    {
                        var vel = rig.Velocity;
                        var ang = rig.AngularVelocity;
                        FBody.CreateFBody(b,
                                          vel.x,
                                          vel.y,
                                          vel.z,
                                          ang.x,
                                          ang.y,
                                          ang.z);
                    }

                    var bodies_vector = b.EndVector();

                    var poses = state_unobservables.Poses;

                    FUnobservables.StartPosesVector(b, poses.Length);
                    foreach (var tra in poses)
                    {
                        var pos = tra.position;
                        var rot = tra.rotation;
                        FQuaternionTransform.CreateFQuaternionTransform(b,
                                                                        pos.x,
                                                                        pos.y,
                                                                        pos.z,
                                                                        rot.x,
                                                                        rot.y,
                                                                        rot.z,
                                                                        rot.w);
                    }

                    var poses_vector = b.EndVector();

                    FUnobservables.StartFUnobservables(b);
                    FUnobservables.AddPoses(b, poses_vector);
                    FUnobservables.AddBodies(b, bodies_vector);
                    unobservables = FUnobservables.EndFUnobservables(b);
                }
            }

            var description_offset = new Offset <FEnvironmentDescription>();

            if (snapshot.Description != null)
            {
                description_offset = Serialise(b, snapshot);
            }

            var d = new StringOffset();

            if (snapshot.DebugMessage != "")
            {
                d = b.CreateString(snapshot.DebugMessage);
            }

            var t = b.CreateString(snapshot.TerminationReason);

            FState.StartFState(b);
            FState.AddEnvironmentName(b, n);

            FState.AddFrameNumber(b, snapshot.FrameNumber);
            if (do_serialise_aggregated_float_array)
            {
                FState.AddObservables(b, observables_vector);
            }

            if (do_serialise_unobservables)
            {
                FState.AddUnobservables(b, unobservables);
            }

            FState.AddSignal(b, snapshot.Signal);

            FState.AddTerminated(b, snapshot.Terminated);
            FState.AddTerminationReason(b, t);

            if (snapshot.Description != null)
            {
                FState.AddEnvironmentDescription(b, description_offset);
            }

            if (snapshot.DebugMessage != "")
            {
                FState.AddExtraSerialisedMessage(b, d);
            }

            return(FState.EndFState(b));
        }
示例#13
0
 void RandomizeFinished()
 {
     if(ready)
     {
         if(fade.ToTransparent())
         {
             InitLevel();
             stateMethod = new FState(WaitForGoal);
             stateMethod();
         }
     }
 }
示例#14
0
 static void F_f(int n, ref FState s) => s.x = n;
示例#15
0
 public static void F()
 {
     var s = new FState { x = 0 };
     F_f(10, ref s);
     Console.WriteLine(s.x);
 }
示例#16
0
        public static byte[] build_states(IEnumerable <EnvironmentState> states)
        {
            var b = new FlatBufferBuilder(1);

            foreach (var state in states)
            {
                var n = b.CreateString(state.EnvironmentName);

                var observables_vector = FState.CreateObservablesVector(b, state.Observables);

                var observers = new Offset <FOBS> [state.Observations.Values.Count];
                var k         = 0;
                foreach (var observer in state.Observations.Values)
                {
                    observers[k++] = build_observer(b, observer);
                }

                var observers_vector = FState.CreateObservationsVector(b, observers);

                FUnobservables.StartBodiesVector(b, state.Unobservables.Bodies.Length);
                foreach (var rig in state.Unobservables.Bodies)
                {
                    var vel = rig.Velocity;
                    var ang = rig.AngularVelocity;
                    FBody.CreateFBody(b, vel.x, vel.y, vel.z, ang.x, ang.y, ang.z);
                }

                var bodies_vector = b.EndVector();

                FUnobservables.StartPosesVector(b, state.Unobservables.Poses.Length);
                foreach (var tra in state.Unobservables.Poses)
                {
                    var pos = tra.position;
                    var rot = tra.rotation;
                    FQuaternionTransform.CreateFQuaternionTransform(b, pos.x, pos.y, pos.z, rot.x, rot.y, rot.z, rot.w);
                }

                var poses_vector = b.EndVector();

                FUnobservables.StartFUnobservables(b);
                FUnobservables.AddPoses(b, poses_vector);
                FUnobservables.AddBodies(b, bodies_vector);
                var unobservables = FUnobservables.EndFUnobservables(b);

                var description_offset = new Offset <FEnvironmentDescription>();
                if (state.Description != null)
                {
                    description_offset = build_description(b, state);
                }
                var d = new StringOffset();
                if (state.DebugMessage != "")
                {
                    d = b.CreateString(state.DebugMessage);
                }
                var t = b.CreateString(state.TerminationReason);

                FState.StartFState(b);
                FState.AddEnvironmentName(b, n);

                FState.AddFrameNumber(b, state.FrameNumber);
                FState.AddObservables(b, observables_vector);
                FState.AddUnobservables(b, unobservables);

                FState.AddTotalEnergySpent(b, state.TotalEnergySpentSinceReset);
                FState.AddSignal(b, state.Signal);

                FState.AddTerminated(b, state.Terminated);
                FState.AddTerminationReason(b, t);

                FState.AddObservations(b, observers_vector);
                if (state.Description != null)
                {
                    FState.AddEnvironmentDescription(b, description_offset);
                }
                if (state.DebugMessage != "")
                {
                    FState.AddDebugMessage(b, d);
                }
                var offset = FState.EndFState(b);

                FState.FinishFStateBuffer(b, offset);
            }

            return(b.SizedByteArray());
        }
示例#17
0
    void Start()
    {
        LevelNumber.text = (SceneNumber + 1).ToString();
        if(SceneNumber == 0)
        {
            fade = gameObject.GetComponent<FadeTransition>();
            Debug.Log("Start");
            stateMethod = new FState(WaitForPlayButton);
            fade.Sprite.gameObject.SetActive(true);
            fade.ImmediateOpaque();

            stateMethod = new FState(WaitForPlayButton);
            DisplayStartMenu();
        }
        if(SceneNumber >= 1 && SceneNumber != 4)
        {
            Debug.Log("Start scene 2 - 3");
            stateMethod = new FState(WaitForPlayButton);
            fade.ImmediateOpaque();

            Application.LoadLevel(SceneNumber);
            //DisplayLevelMenu();
        }
        if(SceneNumber == 4)
        {
            Debug.Log("Start scene 4");
            fade.ImmediateOpaque();
            EndGameMenu.SetActive(true);
        }
    }
示例#18
0
    //Button Click
    void OnResetScene()
    {
        stateMethod = new FState(ResetState);

        InitLevel();
    }
示例#19
0
 static void F_f(int n, ref FState s) => s.x = n;
示例#20
0
    //Button Click
    void OnResetScene()
    {
        stateMethod = new FState(ResetState);

        InitLevel();
    }
示例#21
0
    //Display Start Menu, wait for player to hit play button, reset play bool
    void WaitForPlayButton()
    {
        Debug.Log("Waiting for play button");

        //Display
        if(playerButtonClick)
        {
            StartMenu.SetActive(false);
            playerButtonClick = false;
            Randomize();
            stateMethod = new FState(RandomizeFinished);
        }
    }