Пример #1
0
    /// <summary>
    /// Set material of this checkpoint.
    /// </summary>
    /// <param name="playerNumber">Player number of the new owner.</param>
    public void SetMaterial(PlayerEntity.Player playerNumber)
    {
        if (!m_sycaMaterial || !m_arcaMaterial)
        {
            return;
        }

        Renderer rend = GetComponent <Renderer>();

        switch (playerNumber)
        {
        case PlayerEntity.Player.Player1:
            rend.material = m_sycaMaterial;
            break;

        case PlayerEntity.Player.Bot:
        case PlayerEntity.Player.Player2:
            rend.material = m_arcaMaterial;
            break;

        case PlayerEntity.Player.Neutre:
            if (!GetComponent <Barrack>())
            {
                rend.material = m_neutralMaterial;
            }
            break;
        }

        if (!m_territory.GetIsAvailable())
        {
            rend.material.color = new Color(0.3f, 0.3f, 0.3f);
        }
    }
Пример #2
0
    public IEnumerator Start()
    {
        yield return(new WaitUntil(() => GameManager.Instance != null));

        yield return(new WaitUntil(GameManager.Instance.GetAllPlayersReady));

        if (NetworkServer.connections.Count == 1 && m_playerNumber == PlayerEntity.Player.Player2)
        {
            yield return(new WaitWhile(() => null == FindObjectOfType <AIControl>()));

            m_playerNumber = PlayerEntity.Player.Bot;
            m_player       = FindObjectOfType <AIControl>();
            yield return(new WaitUntil(() =>
                                       NetworkServer.SpawnWithClientAuthority(m_player.gameObject, GameManager.Instance.GetPlayer(PlayerEntity.Player.Player1).GetComponent <NetworkIdentity>().connectionToClient)));
        }
        else
        {
            m_player = NetworkServer.connections[(int)m_playerNumber].playerControllers[0].gameObject.GetComponent <PlayerEntity>();
        }

        m_player.TakeControl(GetComponent <NetworkIdentity>());

        foreach (GameObject item in m_objectToControl)
        {
            m_player.TakeControl(item.GetComponent <NetworkIdentity>());
            if (item.GetComponent <SpawnUnits>())
            {
                SpawnUnits spawnUnits = item.GetComponent <SpawnUnits>();
                spawnUnits.RpcInitPlayerNumber(m_playerNumber);
                spawnUnits.SetTarget(GetNearestNexus().gameObject);
            }
        }
    }
Пример #3
0
    private void SetListOfObstaclesConstructed()
    {
        m_nbTtraps = 0;
        m_obstaclesConstructedIndList.Clear();
        m_obstaclesConstructedByBotIndList.Clear();
        for (int i = 0; i < m_listObstacles.Count; i++)
        {
            if (IsObstaclesBuilt(new List <int> ()
            {
                i
            }))
            {
                m_obstaclesConstructedIndList.Add(i);
                ActiveObstacle activeObstacle = m_listObstacles[i].transform.GetComponentInChildren <ActiveObstacle> ();

                if (activeObstacle == null)
                {
                    //Debug.Log("activeObstacle est null");
                    return;
                }
                PlayerEntity.Player playerNumber = activeObstacle.GetPlayerNumber();
                if (playerNumber == PlayerEntity.Player.Bot)
                {
                    if (null != m_listObstacles[i].transform.Find("Trap_A(Clone)"))
                    {
                        m_nbTtraps++;
                    }
                    m_obstaclesConstructedByBotIndList.Add(i);
                }
            }
        }
    }
