Пример #1
0
        public RacePlayer(Ball ball)
        {
            sr = StageReferences.Active;

            lap = 1;

            ball.CanMove           = false;
            ball.CheckpointPassed += Ball_CheckpointPassed;
            ball.RespawnRequested += Ball_RespawnRequested;
            if (ball.isLocalPlayer)
            {
                ball.SwitchCamerasEvent += Ball_SwitchCameraRequest;
            }

            currentCheckpointPos = sr.checkpoints[0].transform.position;
            this.ball            = ball;

            ball.CameraCreatedEvent += (sender, e) =>
            {
                ballCamera    = e.CameraCreated2;
                oldBallCamera = e.OldCamera2;
                newBallCamera = e.NewCamera2;

                ballCamera.SetDirection(sr.checkpoints[0].transform.rotation);
            };

            checkpointTimes = new float[StageReferences.Active.checkpoints.Length];

            SetNextCheckpoint();
        }
Пример #2
0
        public RacePlayer(Ball ball, MatchMessenger matchMessenger, MatchPlayer associatedMatchPlayer)
        {
            sr = StageReferences.Active;

            this.matchMessenger        = matchMessenger;
            this.associatedMatchPlayer = associatedMatchPlayer;
            matchMessenger.CreateListener <CheckpointPassedMessage>(CheckpointPassedHandler);
            matchMessenger.CreateListener <RaceTimeoutMessage>(RaceTimeoutHandler);

            lap = 1;

            ball.CanMove           = false;
            ball.AutoBrake         = true;
            ball.CheckpointPassed += Ball_CheckpointPassed;
            ball.RespawnRequested += Ball_RespawnRequested;
            currentCheckpointPos   = sr.checkpoints[0].transform.position;
            this.ball              = ball;

            ball.CameraCreated += (sender, e) =>
            {
                ballCamera = e.CameraCreated;
                ballCamera.SetDirection(sr.checkpoints[0].transform.rotation);
            };

            checkpointTimes = new float[StageReferences.Active.checkpoints.Length];

            SetNextCheckpoint();
        }
Пример #3
0
        private void Ball_SwitchCameraRequest(object sender, EventArgs e)
        {
            if (ballCamera == oldBallCamera.GetComponent <IBallCamera>())
            {
                Cursor.lockState = CursorLockMode.None;
                Cursor.visible   = true;
                oldBallCamera.GetComponent <PivotCamera>().UseMouse = false;

                newBallCamera.SetActive(true);
                oldBallCamera.SetActive(false);
                ActiveData.GameSettings.useOldControls = false;

                ballCamera = newBallCamera.GetComponent <IBallCamera>();
            }
            else if (ballCamera == newBallCamera.GetComponent <IBallCamera>())
            {
                Cursor.lockState = CursorLockMode.Locked;
                Cursor.visible   = false;
                oldBallCamera.GetComponent <PivotCamera>().UseMouse = true;


                newBallCamera.SetActive(false);
                oldBallCamera.SetActive(true);
                ActiveData.GameSettings.useOldControls = true;;


                oldBallCamera.GetComponent <PivotCamera>().SetDirection(ballCamera.AttachedCamera.transform.rotation);
                oldBallCamera.GetComponent <PivotCamera>().AttachedCamera.transform.position = ballCamera.AttachedCamera.transform.position;

                ballCamera = oldBallCamera.GetComponent <IBallCamera>();
            }
        }
Пример #4
0
        private void Ball_SwitchCameraRequest(object sender, EventArgs e)
        {
            if (ballCamera == oldBallCamera.GetComponent <IBallCamera>())
            {
                Cursor.lockState = CursorLockMode.None;
                Cursor.visible   = true;
                oldBallCamera.GetComponent <PivotCamera>().UseMouse = false;

                newBallCamera.SetActive(true);
                oldBallCamera.SetActive(false);
                ActiveData.GameSettings.useOldControls = false;


//				newBallCamera.GetComponent<OmniCamera>().SetDirection(ballCamera.AttachedCamera.transform.rotation) ;

//				newBallCamera.GetComponent<Camera>().transform.rotation= ballCamera.AttachedCamera.transform.rotation;

                ballCamera = newBallCamera.GetComponent <IBallCamera>();
            }
            else if (ballCamera == newBallCamera.GetComponent <IBallCamera>())
            {
                Cursor.lockState = CursorLockMode.Locked;
                Cursor.visible   = false;
                oldBallCamera.GetComponent <PivotCamera>().UseMouse = true;


                newBallCamera.SetActive(false);
                oldBallCamera.SetActive(true);
                ActiveData.GameSettings.useOldControls = true;


                oldBallCamera.GetComponent <PivotCamera>().SetDirection(ballCamera.AttachedCamera.transform.rotation);
                oldBallCamera.GetComponent <PivotCamera>().AttachedCamera.transform.position = ballCamera.AttachedCamera.transform.position;


                ballCamera = oldBallCamera.GetComponent <IBallCamera>();
            }
//				oldBallCamera
            Debug.Log("Quiero cambiar mi camara... pero mi mama no me deja");
        }
Пример #5
0
 public CameraCreationArgs(IBallCamera cameraCreated)
 {
     CameraCreated = cameraCreated;
 }
