예제 #1
0
    // Use this for initialization
    void Start()
    {
        _race  = RaceController.Locate();
        _myCar = _race.MyCar;

        UpdateRank();
    }
예제 #2
0
    private void CreateCar()
    {
        int       pos       = (int)PhotonNetwork.player.CustomProperties["spawn"];
        int       carNumber = (int)PhotonNetwork.player.CustomProperties["car"];
        Transform spawn     = spawnPoints[pos];

        GameObject car = PhotonNetwork.Instantiate("Car" + carNumber, spawn.position, spawn.rotation, 0);

        race = car.GetComponent <RaceController>();

        //이게 되나? 적용된 스크립트 프리팹
        car.GetComponent <RaceController>().currentRanking = pos + 1;

        cameraControl.target = car.transform;

        car.GetComponent <CarGUI>().enabled     = true;
        car.GetComponent <CarGUI>().lapGUI      = lapText;
        car.GetComponent <CarGUI>().rankingGUI  = rankingText;
        car.GetComponent <CarGUI>().speedGUI    = speedText;
        car.GetComponent <CarGUI>().messagesGUI = countdownText;

        //car.GetComponent<WeaponManager>().weaponImageGUI = weaponImageGUI;
        //car.GetComponent<WeaponManager>().weaponTextGUI = weaponTextGUI;

        //car.GetComponent<CarGUI>().SendColor(Color.black);
    }
예제 #3
0
    public void StartRace(bool raceIsInProgress)
    {
        raceController = GameObject.Find("RaceController").GetComponent <RaceController>();

        CreateRacers(raceController);
        //Set up the race controller with settings from the menu
        raceController.settings = settings;
        CameraOverview overviewCam = FindObjectOfType <CameraOverview>();

        if (overviewCam != null)
        {
            overviewCam.camera.enabled = false;
            overviewCam.GetComponent <AudioListener>().enabled = false;
        }
        if (!raceIsInProgress)
        {
            raceController.StartRace();
        }
        //GameObject.Find ("CameraMap").GetComponent<MapCamera>().targetObject = GameObject.Find ("CameraPivot_BallPlayer_Sanic(Clone)");
        GameObject.Find("CameraMap").camera.enabled = true;
        GameSettings.Apply(false);
        if (raceIsInProgress)
        {
            GameObject.FindObjectOfType <Client>().GoToSpectating();
            GameObject.FindObjectOfType <MenuPause>().spectating = true;
        }
        Destroy(this.gameObject);
    }
    public int GetUniqueID(RaceController theRaceController)
    {
        // whenever an id is requested, we increment the ID counter. this value never gets reset, so it should always
        // return a unique id (NOTE: these are unique to each race)
        currentID++;

        // now set up some default data for this new player

        // this player will be on its first lap
        raceLaps.Add(currentID, 1);

        // this player will be in last position
        racePositions.Add(currentID, racePositions.Count + 1);

        // store a reference to the race controller, to talk to later
        raceControllers.Add(currentID, theRaceController);

        // default finished state
        raceFinished[currentID] = false;

        // increment our racer counter so that we don't have to do any counting or lookup whenever we need it
        numberOfRacers++;

        // pass this id back out for the race controller to use
        return(currentID);
    }
예제 #5
0
    void OnServerInitialized()
    {
        var paintbrush = Network.Instantiate(paintbrushPrefab, Vector3.zero, Quaternion.identity, 0) as GameObject;

        paintbrush.transform.SetParent(transform, false);

        race      = paintbrush.GetComponent <RaceController>();
        race.Laps = GamePresets.Laps;

        SpawnPlayer();

        var brush = paintbrush.GetComponent <PaintBrush>();

        var mapSize = Ruler.Measure();

        if (GamePresets.Colorful)
        {
            for (int i = 0; i < initialSplashes; i++)
            {
                brush.Paint(
                    Random.insideUnitSphere * mapSize.x / 2,
                    initialSplashColors[Random.Range(0, initialSplashColors.Length)],
                    Random.Range(
                        (int)(initialSplashSize.x * PaintBrush.SCALE_FACTOR),
                        (int)(initialSplashSize.y * PaintBrush.SCALE_FACTOR)
                        )
                    );
            }
        }
    }
