Esempio n. 1
0
    void CreateOwnUnit(string id, Vector2 destPos)
    {
        var spawnPos = destPos;
        var setting  = UnitSettingLoader.GetSetting(id);

        if (!setting.isTower)
        {
            spawnPos.x = 0;
        }
        if (currentCost < setting.cost)
        {
            return;
        }
        UpdateCost(-setting.cost);
        var unit = CreateUnit(id, spawnPos, destPos, UNITASIGN.OWN);


        if (Network.Client.Instance != null)
        {
            Network.Client.Instance.Send(new Network.SpawnUnit {
                id                  = id,
                spawnPosition       = spawnPos,
                destinationPosition = destPos,
            });
        }

        // キャラ配置SE再生
        AudioManager.Instance.PlaySE(AudioManager.SE.CHARACTER_PUT_CLICK);
    }
Esempio n. 2
0
    //! ユニットを生成して返すだけ
    private Unit CreateUnit(string id, Vector2 spawnPos, Vector2 clickPos, UNITASIGN asign)
    {
        var setting = UnitSettingLoader.GetSetting(id);

        var unit = Instantiate(unitPrefab, asign == UNITASIGN.OWN ? unitParent : enemyParent, false);

        if (!setting.isTower)
        {
            var controller = Resources.Load <RuntimeAnimatorController> ("Animation/" + setting.appearanceId + "_anime");
            unit.GetComponent <Animator> ().runtimeAnimatorController = controller;
        }
        else
        {
            var sprite = Resources.Load <Sprite> ("Textures/" + setting.appearanceId);
            unit.GetComponent <UnityEngine.UI.Image> ().sprite = sprite;
        }

        unit.GetComponent <RectTransform> ().anchoredPosition = spawnPos;
        unit.SetParameter(UnitSettingLoader.GetSetting(id), clickPos, GetNearEnemy, GetNearEnemyTower, Summon);

        unitTable [asign].Add(unit);

        if (asign == UNITASIGN.OPPONENT)
        {
            unit.GetComponent <UnityEngine.UI.Image> ().color = Color.black;
        }
        if (asign == UNITASIGN.OWN && unit.isTower)
        {
            var image = unit.transform.Find("Range").GetComponent <UnityEngine.UI.Image> ();
            image.rectTransform.sizeDelta = Vector2.one * unit.effectRange;
            image.color = new Color(1, 1, 1, 0.2f);
        }

        return(unit);
    }
Esempio n. 3
0
    void SetSpawnObservable()
    {
        if (spawnDisposable != null)
        {
            spawnDisposable.Dispose();
        }
        if (currentUnitButton == null)
        {
            return;
        }

        var time = (UnitSettingLoader.GetSetting(currentUnitButton.ButtonId).hitPoint / 2f) * 0.01f;

        spawnDisposable = background.OnClickAsObservable().ThrottleFirst(System.TimeSpan.FromSeconds(time)).Subscribe(_ => {
            if (!gameStart)
            {
                return;
            }
            if (currentUnitButton == null || string.IsNullOrEmpty(currentUnitButton.ButtonId))
            {
                return;
            }
            CreateOwnUnit(currentUnitButton.ButtonId, Input.mousePosition);
        }).AddTo(gameObject);
    }
Esempio n. 4
0
    protected override void Awake()
    {
        unitTable.Add(UNITASIGN.OWN, new List <Unit> ());
        unitTable.Add(UNITASIGN.OPPONENT, new List <Unit> ());

        gameTimeLabel.text = string.Format("Time : {0}", gameTotalTime);
        UpdateCost(totalCost);

        System.IDisposable disposable = null;

        int count = 4;

        disposable = Observable.Interval(System.TimeSpan.FromSeconds(1)).Subscribe(_ => {
            count--;
            countDown.text = count.ToString();

            if (count == 0)
            {
                countDown.text = "Start!!";
            }
            if (count == -1)
            {
                disposable.Dispose();

                countDown.text = "";
                gameStart      = true;
                SetSpawnObservable();
                SetObservable();
            }
        }).AddTo(gameObject);

        var settings = new List <string> ()
        {
            "red_large_carrier",
            "red_small_carrier",
            "red_unit_1",
            "red_unit_2",
        };

        for (int i = 0; i < 4; i++)
        {
            var setting = UnitSettingLoader.GetSetting(settings [i]);
            buttonParent.Find("UnitButton_" + (i + 1).ToString()).GetComponent <UnitSpawn> ().SetParameter(setting.id);
        }

        if (Network.Client.Instance == null)
        {
            return;
        }
        Network.Client.Instance.onCloseSession           += CloseSession;
        Network.Client.Instance.Reciever.OnRecvSpawnUnit += OnRecvSpawnUnit;

        closeSession.Where(x => x).ObserveOnMainThread().Subscribe(_ => {
            UnityEngine.SceneManagement.SceneManager.LoadScene("Title");
        });
    }
Esempio n. 5
0
    private void CreateEnemyUnit(string id, Vector2 destPos)
    {
        destPos = new Vector2(Mathf.Abs(destPos.x - Screen.width), destPos.y);

        var spawnPos = destPos;

        if (!UnitSettingLoader.GetSetting(id).isTower)
        {
            spawnPos.x = Screen.width;
        }
        CreateUnit(id, spawnPos, destPos, UNITASIGN.OPPONENT);
    }
Esempio n. 6
0
    public void SetParameter(string id)
    {
        UnitButtonID = id;

        UnitSettings setting = UnitSettingLoader.GetSetting(UnitButtonID);

        CoinCostText.text = setting.cost.ToString();

        var sprite = Resources.Load <Sprite> ("Textures/" + setting.appearanceId);

        transform.Find("Image").GetComponent <UnityEngine.UI.Image>().sprite = sprite;
    }