Ejemplo n.º 1
0
    // metoda zjistujici nove pokyny pro pohyb robotu ze strategii, zjistuje zdali nepadl gol, updatuje cas a pohybuje scenou
    public void Tick()
    {
        //save actual situation to storage
        storage.Ball.Position           = From3Dto2D(GameBall.transform.position);
        storage.LeftRobots[0].Position  = From3Dto2D(BluePlayer1.transform.position);
        storage.LeftRobots[1].Position  = From3Dto2D(BluePlayer2.transform.position);
        storage.LeftRobots[2].Position  = From3Dto2D(BluePlayer3.transform.position);
        storage.LeftRobots[3].Position  = From3Dto2D(BluePlayer4.transform.position);
        storage.LeftRobots[4].Position  = From3Dto2D(BlueGoal.transform.position);
        storage.RightRobots[0].Position = From3Dto2D(RedPlayer1.transform.position);
        storage.RightRobots[1].Position = From3Dto2D(RedPlayer2.transform.position);
        storage.RightRobots[2].Position = From3Dto2D(RedPlayer3.transform.position);
        storage.RightRobots[3].Position = From3Dto2D(RedPlayer4.transform.position);
        storage.RightRobots[4].Position = From3Dto2D(RedGoal.transform.position);

        //*********************  LEFT ****************************
        leftStorage.Ball.Position           = storage.Ball.Position;
        leftStorage.myRobots[0].Position    = storage.LeftRobots[0].Position;
        leftStorage.myRobots[1].Position    = storage.LeftRobots[1].Position;
        leftStorage.myRobots[2].Position    = storage.LeftRobots[2].Position;
        leftStorage.myRobots[3].Position    = storage.LeftRobots[3].Position;
        leftStorage.myRobots[4].Position    = storage.LeftRobots[4].Position;
        leftStorage.oppntRobots[0].Position = storage.RightRobots[0].Position;
        leftStorage.oppntRobots[1].Position = storage.RightRobots[1].Position;
        leftStorage.oppntRobots[2].Position = storage.RightRobots[2].Position;
        leftStorage.oppntRobots[3].Position = storage.RightRobots[3].Position;
        leftStorage.oppntRobots[4].Position = storage.RightRobots[4].Position;

        //*********************  RIGHT ****************************
        rightStorage.Ball.Position           = storage.Ball.Position;
        rightStorage.myRobots[0].Position    = storage.RightRobots[0].Position;
        rightStorage.myRobots[1].Position    = storage.RightRobots[1].Position;
        rightStorage.myRobots[2].Position    = storage.RightRobots[2].Position;
        rightStorage.myRobots[3].Position    = storage.RightRobots[3].Position;
        rightStorage.myRobots[4].Position    = storage.RightRobots[4].Position;
        rightStorage.oppntRobots[0].Position = storage.LeftRobots[0].Position;
        rightStorage.oppntRobots[1].Position = storage.LeftRobots[1].Position;
        rightStorage.oppntRobots[2].Position = storage.LeftRobots[2].Position;
        rightStorage.oppntRobots[3].Position = storage.LeftRobots[3].Position;
        rightStorage.oppntRobots[4].Position = storage.LeftRobots[4].Position;

        //volanie funkci TickStrategy z DLL
        object[] leftSt  = new object[] { leftStorage };
        object[] rightSt = new object[] { rightStorage };

        MethodTickLeft.Invoke(leftInstance, leftSt);
        MethodTickRight.Invoke(rightInstance, rightSt);

        // ***********     LEFT        ***************
        //load new situation from storage and move robots
        BP1.MoveTo(From2Dto2D(leftStorage.myRobots[0].PositionMove));
        BP2.MoveTo(From2Dto2D(leftStorage.myRobots[1].PositionMove));
        BP3.MoveTo(From2Dto2D(leftStorage.myRobots[2].PositionMove));
        BP4.MoveTo(From2Dto2D(leftStorage.myRobots[3].PositionMove));
        BG.MoveTo(From2Dto2D(leftStorage.myRobots[4].PositionMove));
        //load boal position to robots
        BP1.ballPosition = From2Dto2D(leftStorage.Ball.Position);
        BP2.ballPosition = From2Dto2D(leftStorage.Ball.Position);
        BP3.ballPosition = From2Dto2D(leftStorage.Ball.Position);
        BP4.ballPosition = From2Dto2D(leftStorage.Ball.Position);
        BG.ballPosition  = From2Dto2D(leftStorage.Ball.Position);


        // ***********     RIGHT        ***************
        //load new situation from storage and move robots
        RP1.MoveTo(From2Dto2D(rightStorage.myRobots[0].PositionMove));
        RP2.MoveTo(From2Dto2D(rightStorage.myRobots[1].PositionMove));
        RP3.MoveTo(From2Dto2D(rightStorage.myRobots[2].PositionMove));
        RP4.MoveTo(From2Dto2D(rightStorage.myRobots[3].PositionMove));
        Vector2D a = new Vector2D(-rightStorage.myRobots[4].PositionMove.X, rightStorage.myRobots[4].PositionMove.Y);

        RG.MoveTo(From2Dto2D(rightStorage.myRobots[4].PositionMove));
        //load boal position to robots
        RP1.ballPosition = From2Dto2D(rightStorage.Ball.Position);
        RP2.ballPosition = From2Dto2D(rightStorage.Ball.Position);
        RP3.ballPosition = From2Dto2D(rightStorage.Ball.Position);
        RP4.ballPosition = From2Dto2D(rightStorage.Ball.Position);
        RG.ballPosition  = From2Dto2D(rightStorage.Ball.Position);


        LogToHolder();

        //************ adaptStrategy ***************
        //ak uzivatel ma v DLL adapt strategy a chce ho vyuzivat
        //left
        if (StaticVariable.leftAdaptation == true)
        {
            List <object> newRules = (List <object>)leftAdaptStrategyMethod.Invoke(leftStrategyAdaptation, new object[] { logHolder, leftInstance });

            if (newRules.Count > 0)
            {
                MethodLeftAdaptStrategy.Invoke(leftInstance, new object[] { newRules });
                Debug.Log("Added rules: " + newRules.Count);
            }
        }

        //right
        if (StaticVariable.rightAdaptation == true)
        {
            List <object> newRules = (List <object>)rightAdaptStrategyMethod.Invoke(rightStrategyAdaptation, new object[] { logHolder, rightInstance });

            if (newRules.Count > 0)
            {
                MethodRightAdaptStrategy.Invoke(rightInstance, new object[] { newRules });
                Debug.Log("Added rules: " + newRules.Count);
            }
        }
    }