예제 #6
0
        public void CreatePost_SaveThroughRepository_WhenModelStateIsValid()
        {
            // Arrange
            var mockRepo = new Mock <IRaceRepository>();

            mockRepo.Setup(repo => repo.Save(It.IsAny <Race>()))
            //.Returns(Task.CompletedTask)
            .Verifiable();
            var  controller = new RaceController(mockRepo.Object);
            Race r          = new Race()
            {
                Name        = "Human",
                Description = "Don't listen to scientists"
            };

            // Act
            var result = controller.Create(r);

            // Assert
            var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Null(redirectToActionResult.ControllerName);
            Assert.Equal("Index", redirectToActionResult.ActionName);
            mockRepo.Verify();
        }
        private void jumpToRestartLocation()
        {
            GameObject     localPlayerGameObject = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject;
            Vector3        raceRestartPosition   = tubeRaceDefinition.RaceRestartPosition;
            RaceController component             = localPlayerGameObject.GetComponent <RaceController>();

            if (component != null)
            {
                component.setControlsEnabled(enabled: true);
            }
            LocomotionTracker component2 = localPlayerGameObject.GetComponent <LocomotionTracker>();

            if (!component2.IsCurrentControllerOfType <RunController>())
            {
                component2.SetCurrentController <RunController>();
            }
            localPlayerGameObject.transform.position = raceRestartPosition;
            RaceGameController component3 = localPlayerGameObject.GetComponent <RaceGameController>();

            if (component3 != null)
            {
                component3.RemoveLocalPlayerRaceData();
                Object.Destroy(component3);
            }
            Service.Get <EventDispatcher>().DispatchEvent(new CinematographyEvents.CameraSnapLockEvent(snapPosition: false, snapAim: true));
            CoroutineRunner.Start(LocomotionUtils.nudgePlayer(component2), component2.gameObject, "MoveAfterJump");
        }
예제 #8
0
    void SetupPlayer(NetworkPlayer player, string name, bool isAnon)
    {
        if (!Network.isServer)
        {
            return;
        }

        //Check if this player's version has been accepted
        if (connectionTimeout.ContainsKey(player))
        {
            //This only happens when an older version joins a newer version. Therefore, Kick cannot be used. Slightly obsolete code.
            Network.CloseConnection(player, true);
            SendServerMsg("Player joined with wrong version and was kicked.");
            connectionTimeout.Remove(player);
        }

        //Set stuff on the newly connected player
        networkView.RPC("ChangeLevel", player, Application.loadedLevel);
        SendPublicMsg(name + " has joined the game.");

        //Add other players to new player's player list and do stuff with the new players
        foreach (ServerPlayer sp in client.GetPlayerList())
        {
            networkView.RPC("AddPlayerToList", player,
                            sp.player,
                            sp.name,
                            (int)sp.type);
            networkView.RPC("SetReady", player, sp.player, sp.ready);
            networkView.RPC("SetCharacter", player, sp.player, sp.character);
            networkView.RPC("SetSpectating", player, sp.player, sp.spectating);
        }
        //Grab new player's type
        PlayerType pType = PlayerType.Anon;

        if (!isAnon)
        {
            pType = PlayerTypeHandler.GetPlayerType(name);
        }
        //Add new player to everyone's player list
        networkView.RPC("AddPlayerToList", RPCMode.All,
                        player,
                        name,
                        (int)pType);

        if (!client.IsInLobby)           //Means the game is in progress.
        //networkView.RPC("SetSpectating",RPCMode.All,player,true);
        {
            SendPrivateMsg("You'll be able to race once the next round starts.", player);
            RaceController rc = GameObject.FindObjectOfType <RaceController>();
            networkView.RPC("JoinRaceInProgress", player, rc.settings.ToString());
        }
        else             //Means we're in the lobby.
        {
            networkView.RPC("SetInitLobbyOnLevelLoad", player);
            //Sets the new player's character, forcing all players to spawn him into the lobby
            networkView.RPC("SetCharacter", RPCMode.All, player, 0);
        }
        Debug.Log("Player " + name + " has been successfully set up on clients.");
    }
 void UpdateRacersRaceState()
 {
     for (int b = 1; b <= numberOfRacers; b++)
     {
         tempRC = (RaceController)raceControllers [b];
         tempRC.UpdateRaceState(raceRunning);
     }
 }