Пример #4
0
    public bool IsAvailable(PlayerEntity.Player playerNumber)
    {
        if (PlayerEntity.Player.Bot == playerNumber)
        {
            playerNumber = PlayerEntity.Player.Player2;
        }

        if (m_ownerNumber == playerNumber)
        {
            return(true);
        }

        if (playerNumber == PlayerEntity.Player.Player1 && m_unitsPlayer1 > 0)
        {
            return(true);
        }
        else if ((playerNumber == PlayerEntity.Player.Player2 || playerNumber == PlayerEntity.Player.Bot) && m_unitsPlayer2 > 0)
        {
            return(true);
        }

        if (null != m_barrack && m_barrack.GetPlayerOwner() == playerNumber)
        {
            return(true);
        }

        return(false);
    }
Пример #5
0
 /// <summary>
 /// If a PlayerEntity is register under this playerNumber, remove it
 /// </summary>
 public void UnRegisterPlayer(PlayerEntity.Player _playerNumber)
 {
     if (m_players.ContainsKey(_playerNumber))
     {
         m_players.Remove(_playerNumber);
     }
 }
 public void CollectData(PlayerEntity.Player playerNumber, int goldReward)
 {
     m_time         = Mathf.Round(Time.time);
     m_playerNumber = playerNumber;
     m_goldReward   = goldReward;
     SaveData();
 }
Пример #7
0
    private IEnumerator Start()
    {
        m_collider = m_area.GetComponent <BoxCollider>();
        if (PlayerEntity.Player.Player2 == m_ownerNumber && 1 == NetworkServer.connections.Count)
        {
            m_ownerNumber = PlayerEntity.Player.Bot;
        }

        CheckIfOk();
        yield return(new WaitUntil(() => GameManager.Instance != null));

        yield return(new WaitUntil(m_gameManager.GetAllPlayersReady));

        m_materialDic = new Dictionary <int, Material> {
            { 1, m_centerMaterials[0] },
            { 34, m_centerMaterials[1] },
            { 35, m_centerMaterials[2] },
            { 46, m_centerMaterials[3] },
            { 12, m_centerMaterials[4] },
            { 45, m_centerMaterials[5] }
        };

        m_localPlayer = GameManager.Instance.GetLocalPlayer();
        InitializeTerritory();

        terterOKPlayer1   = IsAvailable(m_localPlayer);
        terterOKPlayer2   = IsAvailable(PlayerEntity.Player.Player2);
        terterOKPlayerBot = IsAvailable(PlayerEntity.Player.Bot);
    }
Пример #8
0
    private bool IsEnoughBombToDestroy(List <int> listIndObstacles)
    {
        int nbPlayersObstacles = 0;

        for (int i = 0; i < listIndObstacles.Count; i++)
        {
            if (IsObstaclesBuilt(new List <int> ()
            {
                listIndObstacles[i]
            }))
            {
                ActiveObstacle activeObstacle = m_listObstacles[listIndObstacles[i]].transform.GetComponentInChildren <ActiveObstacle> ();
                if (null == activeObstacle)
                {
                    continue;
                }
                PlayerEntity.Player playerNumber = activeObstacle.GetPlayerNumber();
                if (playerNumber != PlayerEntity.Player.Bot)
                {
                    nbPlayersObstacles++;
                }
            }
        }
        return(nbPlayersObstacles <= GameManager.Instance.GetPlayer(PlayerEntity.Player.Bot).GetComponent <Bomb> ().GetBombStack());
    }
