// gets incomplete teams in the gamestate tracker and puts in a bot // only to be called by master client public void FillIncompleteTeamsWithBots() { if (PhotonNetwork.IsMasterClient) { // foreach team in the gamestate tracker, check that valid ids exist for driver and gunner // if ids are 0 (ie not valid) then create a bot for (int i = 0; i < gamestateTracker.teams.count; i++) { TeamEntry teamEntry = gamestateTracker.teams.GetAtIndex(i); // add driver bot if (teamEntry.driverId == 0) { PlayerEntry bot = gamestateTracker.players.Create(true, true); bot.ready = true; bot.role = (short)PlayerEntry.Role.Driver; bot.isBot = true; bot.name = "Bot " + -bot.id; bot.teamId = (short)teamEntry.id; bot.Commit(); // now add the entry to the team teamEntry.driverId = bot.id; teamEntry.Commit(); } else { teamEntry.Release(); } teamEntry = gamestateTracker.teams.GetAtIndex(i); // add gunner bot if (teamEntry.gunnerId == 0) { PlayerEntry bot = gamestateTracker.players.Create(true, true); bot.ready = true; bot.role = (short)PlayerEntry.Role.Gunner; bot.isBot = true; bot.name = "Bot " + -bot.id; bot.teamId = (short)teamEntry.id; bot.Commit(); // now add the entry to the team teamEntry.gunnerId = bot.id; teamEntry.Commit(); } else { teamEntry.Release(); } } } }
public void GamestateApplyTeamPacketErrorCallbackTest() { short actorNumber = 1; GamestateCommitTestHelper <TeamEntry> testHelper = new GamestateCommitTestHelper <TeamEntry>(actorNumber); GamestateTable <TeamEntry> teams = testHelper.TestTable(GamestateTracker.Table.Teams); GamestateRandomTestingUnit generator = new GamestateRandomTestingUnit(777); for (short i = 0; i < 100; i++) { TeamEntry teamEntry = teams.Create(i); generator.RandomiseTeamEntry(teamEntry); GamestatePacket packet = GamestatePacketManager.GetPacket(); bool errorCallbackCalled = false; teamEntry.Commit((TeamEntry entry, bool succeeded) => { Assert.That(succeeded, Is.EqualTo(true)); GamestateAssertionUnit.AssertPacketApplied(entry, packet); entry.Release(); errorCallbackCalled = true; }); packet = testHelper.commitedPackets[0]; testHelper.Apply(packet); Assert.That(errorCallbackCalled, Is.EqualTo(true)); testHelper.commitedPackets.Clear(); } }
// USED public void LockSelectedVehicle() { SetButtonsInteractable(false); TeamEntry teamEntry = gamestateTracker.teams.Get(ourTeamId); teamEntry.vehicle = currentVehicleId; teamEntry.hasSelectedVehicle = true; teamEntry.Commit(); }
void Spawn(int teamId) { GamestateTracker gamestateTracker = FindObjectOfType <GamestateTracker>(); TeamEntry teamEntry = gamestateTracker.teams.Get((short)teamId); bool selected = teamEntry.hasSelectedVehicle; teamEntry.isDead = false; short vehicle = teamEntry.vehicle; teamEntry.Commit(RespawnErrorHandler); Transform sp; if (teamId > spawnPoints.Count) { sp = spawnPoints[0]; } else { sp = spawnPoints[teamId - 1]; } List <string> vehicleNames = gamestateTracker.GetComponent <GamestateVehicleLookup>().sortedVehicleNames; string vehiclePrefabName; if (selected) { vehiclePrefabName = "VehiclePrefabs/" + vehicleNames[vehicle]; } else { int randomVehicleNumber = Random.Range(0, defaultPlayerVehiclePrefabNames.Count); vehiclePrefabName = defaultPlayerVehiclePrefabNames[randomVehicleNumber]; TeamEntry teamEntryAgain = gamestateTracker.teams.Get((short)teamId); teamEntryAgain.vehicle = (short)randomVehicleNumber; teamEntryAgain.hasSelectedVehicle = true; teamEntryAgain.Commit(); } object[] instantiationData = new object[] { teamId }; //Put strong brakes on for spawn var spawnedVehicle = PhotonNetwork.Instantiate(vehiclePrefabName, sp.position, sp.rotation, 0, instantiationData); /* * PhysXWheelCollider[] wheelColliders = spawnedVehicle.GetComponentsInChildren<PhysXWheelCollider>(); * foreach (PhysXWheelCollider wc in wheelColliders) { * wc.brakeTorque = 10000; * }*/ }
public void RespawnErrorHandler(TeamEntry teamEntry, bool succeeded) { if (teamEntry != null) { if (!succeeded && teamEntry.isDead) { teamEntry.isDead = false; teamEntry.Commit(RespawnErrorHandler); } else { teamEntry.Release(); } } }
// called by the lobby button master when we create a team public void CreateTeamEntry() { lobbySlotMaster = FindObjectOfType <LobbySlotMaster>(); gamestateTracker = FindObjectOfType <GamestateTracker>(); // new gamestate tracker register team TeamEntry teamEntry = gamestateTracker.teams.Create(true, false); // add a listener to team record // TeamEntry teamEntry = gamestateTracker.teams.Get((short)teamId); teamEntry.Commit(); GetComponent <PhotonView>().RPC(nameof(AddListenerToThisTeam), RpcTarget.AllBufferedViaServer); }
public void GamestateCreateTeamTest() { short id = -100; GamestateCommitTestHelper <TeamEntry> testHelper = new GamestateCommitTestHelper <TeamEntry>(1); GamestateTable <TeamEntry> teams = testHelper.TestTable(GamestateTracker.Table.Teams); TeamEntry teamEntry = teams.Create(id); Assert.That(teamEntry, Is.Not.Null); Assert.That(teamEntry.id, Is.EqualTo(id)); teamEntry.Commit(); testHelper.Apply(testHelper.commitedPackets[0]); Assert.That(teams.Get(id), Is.Not.Null); }
public void GamestateCommitTeamTest() { short actorNumber = 17; short entryId = -100; GamestateCommitTestHelper <TeamEntry> testHelper = new GamestateCommitTestHelper <TeamEntry>(actorNumber); GamestateTable <TeamEntry> teams = testHelper.TestTable(GamestateTracker.Table.Teams); TeamEntry teamEntry = teams.Create(entryId); Assert.That(teamEntry, Is.Not.Null); Assert.That(teamEntry.id, Is.EqualTo(entryId)); teamEntry.name = "xrtycuhEEEEE"; teamEntry.isDead = true; teamEntry.kills = 67; teamEntry.deaths = 222; teamEntry.assists = 0; teamEntry.checkpoint = -9; teamEntry.Commit(); Assert.That(testHelper.commitedPackets.Count, Is.EqualTo(1)); GamestatePacket packet = testHelper.commitedPackets[0]; Assert.That(packet.revisionNumber, Is.EqualTo(1)); Assert.That(packet.revisionActor, Is.EqualTo(actorNumber)); Assert.That(packet.id, Is.EqualTo(entryId)); Assert.That(packet.hasName, Is.EqualTo(true)); Assert.That(packet.name, Is.EqualTo("xrtycuhEEEEE")); bool[] hasShortValues = new bool[GamestatePacket.maxShorts]; hasShortValues[(int)TeamEntry.ShortFields.Kills] = true; hasShortValues[(int)TeamEntry.ShortFields.Deaths] = true; hasShortValues[(int)TeamEntry.ShortFields.Assists] = true; hasShortValues[(int)TeamEntry.ShortFields.Checkpoint] = true; Assert.That(packet.hasShortValues, Is.EquivalentTo(hasShortValues)); Assert.That(packet.shortValues, Is.EquivalentTo(new short[] { 67, 222, 0, -9 })); bool[] boolValues = new bool[GamestatePacket.maxBools]; boolValues[0] = true; Assert.That(packet.boolValues, Is.EquivalentTo(boolValues)); }
// USED // add the driver bot public void AddDriverBot() { if (CanSelectDriver()) { PlayerEntry bot = gamestateTracker.players.Create(true, true); bot.ready = true; bot.role = (short)PlayerEntry.Role.Driver; bot.isBot = true; bot.teamId = (short)teamId; bot.name = "Bot " + -bot.id; bot.Commit(); // now add the entry to the team TeamEntry teamEntry = gamestateTracker.teams.Get((short)teamId); teamEntry.driverId = bot.id; teamEntry.Commit(); } }
public void SelectVehicle(int i) { selectedVehicle = vehicleNames[i]; PlayerEntry playerEntry = gamestateTracker.players.Get((short)PhotonNetwork.LocalPlayer.ActorNumber); int teamId = playerEntry.teamId; playerEntry.Release(); if (teamId != 0) { // get team TeamEntry teamEntry = gamestateTracker.teams.Get((short)teamId); teamEntry.vehicle = (short)i; teamEntry.Commit(); } }
// USED public void RemoveDriverBot() { // if there is a gunner bot on our team, then remove it from our team and remove it from the gamestate tracker TeamEntry teamEntry = gamestateTracker.teams.Get((short)teamId); if (teamEntry.driverId != 0) { PlayerEntry playerEntry = gamestateTracker.players.Get(teamEntry.driverId); if (playerEntry.isBot) { playerEntry.Delete(); } else { playerEntry.Release(); } } teamEntry.driverId = 0; teamEntry.Commit(); }
// USED public void SelectGunner() { if (CanSelectGunner()) { // get my player id short myId = (short)PhotonNetwork.LocalPlayer.ActorNumber; PlayerEntry playerEntry = gamestateTracker.players.Get(myId); // search for myself in the teams // if I already am in a team, remove me if (playerEntry.teamId != 0) { TeamEntry oldTeamEntry = gamestateTracker.teams.Get(playerEntry.teamId); if (playerEntry.role == (short)PlayerEntry.Role.Driver) { oldTeamEntry.driverId = 0; } if (playerEntry.role == (short)PlayerEntry.Role.Gunner) { oldTeamEntry.gunnerId = 0; } oldTeamEntry.Commit(); } // set my roles playerEntry.role = (short)PlayerEntry.Role.Gunner; // set my team playerEntry.teamId = (short)teamId; playerEntry.Commit(); // set the driver team TeamEntry teamEntry = gamestateTracker.teams.Get((short)teamId); teamEntry.gunnerId = myId; teamEntry.Commit(); } }
public void GamestateApplyTeamPacketTest() { short actorNumber = 17; GamestateCommitTestHelper <TeamEntry> testHelper = new GamestateCommitTestHelper <TeamEntry>(actorNumber); GamestateTable <TeamEntry> teams = testHelper.TestTable(GamestateTracker.Table.Teams); GamestateRandomTestingUnit generator = new GamestateRandomTestingUnit(82); for (short i = 0; i < 100; i++) { TeamEntry teamEntry = teams.Create(i); generator.RandomiseTeamEntry(teamEntry); teamEntry.Commit(); GamestatePacket packet = testHelper.commitedPackets[0]; testHelper.Apply(packet); teamEntry = teams.Get(i); GamestateAssertionUnit.AssertPacketApplied(teamEntry, packet); teamEntry.Release(); testHelper.commitedPackets.Clear(); } }