예제 #10
0
 private void Awake()
 {
     SelfTransform       = GetComponent <Transform>();
     GlobRaceController  = FindObjectOfType <RaceController>();
     RotationSpeed       = BaseRotationSpeed.Value;
     SelfPlayerObject    = GetComponentInChildren <PlayerObject>();
     SelfPlayerTransform = GetComponentInChildren <PlayerMove>().GetComponent <Transform>();
 }
예제 #11
0
 protected void RecordRaceTimesButton_Click(object sender, EventArgs e)
 {
     MessageUserControl.TryRun(() =>
     {
         RaceController sysmgr   = new RaceController();
         RaceRosterPanel.Visible = true;
         RaceTimesListView.DataBind();
     });
 }
예제 #12
0
    void OnTriggerEnter(Collider other)
    {
        RaceController RaceController = transform.parent.GetComponent <RaceController>();

        if (RaceController != null)
        {
            RaceController.CompletaCheckpoint(index, other);
        }
    }
예제 #13
0
 private void OnEnable()
 {
     raceController = FindObjectOfType <RaceController>();
     if (ModeController.Mode != SimulatorMode.Playback && ModeController.Mode != SimulatorMode.RemoteControl)
     {
         Debug.Log("Initializing car socket");
         StartListening();
     }
 }
 void Awake()
 {
     // Taking a different approach on this one
     if (instance != this)
     {
         Destroy(instance);
         instance = this;
     }
 }
예제 #15
0
    // Use this for initialization
    void Start()
    {
        _bucket = RaceController.Locate().MyCar
                  .GetComponentsInChildren <PaintTank>().First(
            bucket => bucket.color == observedColor
            );

        _fill = transform.GetChild(0).GetComponent <Image>();
    }
예제 #16
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else if (instance != this)
     {
         Destroy(this);
     }
 }
예제 #17
0
 public void OnTriggerExit(Collider col)
 {
     if (col != null && col.CompareTag(Tag) && col.gameObject != null && !LocomotionHelper.IsCurrentControllerOfType <RaceController>(col.gameObject) && Action == ActionType.StartingLine)
     {
         RaceController component = col.gameObject.GetComponent <RaceController>();
         if (component != null)
         {
             component.setControlsEnabled(enabled: true);
         }
     }
 }
        public void RaceControllerGetBets_NameEmpty_ThrowError()
        {
            var _raceHelperTest = new Mock <IRaceHelper>().Object;
            var _logHelperTest  = new Mock <ILogger>().Object;

            RaceController   raceController = new RaceController(_raceHelperTest, _logHelperTest);
            StandardResponse response       = raceController.GetBets();

            var resultResponse = (ErrorRespose)response.Response;

            Assert.AreEqual(resultResponse.ErrorReason, "Name is Empty");
        }
 private void OnCollisionEnter2D(Collision2D collision)
 {
     if (collision.gameObject.CompareTag("Player"))
     {
         particles.Play();
         audio.Play();
         Avatar avatar = collision.gameObject.GetComponent <Avatar>();
         if (avatar)
         {
             RaceController.PlayerHasWon(avatar.team);
         }
     }
 }
예제 #20
0
파일: Client.cs 프로젝트: MlCHAEL/Sanicball
    void RemovePlayerFromRace(NetworkPlayer player)
    {
        ServerPlayer   sp = FindServerPlayer(player);
        RaceController rc = GameObject.FindObjectOfType <RaceController>();

        if (rc != null)
        {
            rc.RemoveRacer(sp.racer);
        }
        if (sp.racer != null)
        {
            Destroy(sp.racer.gameObject);
        }
    }
예제 #21
0
    public override void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer)
    {
        RaceController toRemove = null;

        foreach (RaceController rc in raceControllers)
        {
            if (rc.photonView.owner == null)
            {
                toRemove = rc;
            }
        }

        raceControllers.Remove(toRemove);
    }