Пример #9
0
    public void BuildObstacle(ActiveObstacle.ObstacleType obstacleType, PlayerEntity.Player playerNumber)
    {
        if (m_currentState != EState.Buildable)
        {
            return;
        }

        NetworkConnection conn = GameManager.Instance.GetPlayer(playerNumber).connectionToClient;

        GameObject obstacleToSpawn = GetObstacleToSpawn(obstacleType, playerNumber);
        int        cost            = obstacleToSpawn.GetComponent <ActiveObstacle>().GetBuildingCost();

        if (null != conn)
        {
            if (!m_territory.IsAvailable(playerNumber))
            {
                TargetShowWarningTerritory(conn);
            }

            if (GameManager.Instance.GetPlayer(playerNumber).GetBuildGold() < cost)
            {
                TargetShowWarningObstacle(conn);
            }

            TargetSoundConstruction(GameManager.Instance.GetLocalPlayerEntity().connectionToClient);
        }
        if (GameManager.Instance.GetPlayer(playerNumber).GetBuildGold() < cost)
        {
            if (playerNumber != PlayerEntity.Player.Bot)
            {
                TargetShowWarningObstacle(GameManager.Instance.GetPlayer(playerNumber).connectionToClient);
            }
            return;
        }
        GameManager.Instance.GetPlayer(playerNumber).GainBuildGold(-cost);
        m_currentState = EState.Invulnerable;
        RpcSetCurrentState(EState.Invulnerable);
        RpcEnableObstacleConstructor(false);
        RpcDisableUI();
        GameObject obstacleSpawnned = Instantiate(obstacleToSpawn);

        NetworkServer.Spawn(obstacleSpawnned);
        obstacleSpawnned.GetComponent <ActiveObstacle>().RpcInitOnConstruction(gameObject, playerNumber);

        int childCount = 0;

        foreach (Transform child in transform)
        {
            if (child.gameObject.GetComponent <ActiveObstacle>())
            {
                if (childCount > 1)
                {
                    Destroy(child);
                }
                childCount++;
            }
        }
    }
Пример #10
0
    public virtual void TakeDamage(int damageTaken, PlayerEntity.Player enemyId)
    {
        m_currentHealth -= damageTaken;

        if (m_currentHealth <= 0)
        {
            SetCurrentState(State.Dead);
        }
    }
Пример #11
0
 public void ColledData(GameObject go)
 {
     m_playerNumber = go.GetComponent <UnitController>().GetPlayerNumber();
     m_time         = Mathf.Round(Time.time);
     m_unitType     = go.GetComponent <WarriorUnit>() != null ? "normalUnit" :
                      go.GetComponent <RangeUnit>() != null ? "rangeUnit" :
                      go.GetComponent <TankUnit>() != null ? "tankUnit" : "scoutUnit";
     SaveData();
 }
Пример #12
0
    public override void SetPlayerOwner(PlayerEntity.Player player)
    {
        base.SetPlayerOwner(player);
        SpawnUnits spawnUnitsComponent = GetComponent <SpawnUnits>();

        spawnUnitsComponent.SetPlayerNumber(m_playerOwner);
        spawnUnitsComponent.SetTarget(GetNearestEnemyNexus().gameObject);
        spawnUnitsComponent.GetUISelectSpawnUnit().SetIcons();
    }
Пример #13
0
    /// <summary>
    /// If a PlayerEntity is register under this playerNumber, return it
    /// </summary>
    public PlayerEntity GetPlayer(PlayerEntity.Player playerNumber)
    {
        if (!m_players.ContainsKey(playerNumber))
        {
            Debug.Log("cant find " + playerNumber);
            return(null);
        }

        return(m_players[playerNumber]);
    }
Пример #14
0
    /// <summary>
    /// Return SpawnUnit depending on the player and the tag
    /// </summary>
    /// <param name="playerNumber">The player who want his SpawnUnit</param>
    /// <param name="tag">The tag of the SpawnUnit</param>
    public SpawnUnits GetSpawnUnitForPlayer(PlayerEntity.Player playerNumber, string tag)
    {
        KeyValuePair <PlayerEntity.Player, string> key = new KeyValuePair <PlayerEntity.Player, string>(playerNumber, tag);

        if (m_spawnUnits.ContainsKey(key))
        {
            return(m_spawnUnits[key]);
        }
        return(null);
    }
Пример #15
0
    protected override IEnumerator Construct(PlayerEntity.Player playerNumber)
    {
        yield return(base.Construct(playerNumber));

        bool isNavMeshBuilt = GameManager.Instance.GetNavMeshSurface().MyBuildNavMesh();

        yield return(new WaitUntil(() => isNavMeshBuilt));

        RecalculatePath();
        GameManager.Instance.GetPlayer(playerNumber).TakeControl(GetComponent <NetworkIdentity>());
    }
