Ejemplo n.º 1
0
    /// <summary>
    /// Spawn the characters
    /// </summary>
    private void SpawnPlayer()
    {
        var characterScene = GD.Load <PackedScene>("res://Scenes/Character.tscn");

        for (int i = 0; i < this.numberOfTeam; i++)
        {
            Character.Team currentTeam = (Character.Team)i;
            this.teams.Add(new List <Character>());

            for (int j = 0; j < this.numberOfPlayerPerTeam; j++)
            {
                Character newPlayer = (Character)characterScene.Instance();
                newPlayer.Connect("CharacterDies", this, "removeCharacter");
                this.teams[i].Add(newPlayer);
                newPlayer.SetPosition(new Vector2(-1300 + i * -1500 + j * 3000, -500));
                this.AddChild(newPlayer);
                newPlayer.SetTeam(currentTeam);
            }
        }

        this.iCurrentTeam = -1;

        for (int team = 0; team < numberOfTeam; team++)
        {
            iCurrentPlayer[team] = -1;
        }

        this.ChooseNextPlayer();
    }
 public void AddTeamTimeScaleModifier(Character.Team team, float factor)
 {
     if (factor != 1)
     {
         time_scales[team].AddModifier(factor);
         on_time_scale_changed[team]?.Invoke(time_scales[team]);
     }
 }
 public void SetTeamTimeScale(Character.Team team, float new_timescale)
 {
     if (new_timescale != time_scales[team])
     {
         time_scales[team].SetBaseValue(new_timescale);
         on_time_scale_changed[team]?.Invoke(new_timescale);
     }
 }
 public bool IsTimeFrozen(Character.Team team)
 {
     return(time_scales[team] == 0f);
 }
 public float GetTeamTimeScale(Character.Team team)
 {
     return(time_scales[team]);
 }
 public void RemoveOnTimeScaleChangedEvent(Character.Team team, System.Action <float> callback)
 {
     on_time_scale_changed[team] -= callback;
 }