예제 #22
0
        protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            DateTime date = Calendar1.SelectedDate;

            MessageUserControl.TryRun(() =>
            {
                RaceController sysmgr    = new RaceController();
                List <RaceList> datainfo = sysmgr.List_RacesForSelectedDate(date);

                //RaceListView.DataSourceID = null;
                //RaceGridView.DataSource = datainfo;
                SchedulePanel.Visible = true;
                RaceListView.DataBind();
            });
        }
    IEnumerator NextLevel()
    {
        GameObject raceobj = GameObject.Find("RaceController(Clone)");

        if (raceobj)
        {
            RaceController race = raceobj.GetComponent <RaceController>();
            StartCoroutine(race.FadeOutMusic());
        }
        yield return(_instance.mainCam.FadeOut());

        if (showcaseBuild)
        {
            Debug.Log("showcase time baby");
            int currLevel = SceneManager.GetActiveScene().buildIndex;
            if (currLevel == 6)
            {
                StartCoroutine(LoadSceneAsync(nextLevelCycle)); // if we're on the victory level, load the next scene in the cycle
            }
            else
            {
                if (currLevel == 5)
                {
                    nextLevelCycle = 3;                 // if we're on the brick level, set nextLevelCycle to 3 to go back to dirt land
                }
                else
                {
                    nextLevelCycle = currLevel + 1;
                }
                Debug.Log("loading:" + nextLevelCycle);
                if (currLevel < 3)
                {
                    StartCoroutine(LoadSceneAsync(nextLevelCycle));                // if we're not at the dirt level yet
                }
                // (tutorial/main menu) just load the next scene in the sequence
                else
                {
                    StartCoroutine(LoadSceneAsync(6));  // else,jump to the victory stage
                }
            }
        }
        else
        {
            int next = SceneManager.GetActiveScene().buildIndex + 1;
            next = next % SceneManager.sceneCountInBuildSettings;
            StartCoroutine(LoadSceneAsync(next));
        }
    }
        public void RaceControllerGetCustomers()
        {
            var _raceDBTest    = new Mock <IRaceDBConnector>();
            var _logHelperTest = new Mock <ILogger>().Object;

            AutoMapperConfig.Initialize();

            _raceDBTest.Setup(race => race.GetCustomer()).Returns(new List <SP_GetCustomerDetails_Result>());
            var              _raceHelperTest = new RaceHelper(_raceDBTest.Object, _logHelperTest);
            RaceController   raceController  = new RaceController(_raceHelperTest, _logHelperTest);
            StandardResponse response        = raceController.GetCustomers("Ashwini");

            var helperResponse = (List <Customer>)response.Response;

            Assert.AreEqual(helperResponse.Count, 0);
        }
        public void RaceControllerGetBets()
        {
            var _raceDBTest    = new Mock <IRaceDBConnector>();
            var _logHelperTest = new Mock <ILogger>().Object;

            AutoMapperConfig.Initialize();

            _raceDBTest.Setup(race => race.GetBets()).Returns(10);
            var              _raceHelperTest = new RaceHelper(_raceDBTest.Object, _logHelperTest);
            RaceController   raceController  = new RaceController(_raceHelperTest, _logHelperTest);
            StandardResponse response        = raceController.GetBets("Ashwini");

            var helperResponse = (TotalBets)response.Response;

            Assert.AreEqual(helperResponse.TotalAmount, 10);
        }