Пример #16
0
 public GameObject GetPrefabGolemPlayer(PlayerEntity.Player playerNumber)
 {
     if (playerNumber == PlayerEntity.Player.Player1)
     {
         return(m_prefabGolemSyca);
     }
     else
     {
         return(m_prefabGolemArca);
     }
 }
Пример #17
0
 public bool GetCheckpointOpen(PlayerEntity.Player player)
 {
     if (player == PlayerEntity.Player.Neutre)
     {
         return(false);
     }
     else
     {
         return(m_checkpointOpenPlayer[player]);
     }
 }
Пример #18
0
 private void InitializeCenterMaterial(PlayerEntity.Player playerNumber)
 {
     if (playerNumber == PlayerEntity.Player.Player1)
     {
         m_centerIsletRenderer.material = m_centerMaterials[0];
     }
     else if (playerNumber == PlayerEntity.Player.Player2)
     {
         m_centerIsletRenderer.material = m_centerMaterials[1];
     }
 }
Пример #19
0
 private void RpcRespawnGolemFX(PlayerEntity.Player killer)
 {
     if (killer == PlayerEntity.Player.Player1)
     {
         m_fxSpawnSyca.Play();
     }
     else
     {
         m_fxSpawnArca.Play();
     }
 }
Пример #20
0
 public override void SetPlayerOwner(PlayerEntity.Player player)
 {
     base.SetPlayerOwner(player);
     if (player == PlayerEntity.Player.Player1)
     {
         m_lineRenderer.material = m_laserSyca;
     }
     else
     {
         m_lineRenderer.material = m_laserArca;
     }
 }
Пример #21
0
 public void ColledData(GameObject go)
 {
     m_positionX    = go.transform.position.x;
     m_positionZ    = go.transform.position.z;
     m_playerNumber = go.GetComponent <UnitController>().GetPlayerNumber();
     m_unitState    = go.GetComponent <CombatUnit>().GetCurrentState();
     m_time         = Mathf.Round(Time.time);
     m_unitType     = go.GetComponent <WarriorUnit>() != null ? "normalUnit" :
                      go.GetComponent <RangeUnit>() != null ? "rangeUnit" :
                      go.GetComponent <TankUnit>() != null ? "tankUnit" : "scoutUnit";
     SaveData();
 }
Пример #22
0
    public override void TakeDamage(int damageTaken, PlayerEntity.Player enemyId)
    {
        m_currentHealth -= damageTaken;

        if (m_currentHealth <= 0)
        {
            m_camp.DecrementGolemsNumber(enemyId);
            StopAllCoroutines();
            CleanEnemyListOnDeath();
            CleanCamp();
            NetworkServer.Destroy(gameObject);
        }
    }
Пример #23
0
    public void InitializeTerritoryCost()
    {
        PlayerEntity.Player player = GetLocalPlayer();

        if (player == PlayerEntity.Player.Player1)
        {
            m_territory_cost = 1; // cost for syca base
        }
        else if (player == PlayerEntity.Player.Player2)
        {
            m_territory_cost = 34; // cost for arca base
        }
    }
Пример #24
0
    protected virtual IEnumerator Construct(PlayerEntity.Player playerNumber)
    {
        m_playerNumber = playerNumber;
        Vector3 destination = new Vector3(transform.localPosition.x, 0, transform.localPosition.z);

        while (transform.localPosition.y < destination.y)
        {
            transform.localPosition = Vector3.MoveTowards(transform.localPosition, destination,
                                                          m_obstacleHeight * Time.deltaTime / m_obstacleConstructor.GetBuildingTime());
            yield return(null);
        }
        transform.localPosition = destination;
        yield return(null);
    }