Пример #6
0
        private void Start()
        {
            if (!isLocalPlayer && !isServer)
            {
                Up = Vector3.up;
                //Set up drifty smoke
//	            smoke = Instantiate(prefabs.Smoke);
//	            smoke.target = this;
//	            smoke.DriftAudio = sounds.Brake;

                //Grab reference to Rigidbody
                rb = GetComponent <Rigidbody>();
                //Set angular velocity (This is necessary for fast)
                rb.maxAngularVelocity = 1000f;

                //Set object name

                gameObject.name = nickname;

                //Set character
                if (CharacterId >= 0 && CharacterId < Data.ActiveData.Characters.Length)
                {
                    SetCharacter(Data.ActiveData.Characters[CharacterId]);
                }

                //Create objects and components based on ball type
                if (type == BallType.Player && cameraBall == null && isLocalPlayer)

                {
                    OmniCamera newCam = Instantiate(prefabs.Camera);
                    newCam.Target   = rb;
                    newCam.CtrlType = ctrlType;
                    PivotCamera oldCam = Instantiate(prefabs.OldCamera);
                    oldCam.Target   = rb;
                    oldCam.CtrlType = ctrlType;

                    //Create camera
                    if (Data.ActiveData.GameSettings.useOldControls)
                    {
                        cameraBall = oldCam;
                        newCam.gameObject.SetActive(false);

                        ((PivotCamera)cameraBall).UseMouse = ctrlType == ControlType.Keyboard;
                    }
                    else
                    {
                        cameraBall = newCam;
                        oldCam.gameObject.SetActive(false);
                    }
                    cameraBall.Target   = rb;
                    cameraBall.CtrlType = ctrlType;

                    if (CameraCreatedEvent != null)
                    {
                        CameraCreatedEvent(this, new CameraCreationArgs(cameraBall, oldCam.gameObject, newCam.gameObject));
                    }
                }
                if (type == BallType.LobbyPlayer)
                {
                    //Make the lobby camera follow this ball
                    var cam = FindObjectOfType <LobbyCamera>();
                    if (cam)
                    {
                        cam.AddBall(this);
                    }
                }
                if ((type == BallType.Player || type == BallType.LobbyPlayer) && isLocalPlayer && input == null)
                {
                    //Create input component
                    input = gameObject.AddComponent <BallControlInput>();
                }
                if (type == BallType.AI)
                {
                }
            }
        }
Пример #7
0
        public void RpcInit(BallType type, ControlType ctrlType, int characterId, string nickname)
        {
            this.type        = type;
            this.ctrlType    = ctrlType;
            this.characterId = characterId;
            this.nickname    = nickname;


            Debug.Log("We re running RPCInit character is _ " + this.characterId);

            Up = Vector3.up;

            //Set up drifty smoke
            smoke            = Instantiate(prefabs.Smoke);
            smoke.target     = this;
            smoke.DriftAudio = sounds.Brake;

            //Grab reference to Rigidbody
            rb = GetComponent <Rigidbody>();
            //Set angular velocity (This is necessary for fast)
            rb.maxAngularVelocity = 1000f;

            //Set object name
            gameObject.name = nickname;

            //Set character
            if (CharacterId >= 0 && CharacterId < Data.ActiveData.Characters.Length)
            {
                SetCharacter(Data.ActiveData.Characters[CharacterId]);
            }

            //Create objects and components based on ball type
            if (type == BallType.Player && cameraBall == null && isLocalPlayer)
            {
                OmniCamera newCam = Instantiate(prefabs.Camera);
                newCam.Target   = rb;
                newCam.CtrlType = ctrlType;
                PivotCamera oldCam = Instantiate(prefabs.OldCamera);
                oldCam.Target   = rb;
                oldCam.CtrlType = ctrlType;

                //Create camera
                if (Data.ActiveData.GameSettings.useOldControls)
                {
                    cameraBall = oldCam;
                    newCam.gameObject.SetActive(false);

                    ((PivotCamera)cameraBall).UseMouse = ctrlType == ControlType.Keyboard;
                }
                else
                {
                    cameraBall = newCam;
                    oldCam.gameObject.SetActive(false);
                }
                cameraBall.Target   = rb;
                cameraBall.CtrlType = ctrlType;

                if (CameraCreatedEvent != null)
                {
                    CameraCreatedEvent(this, new CameraCreationArgs(cameraBall, oldCam.gameObject, newCam.gameObject));
                }
            }
            if (type == BallType.LobbyPlayer)
            {
                //Make the lobby camera follow this ball
                var cam = FindObjectOfType <LobbyCamera>();
                if (cam)
                {
                    cam.AddBall(this);
                }
            }
            if ((type == BallType.Player || type == BallType.LobbyPlayer && isLocalPlayer) && input == null)
            {
                //Create input component
                input = gameObject.AddComponent <BallControlInput>();
            }
            if (type == BallType.AI)
            {
                //Create AI component
                var ai = gameObject.AddComponent <BallControlAI>();
                ai.pathToFollow = FindObjectOfType <Path>();

                //Create target for the AI
                AITarget pFollower = Instantiate(prefabs.AiTarget);
                pFollower.GetComponent <PathFollower>().path = ai.pathToFollow;
                pFollower.stupidness = ai.stupidness;
                pFollower.GetComponent <Patroller>().target = gameObject;
                ai.target = pFollower;
            }

            if (!isServer)
            {
            }
        }
Пример #8
0
 public CameraCreationArgs(IBallCamera cameraCreated, GameObject oldCamera, GameObject newCamera)
 {
     CameraCreated2 = cameraCreated;// aqui usamos el private set...
     OldCamera2     = oldCamera;
     NewCamera2     = newCamera;
 }