예제 #26
0
 public void OnTriggerEnter(Collider col)
 {
     if (!(col != null) || !col.CompareTag(Tag) || !(col.gameObject != null) || (IsMemberOnly && !Service.Get <CPDataEntityCollection>().IsLocalPlayerMember()))
     {
         return;
     }
     if (Action == ActionType.StartingLine)
     {
         RaceController component = col.gameObject.GetComponent <RaceController>();
         if ((object)component != null)
         {
             component.SetInitialTrackDir(base.transform.forward);
             hasPopupOpened = false;
         }
     }
     else if (Action == ActionType.FinishLine)
     {
         if (LocomotionHelper.IsCurrentControllerOfType <RaceController>(col.gameObject))
         {
             RaceGameController raceGameController = col.gameObject.GetComponent <RaceGameController>();
             if (raceGameController == null)
             {
                 raceGameController = col.gameObject.AddComponent <RaceGameController>();
             }
             raceGameController.FinishRace();
         }
     }
     else if (Action == ActionType.EndOfTrack && LocomotionHelper.IsCurrentControllerOfType <RaceController>(col.gameObject))
     {
         RaceController component = col.gameObject.GetComponent <RaceController>();
         if (component != null)
         {
             component.setControlsEnabled(enabled: true);
         }
         LocomotionHelper.SetCurrentController <RunController>(col.gameObject);
         RaceGameController raceGameController = col.gameObject.GetComponent <RaceGameController>();
         if (raceGameController != null)
         {
             raceGameController.RemoveLocalPlayerRaceData();
             Object.Destroy(raceGameController);
         }
         if (!hasPopupOpened)
         {
             Service.Get <QuestService>().SendEvent("FinishredRace");
         }
     }
 }
    public void CompletedLap(int anID)
    {
        // if should already have an entry in race laps, let's just increment it
        raceLaps[anID] = (int)raceLaps[anID] + 1;

        // here, we check to see if this player has finished the race or not (by checking its entry in
        // raceLaps against our totalLaps var) and if it has finished, we set its entry in raceFinished hashtable
        // to true. note that we always have to declare the object's type when we get it from the hashtable, since
        // hashtables store objects of any type and the system doesn't know what they are unless we tell it!
        if ((int)raceLaps[anID] == totalLaps)
        {
            raceFinished[anID] = true;
            // tell the race controller for this ID that it is finished racing
            tempRC = (RaceController)raceControllers [anID];
            tempRC.RaceFinished();
        }
    }
        public void Setup()
        {
            horseData = new List <Horse>
            {
                new Horse {
                    HorseId = 1, Name = "Horse 1", Skill = 10
                },
                new Horse {
                    HorseId = 2, Name = "Horse 2", Skill = 9
                },
                new Horse {
                    HorseId = 3, Name = "Horse 3", Skill = 8
                },
                new Horse {
                    HorseId = 4, Name = "Horse 4", Skill = 7
                },
                new Horse {
                    HorseId = 5, Name = "Horse 5", Skill = 6
                },
                new Horse {
                    HorseId = 6, Name = "Horse 6", Skill = 5
                },
                new Horse {
                    HorseId = 7, Name = "Horse 7", Skill = 4
                },
                new Horse {
                    HorseId = 8, Name = "Horse 8", Skill = 3
                },
                new Horse {
                    HorseId = 9, Name = "Horse 9", Skill = 2
                },
                new Horse {
                    HorseId = 10, Name = "Horse 10", Skill = 1
                }
            };
            horses = new Mock <DbSet <Horse> >().SetupData(horseData);

            context = new Mock <HorseRacingContext>()
            {
                CallBase = true
            };
            context.Setup(x => x.Horses).Returns(horses.Object);
            context.Setup(x => x.SetModified(It.IsAny <object>()));

            controller = new RaceController(context.Object);
        }
예제 #29
0
    public void AddRaceController()
    {
        if (myGO == null)
        {
            myGO = gameObject;
        }

        // add a race controller script to our object
        raceControl = myGO.AddComponent <RaceController>();

        // grab our racer ID from the race control script, so we don't have to look it up whenever
        // we communicate with the global race controller
        racerID = raceControl.GetID();

        // set up a repeating invoke to update our race position, rather than calling it
        // every single tick or update
        InvokeRepeating("UpdateRacePosition", 0, 0.5f);
    }
예제 #30
0
        public void TestIndexMethodReturnsObjects()
        {
            // Arrange
            var mockRepo = new Mock <IRaceRepository>();

            mockRepo.Setup(repo => repo.Get())
            .Returns(DataTestService.GetTestRace());
            var controller = new RaceController(mockRepo.Object);

            // Act
            var result = controller.Index();

            // Assert
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <IEnumerable <Race> >(
                viewResult.ViewData.Model);

            Assert.Equal(2, model.Count());
        }