Ejemplo n.º 2
0
        // Token: 0x060001D2 RID: 466 RVA: 0x000182D4 File Offset: 0x000164D4
        public void DrawMan()
        {
            ePart BPRHand = this.BodyParts[6];

            BPRHand.OriginalRotation = this.ModelRotationY * Matrix.CreateFromAxisAngle(this.ModelRotationY.Left, this.InsiderHandXRotation - 0.7853982f);
            BPRHand.Rotation        *= Matrix.CreateFromAxisAngle(this.ModelRotation.Left, this.InsiderHandXCurrRotation);
            ePart BPLHand = this.BodyParts[1];

            BPLHand.OriginalRotation      = this.ModelRotationY;
            this.InsiderHandXCurrRotation = 0f;
            bool flag = this.CamPosType == RacingCameraAngle.Back;

            checked
            {
                if (flag)
                {
                    int i = 0;

                    foreach (ModelMesh mesh in this.eType.Model.Meshes)
                    {
                        ePart BP = this.BodyParts[i];

                        foreach (Effect effect6 in mesh.Effects)
                        {
                            BasicEffect effect = (BasicEffect)effect6;
                            effect.AmbientLightColor = new Vector3((float)((double)BP.Hurt / 25.0), 0f, 0f);
                            effect.Projection        = Main.projectionMatrix;
                            effect.View  = Main.viewMatrix;
                            effect.World = Matrix.Multiply(Matrix.Multiply(this.eType.Transforms, this.BodyParts[i].Rotation), Matrix.CreateTranslation(this.BodyParts[i].RelativePosition + this.Position));
                        }

                        mesh.Draw();
                        i++;
                    }

                    bool flag2 = !Information.IsNothing(this.CTool);
                    if (flag2)
                    {
                        int b = 0;


                        foreach (ModelMesh mesh2 in this.CTool.Model.Meshes)
                        {
                            foreach (Effect effect7 in mesh2.Effects)
                            {
                                BasicEffect effect2 = (BasicEffect)effect7;
                                effect2.Projection = Main.projectionMatrix;
                                effect2.View       = Main.viewMatrix;
                                Matrix MeshTransform = this.CTool.Rotation * Matrix.CreateTranslation(this.CTool.RelativePosition + this.Position);
                                effect2.World = this.CTool.Transforms[mesh2.ParentBone.Index] * MeshTransform;
                            }
                            mesh2.Draw();
                            b++;
                        }
                    }
                }

                else
                {
                    bool flag3 = this.CamPosType == RacingCameraAngle.Inside;
                    if (flag3)
                    {
                        ModelMesh meshRHand = this.eType.Model.Meshes[6];


                        foreach (Effect effect8 in meshRHand.Effects)
                        {
                            BasicEffect effect3 = (BasicEffect)effect8;
                            effect3.AmbientLightColor = new Vector3((float)((double)BPRHand.Hurt / 25.0), 0f, 0f);
                            effect3.Projection        = Main.projectionMatrix;
                            effect3.View  = Main.viewMatrix;
                            effect3.World = this.eType.Transforms * BPRHand.Rotation * Matrix.CreateTranslation(BPRHand.RelativePosition + this.Position);
                        }


                        meshRHand.Draw();
                        ModelMesh meshLHand = this.eType.Model.Meshes[1];


                        foreach (Effect effect9 in meshLHand.Effects)
                        {
                            BasicEffect effect4 = (BasicEffect)effect9;
                            effect4.AmbientLightColor = new Vector3((float)((double)BPLHand.Hurt / 25.0), 0f, 0f);
                            effect4.Projection        = Main.projectionMatrix;
                            effect4.View  = Main.viewMatrix;
                            effect4.World = this.eType.Transforms * BPLHand.Rotation * Matrix.CreateTranslation(BPLHand.RelativePosition + this.Position);
                        }


                        meshLHand.Draw();
                        bool flag4 = !Information.IsNothing(this.CTool);
                        if (flag4)
                        {
                            int b2 = 0;


                            foreach (ModelMesh meshC in this.CTool.Model.Meshes)
                            {
                                foreach (Effect effect10 in meshC.Effects)
                                {
                                    BasicEffect effect5 = (BasicEffect)effect10;
                                    effect5.Projection = Main.projectionMatrix;
                                    effect5.View       = Main.viewMatrix;
                                    Matrix MeshTransform2 = this.CTool.Rotation * Matrix.CreateTranslation(this.CTool.RelativePosition + this.Position);
                                    effect5.World = this.CTool.Transforms[meshC.ParentBone.Index] * MeshTransform2;
                                }


                                meshC.Draw();
                                b2++;
                            }
                        }
                    }
                }

                foreach (ePart BP2 in this.BodyParts)
                {
                    BP2.Hurten(-1f);
                }
            }
        }