// Start is called before the first frame update void Start() { healthPool = GetComponent <HealthPool>(); teamTokenCaptain = GetComponent <TeamTokenCaptain>(); healthPool.onDied += checkGameOver; //Team Token Captains teamCaptains = FindObjectsOfType <TeamTokenCaptain>().ToList(); //Text Map Name txtMapName = gameObject.FindComponent <TMP_Text>(); MapGenerator mapGenerator = FindObjectOfType <MapGenerator>(); txtMapName.text = mapGenerator.mapName; mapGenerator.onMapNameChanged += (mapName) => txtMapName.text = mapName; //Marker MapMarker mapMarker = MapMarkerManager.CreateMapMarker( PhotonView.Get(gameObject), transform.position, flagMarkerInfo ); GameObject balloons = Instantiate(flagMarkerBalloonPrefab); balloons.transform.parent = mapMarker.iconSR.transform; balloons.transform.localPosition = Vector2.zero; balloons.GetComponent <FlagMapMarkerDisplay>().Init(this); }
protected List <T> FindObjectsToEffect <T>(TeamTokenCaptain teamCaptain) where T : Component { return(FindObjectsOfType <T>().ToList() .FindAll(t => t && (TeamToken.getTeamToken(t.gameObject)?.onSameTeam(teamCaptain) ?? false) )); }
public static TeamTokenCaptain getTeamWithFewestPlayers() { //Get list of all team captains Dictionary <TeamTokenCaptain, int> teamCaptains = new Dictionary <TeamTokenCaptain, int>(); foreach (TeamTokenCaptain ttc in FindObjectsOfType <TeamTokenCaptain>()) { if (!teamCaptains.ContainsKey(ttc)) { teamCaptains.Add(ttc, 0); } } foreach (TeamToken tt in FindObjectsOfType <TeamToken>()) { if (tt.teamCaptain != null) { int increment = (tt.isPlayer()) ? 1 : 0; teamCaptains[tt.teamCaptain] += increment; } } //Find the team with the lowest number of team members int minTeamMembers = int.MaxValue; TeamTokenCaptain minTeamCaptain = null; foreach (TeamTokenCaptain ttc in teamCaptains.Keys) { if (teamCaptains[ttc] < minTeamMembers) { minTeamMembers = teamCaptains[ttc]; minTeamCaptain = ttc; } } return(minTeamCaptain); }
public void Display(bool display) { //Destroy all current icons glg.transform.DetachChildren(); playerIcons.ForEach(pi => Destroy(pi)); playerIcons.Clear(); //Create new icons if (display) { List <TeamTokenCaptain> ttcList = FindObjectsOfType <TeamTokenCaptain>().ToList(); List <PlayerController> pcList = FindObjectsOfType <PlayerController>().ToList(); //Red team TeamTokenCaptain ttcRed = ttcList.Find( ttc => ttc.colorGroupIndex == redColorGroupIndex ); pcList.FindAll( pc => ttcRed.onSameTeam(TeamToken.getTeamToken(pc.gameObject)) ) .ForEach(pc => playerIcons.Add(CreatePlayerIcon(pc))); //Separator playerIcons.Add(Instantiate(separatorPrefab)); //Blue team TeamTokenCaptain ttcBlue = ttcList.Find( ttc => ttc.colorGroupIndex == blueColorGroupIndex ); pcList.FindAll( pc => ttcBlue.onSameTeam(TeamToken.getTeamToken(pc.gameObject)) ) .ForEach(pc => playerIcons.Add(CreatePlayerIcon(pc))); //Layout icons playerIcons.ForEach(pi => pi.transform.parent = glg.transform); } }
public override void Activate(TeamTokenCaptain teamCaptain, bool activate = true) { base.Activate(teamCaptain, activate); //Change all shots to presents if (activate) { FindObjectsToEffect <ObjectSpawner>(teamCaptain) .ForEach(os => os.onObjectSpawned += ChangeToPresent); } else { FindObjectsToEffect <ObjectSpawner>(teamCaptain) .ForEach(os => os.onObjectSpawned -= ChangeToPresent); } }
public virtual void Activate(TeamTokenCaptain teamCaptain, bool activate = true) { if (!teamCaptain) { teamCaptain = this.teamCaptain; } List <StatKeeper> statKeepers = FindObjectsToEffect <StatKeeper>(teamCaptain); if (activate) { this.teamCaptain = teamCaptain; statKeepers.ForEach(sk => sk.selfStats.addLayer(PV.ViewID, statLayer)); } else { statKeepers.ForEach(sk => sk.selfStats.removeLayer(PV.ViewID)); this.teamCaptain = null; } }
public static void showResultsScreen(TeamTokenCaptain winner) { instance.PV.RPC("RPC_ShowResultScreen", RpcTarget.AllBuffered, winner.PV.ViewID); }
void RPC_Server_AssignTeam() { TeamTokenCaptain teamCaptain = getTeamWithFewestPlayers(); PV.RPC("RPC_AssignTeam", RpcTarget.AllBuffered, teamCaptain.PV.ViewID); }