Exemplo n.º 1
0
    // 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);
    }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 5
0
 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);
     }
 }
Exemplo n.º 6
0
    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);
    }