示例#1
0
    private void Awake()
    {
        if (Instance != null)
        {
            Debug.LogError("Error: More than one wave spawner in scene!");
            return;
        }
        Instance = this;

        shop = FindObjectOfType <Shop>();
        if (commands == null)
        {
            commands = FindObjectOfType <LocalPlayerCommands>();
        }
        if (NetworkServer.connections.Count != 0)
        {
            waitForPlayersCount = NetworkServer.connections.Count;
        }

        if (cleanUpScene)
        {
            CleanUpEnemies();
        }
        InvokeRepeating("UpdateGhostPositions", 0f, UpdateGhostPositionInterval);
        GenerateAllWaves();
    }
 public void PlayerReady()
 {
     if (player == null)
     {
         player = FindObjectOfType <LocalPlayerCommands>();
     }
     player.CmdReady();
     gameObject.SetActive(false);
 }
示例#3
0
    public void CallBuildTurret(bool upgrading = false)
    {
        if (upgrading)
        {
            if (isUpgraded)
            {
                BuildManager.Instance.message.PlayMessage("Already Upgraded!", transform, Color.red);
                return;
            }
            if (!buildManager.HasMoneyUpgrade)
            {
                BuildManager.Instance.message.PlayMessage("Not Enough Money!", transform, Color.red);
                return;
            }
            playerStats.money -= turretBlueprint.upgradeCost;
        }
        else
        {
            if (!buildManager.HasMoney)
            {
                BuildManager.Instance.message.PlayMessage("Not Enough Money!", transform, Color.red);
                return;
            }
            if (!buildManager.HasResources())
            {
                BuildManager.Instance.message.PlayMessage("Not Enough Resources!", transform, Color.red);
                return;
            }

            switch (buildManager.GetTurretToBuild().resourceType)
            {
            case ResourceTypes.stone:
                PlayerStats.Instance.stone -= buildManager.GetTurretToBuild().resourceCost;
                break;

            case ResourceTypes.diamond:
                PlayerStats.Instance.diamond -= buildManager.GetTurretToBuild().resourceCost;
                break;

            case ResourceTypes.green:
                PlayerStats.Instance.green -= buildManager.GetTurretToBuild().resourceCost;
                break;
            }
            playerStats.money -= buildManager.GetTurretToBuild().cost;
        }

        if (player == null)
        {
            player = FindObjectOfType <LocalPlayerCommands>();
        }

        int _tID = buildManager.GetTurretToBuildIndex();

        player.CmdBuildTurret(nodeID, _tID, upgrading);
    }
示例#4
0
    public void CallSellTurret()
    {
        if (player == null)
        {
            player = FindObjectOfType <LocalPlayerCommands>();
        }

        if (turretBlueprint == null)
        {
            BuildManager.Instance.message.PlayMessage("No Turret To Sell!", transform, Color.red);
            return;
        }

        playerStats.money += turretBlueprint.GetSellAmount(isUpgraded);
        player.CmdSellTurret(nodeID);
    }
    private void Start()
    {
        sceneCamera = Camera.main;
        motor       = GetComponent <PlayerMotor>();
        speed       = startSpeed;

        commands = FindObjectOfType <LocalPlayerCommands>();
        commands.CmdSetClientsRandomValues();

        WaveSpawner.Instance.commands    = commands;
        WaveSpawner.Instance.localPlayer = this;

        commands.CmdRequestSceneState();

        rmbCooldownImage          = GameObject.FindGameObjectWithTag("CooldownImageRmb");
        rmbCooldownImageComponent = rmbCooldownImage.GetComponent <Image>();
        ss3CooldownImage          = GameObject.FindGameObjectWithTag("CooldownImageSS3");
        ss3CooldownImageComponent = ss3CooldownImage.GetComponent <Image>();
    }
    private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        motor = GetComponent <PlayerMotor>();
        speed = startSpeed;

        commands = FindObjectOfType <LocalPlayerCommands>();
        commands.CmdSetClientsRandomValues();

        WaveSpawner.Instance.commands    = commands;
        WaveSpawner.Instance.localPlayer = this;

        ResetCameras();

        transform.position = new Vector3(0f, 2f, 0f);

        rmbCooldownImage          = GameObject.FindGameObjectWithTag("CooldownImageRmb");
        rmbCooldownImageComponent = rmbCooldownImage.GetComponent <Image>();
        ss3CooldownImage          = GameObject.FindGameObjectWithTag("CooldownImageSS3");
        ss3CooldownImageComponent = ss3CooldownImage.GetComponent <Image>();
    }
示例#7
0
    private void Update()
    {
        if (enemiesAlive < 0)
        {
            enemiesAlive = 0;                   //sometimes the count bugs out and becomes -1, not sure exactly where the problem happens.
        }
        enemyCountText.text = enemiesAlive.ToString();
        if (PlayerStats.Instance.lives <= 0)
        {
            enabled = false;
        }
        if (waveActive)
        {
            return;
        }
        if (enemiesAlive > 0)
        {
            return;
        }

        if (finishedWaveAndReady == true)
        {
            if (waitingForZombies < 1f)
            {
                if (enemiesAlive <= 0)
                {
                    waitingForZombies += Time.deltaTime;
                    return;
                }
                else
                {
                    waitingForZombies = 0f;
                    return;
                }
            }

            if (commands == null)
            {
                commands = FindObjectOfType <LocalPlayerCommands>();
            }
            commands.CmdReady();
            finishedWaveAndReady = false;
            waitingForZombies    = 0f;
        }
        if (playersReady < waitForPlayersCount)
        {
            return;
        }

        if (waveIndex >= waveMax)
        {
            BuildManager.Instance.message.PlayMessage("ALL WAVES COMPLETE!", transform, Color.green, 0.1f, 1, 2);
            enabled = false;
            return;
        }

        if (countdown <= 0f)
        {
            buildTimeToggle();
            StartCoroutine(SpawnWave());

            countdown = waveCountdownTimer;
            return;
        }

        if (!buildTime)
        {
            buildTimeToggle();
        }
        countdown -= Time.deltaTime;
        countdown  = Mathf.Clamp(countdown, 0f, Mathf.Infinity);
        waveCountdownText.text = string.Format("{0:00.0}", countdown);
    }