Пример #25
0
 protected virtual void CaptureCheckpoint(UnitController unit)
 {
     PlayerEntity.Player unitOwner = unit.GetPlayerNumber();
     SetCheckpointAuthority(unitOwner);
     RpcSetIsOnFight(false);
     RpcChangeIconOn2DView();
     RpcCheckpointZoneTransition(unitOwner);
     RpcSetMaterial(GameManager.Instance.GetPlayer(m_playerOwner).GetPlayerNumber());
     if (PlayerEntity.Player.Bot != m_playerOwner)
     {
         TargetPlaySoundCapture(GameManager.Instance.GetPlayer(m_playerOwner).connectionToClient);
         RpcAllPlaySoundCapture();
     }
     CheckAndSetOwnership(unit);
 }
Пример #26
0
    private void PlaySoundBaseInDanger(UnitController unit)
    {
        PlayerEntity.Player unitPlayer = unit.GetPlayerNumber();

        // Si le territoire n'appartient pas au joueur
        if (m_ownerNumber != m_localPlayer || m_ownerNumber == unitPlayer)
        {
            return;
        }
        if (Time.time - m_stockTime >= 15)
        {
            m_alertManager.TimerVerificationBaseInDanger();
            m_stockTime = Time.time;
        }
    }
Пример #27
0
    public override void DecrementGolemsNumber(PlayerEntity.Player killer)
    {
        m_nbGolemsToSpawn++;

        if (m_nbGolemsToSpawn >= m_golemsList.Count)
        {
            RespawnUnderPlayerControl(killer);
            Invoke("SpawnGolems", m_timeBeforeRespawn);
            RpcActiveTimer();

            if (!isBigGolem)
            {
                return;
            }
            m_bossSound.StopBossMusic();
        }
    }
Пример #28
0
    public override void DecrementGolemsNumber(PlayerEntity.Player killer)
    {
        m_nbGolemsToSpawn++;

        if (m_nbGolemsToSpawn >= m_golemsList.Count)
        {
            DeathEvents.Invoke(killer, m_goldReward);
            PlayerEntity playerKiller = GameManager.Instance.GetPlayer(killer);
            playerKiller.GainUnitGold(m_goldReward);
            Invoke("SpawnGolems", m_timeBeforeRespawn);
            RpcActiveTimer();
            if (killer != PlayerEntity.Player.Bot)
            {
                TargetShowTextGold(playerKiller.connectionToClient);
            }
        }
    }
Пример #29
0
    public override void SelectIconToDisplay()
    {
        PlayerEntity.Player currentPlayerOwner = GetComponentInParent <CheckpointBase>().GetPlayerOwner();

        if (currentPlayerOwner == PlayerEntity.Player.Neutre)
        {
            m_spriteRenderer.sprite = m_checkpointStateIcons[0];
        }
        else if (currentPlayerOwner == PlayerEntity.Player.Player1)
        {
            m_spriteRenderer.sprite = m_checkpointStateIcons[1];
        }
        else if (currentPlayerOwner == PlayerEntity.Player.Player2 || currentPlayerOwner == PlayerEntity.Player.Bot)
        {
            m_spriteRenderer.sprite = m_checkpointStateIcons[2];
        }
    }
Пример #30
0
    public void RpcInitOnConstruction(GameObject parent, PlayerEntity.Player playerNumber)
    {
        m_obstacleConstructor = parent.GetComponent <ObstacleConstructor>();
        transform.SetParent(parent.transform);
        transform.rotation = parent.transform.rotation;
        m_bombEffect       = parent.transform.GetComponentInChildren <ParticleSystem>();
        m_obstacleConstructor.SetCurrentState(ObstacleConstructor.EState.Invulnerable);
        GetComponentInChildren <ParticleSystem>().Play();

        InitPosition();

        m_initPosition = transform.position;
        if (isServer)
        {
            StartCoroutine(Construct(playerNumber));
        }
    }