public void UpdateUIText(string towerType)
    {
        TowerData towerData = TowerDictionary.GetTowerData(towerType);

        if (towerData != null)
        {
            towerName.text   = "[ " + towerData.towerName + " ]";
            towerCost.text   = "Cost: " + towerData.buildCost.ToString();
            towerDamage.text = "Damage: " + (((float)towerData.bulletDamage) / towerData.fireDelay).ToString() + "/s";
            towerRange.text  = "Range: " + towerData.detectRange.ToString();

            switch (towerData.bulletEffect)
            {
            case MODIFIER_EFFECT.MOD_SLOW:
                towerSpecial.text = "Special: Slow";
                break;

            case MODIFIER_EFFECT.MOD_SLOW_HEAVY:
                towerSpecial.text = "Special: Greater Slow";
                break;

            default:
                towerSpecial.text = "";
                break;
            }
        }
        else
        {
            towerName.text = towerCost.text = towerDamage.text = towerRange.text = towerSpecial.text = "";
        }
    }
Пример #2
0
 // Use this for initialization
 void Start()
 {
     enemiesInRange = new List <GameObject>();
     lastShotTime   = Time.time;
     towerData      = gameObject.GetComponentInChildren <TowerData>();
     firstShot      = true;
 }
Пример #3
0
    public void Init_Server(TowerData data)
    {
        Debug.Log("INIT SERVER");
        if (entity.IsOwner())
        {
            _data           = data;
            state.TowerType = (int)_data.towerType;

            if (data.canAttack)
            {
                _attackRate = new SKU.Attribute();
                _damage     = new SKU.Attribute();
                _range      = new SKU.Attribute();

                _attackRate.AddOnValueChangedListener(UpdateAttackRate_Server);
                _damage.AddOnValueChangedListener(UpdateDamage_Server);
                _range.AddOnValueChangedListener(UpdateRange_Server);

                AttributeManager attributeManager = gameObject.AddComponent <AttributeManager>();
                attributeManager.Add(AttributeType.AttackRate, _attackRate);
                attributeManager.Add(AttributeType.Damage, _damage);
                attributeManager.Add(AttributeType.Range, _range);

                _attackRate.BaseValue = _data.attackRate;
                _damage.BaseValue     = _data.damage;
                _range.BaseValue      = _data.range;

                // TODO init from data
                gameObject.AddComponent <ShootBullet>();
            }
        }
    }
Пример #4
0
    /// <summary>
    /// 타워 짓는 함수.
    /// </summary>
    /// <param name="cell"></param>
    /// <param name="cellData"></param>
    /// <returns></returns>
    public virtual bool Build(CellClass cell, string cellData)
    {
        transform.localPosition = Vector3.zero;
        mOriginScale            = Vector3.one * 2.0f;

        mObjectPool = GameManager.Instance.GetObjectPool();
        if (mObjectPool == null)
        {
            Debug.Log("Failed Get Object Pool");
            return(false);
        }

        mTowerData = null;
        if (!mObjectPool.TowerDataDictionary.ContainsKey(cellData))
        {
            Debug.Log("Failed Find TowerData in TowerDataDictionary");
            return(false);
        }

        mTowerData = mObjectPool.TowerDataDictionary[cellData];

        mPrice     = mTowerData.Price;
        mTowerType = mTowerData.TOWERTYPE;

        cell.GetMap().SetMapData(cell.GetCellX(), cell.GetCellY(), mTowerData.Towerkey);
        StopCoroutine(ApperanceAnim());
        StartCoroutine(ApperanceAnim());

        return(true);
    }
Пример #5
0
    private void LoadTowerData()
    {
        // Initialize list
        if (towers == null)
        {
            towers = new Dictionary <string, TowerData> ();
        }
        towers.Clear();

        if (towersList == null)
        {
            towersList = new List <TowerData> ();
        }
        towersList.Clear();

        // Load all tower data
        List <DataReader.TowerData> inputTowerData = DataReader.instance.towers.towers;
        TowerData newTower = null;

        for (int i = 0; i < inputTowerData.Count; i++)
        {
            if (!towers.ContainsKey(inputTowerData [i].TowerName))
            {
                newTower = new TowerData(inputTowerData [i].TowerName, inputTowerData [i].air);
                towersList.Add(newTower);
                towers.Add(inputTowerData [i].TowerName, newTower);
            }

            towers [inputTowerData [i].TowerName].AddTower(inputTowerData [i], i);
        }
    }
Пример #6
0
        public void BuildLoadedTowers(List <TowerSaveData> towerSaveDatas)
        {
            int tempCoins = CurrencyManager.instance.GetCurrency();

            CurrencyManager.instance.SetCurrency(100000);

            foreach (TowerSaveData towerSaveData in towerSaveDatas)
            {
                TowerData     towerToBuild = towerConfigurations.Where(t => t.Id.Equals(towerSaveData.towerId)).FirstOrDefault();
                PlacementTile tile         = placementTilesholder.GetPlacementTile(towerSaveData.tileId);
                if (towerToBuild != null && tile != null)
                {
                    GameObject newTowerGO    = Instantiate(towerToBuild.Prefab.gameObject, tile.transform.position, tile.transform.rotation);
                    Tower      deffenceTower = newTowerGO.GetComponent <Tower>();
                    deffenceTower.Init(towerToBuild);
                    deffenceTower.PlacementTile = tile;
                    OnTowerBuild?.Invoke(deffenceTower);

                    UiManager.instance.SelectTower(deffenceTower);
                    while (deffenceTower.currentLevel < towerSaveData.currentLevel)
                    {
                        UpgradeTower();
                    }
                }
            }
            CurrencyManager.instance.SetCurrency(tempCoins);
        }
Пример #7
0
 public void DestroyTower()
 {
     Destroy(TowerCubeOn);
     isUpgrade   = false;
     towerdata   = null;
     TowerCubeOn = null;
 }
Пример #8
0
        private void MoveLinesDown()
        {
            if (LinesToClear.Any())
            {
                Thread.Sleep(100);

                int linesToMove = 0;

                for (int row = LinesToClear.Max(); row > 0; row--)
                {
                    if (LinesToClear.Contains(row))
                    {
                        linesToMove++;
                    }
                    else
                    {
                        for (int col = 0; col < TowerData.GetLength(1); col++)
                        {
                            if (TowerData[row, col] != BlockValue.Empty)
                            {
                                BlockValue tempVal = TowerData[row, col];
                                TowerData[row, col] = BlockValue.Empty;
                                TowerData[row + linesToMove, col] = tempVal;
                            }
                        }
                    }
                }

                LinesToClear.Clear();
                ClearState = ClearState.Check;
            }
        }
Пример #9
0
    public void LoadData()
    {
        dataLoaded = ReadGoogleSheet.FillDataHasList <TowerData, AttitudeField, LevelAttitude>("1fm4Mitj8s55MOAykzEjo6c6IHV3X9FX_T7HzBV1z22E", "0");
        GameData g = GameObject.FindObjectOfType <GameData>();

        g.Towers.ReplayData(dataLoaded);
    }
Пример #10
0
    /// <summary>
    /// 타워 초기화 함수.
    /// </summary>
    /// <param name="cellData"></param>
    /// <returns></returns>
    public virtual bool Initialize(string cellData)
    {
        transform.localPosition = Vector3.zero;
        mOriginScale            = Vector3.one * 2.0f;

        mObjectPool = GameManager.Instance.GetObjectPool();
        if (mObjectPool == null)
        {
            Debug.Log("Failed Get Object Pool");
            return(false);
        }

        mTowerData = null;
        if (!mObjectPool.TowerDataDictionary.ContainsKey(cellData))
        {
            Debug.Log("Failed Find TowerData in TowerDataDictionary");
            return(false);
        }

        mTowerData = mObjectPool.TowerDataDictionary[cellData];

        mPrice     = mTowerData.Price;
        mTowerType = mTowerData.TOWERTYPE;

        return(true);
    }
Пример #11
0
 private void InitializeScripts()
 {
     Data       = GetComponentInParent <TowerData>();
     Hub        = GetComponentInParent <Tower_Hub>();
     Harmonizer = GetComponentInParent <Harmonizer>();
     Particles  = GetComponentInChildren <TowerParticles>();
 }
Пример #12
0
 // Update is called once per frame
 void Update()
 {
     if (GameSettings.getInstance().GameMode == "DefenseMode")
     {
         if (Input.GetMouseButtonDown(0))
         {
             if (!CheckGuiRaycastObjects())
             {
                 click_ray = Camera.main.ScreenPointToRay(Input.mousePosition);//把鼠标点击的位置转化成射线
                 if (Physics.Raycast(click_ray, out hit, 100, mask))
                 {
                     if (oldBP != null && oldBP.GetComponent <BuildPlace>().HasTower())
                     {
                         oldBP.GetComponentInChildren <Tower>().HideAccatkRang();
                     }
                     if (hit.transform.gameObject.name == "BP")
                     {
                         if (hit.collider.gameObject.GetComponent <BuildPlace>().HasTower())
                         {
                             hit.collider.gameObject.GetComponentInChildren <Tower>().ShowAccatkRang();
                             TowerData current = hit.collider.gameObject.GetComponent <BuildPlace>().GetTowerData();
                             TowerData next    = null;
                             if (current.level == 3)
                             {
                                 //已经满级
                                 uiControl.UpgradeMenu.GetComponent <UpgradeMenu>().HideUpgrade();
                             }
                             else
                             {
                                 next = TowerDataManage.getInstance().GetTowerData(current.name, current.level + 1);
                                 uiControl.UpgradeMenu.GetComponent <UpgradeMenu>().ShowUpgrade();
                             }
                             uiControl.UpgradeMenu.GetComponent <UpgradeMenu>().InitText(current, next);
                             uiControl.UpgradeMenu.GetComponent <UpgradeMenu>().GetParentTransform(hit.transform);
                             uiControl.UpgradeMenu.SetActive(true);
                             // uiControl.TowerMenu.SetActive(false);
                         }
                         else
                         {
                             //uiControl.TowerMenu.GetComponent<TowerMenu>().GetParentTransform(hit.transform);
                             //uiControl.TowerMenu.GetComponent<TowerMenu>().ResetTowerPos();
                             //uiControl.TowerMenu.SetActive(true);
                             //uiControl.UpgradeMenu.SetActive(false);
                         }
                         oldBP = hit.transform.gameObject;
                     }
                     else
                     {
                         //不是地基就把菜单隐藏
                         uiControl.UpgradeMenu.SetActive(false);
                         //uiControl.TowerMenu.SetActive(false);
                         // uiControl.TowerMenu.GetComponent<TowerMenu>().ResetTowerPos();
                     }
                     return;
                 }
             }
         }
     }
 }
Пример #13
0
    public void OnSell(TowerData data)
    {
        AppController.Instance.UI.Gain(data.SellPrice);

        Tower.GetComponent <TowerController>().OnSell();

        OnMenuBuyClose();
    }
Пример #14
0
 public void DestoryTower()
 {
     // If we destory this tower then remove the tower and change everying to default
     Destroy(towerGameObject);
     isUpgraded      = false;
     towerGameObject = null;
     towerData       = null;
 }
Пример #15
0
    public static Tower DeserialiseTower(TowerData towerData, string towerDataString = "")
    {
        var tower = GameObject.Instantiate(towerData.TowerPrefab);

        tower.Init(towerData);

        return(tower);
    }
Пример #16
0
    public void BuildTurret(TowerData towerData)
    {
        this.towerDataOn = towerData;
        turretOn         = GameObject.Instantiate(towerData.turretPrefab, transform.position, Quaternion.identity);
        GameObject tmp = GameObject.Instantiate(buildEffect, transform.position, Quaternion.identity);

        Destroy(tmp, 1f);
    }
Пример #17
0
 public void SetData(TowerData data)
 {
     this.data           = data;
     interval            = data.Interval;
     damage              = data.Damage;
     simultaneousTargets = data.SimultaneousTargets;
     blastPrefab         = data.BlastPrefab;
 }
Пример #18
0
 // Use this for initialization
 void Start()
 {
     enemiesInRange  = new List <GameObject>();
     lastShotTime    = Time.time;
     towerData       = gameObject.GetComponentInChildren <TowerData>();
     firstShot       = true;
     spriteRenderers = this.transform.GetComponentsInChildren <SpriteRenderer>();
 }
Пример #19
0
 // Start is called before the first frame update
 void Start()
 {
     // hexTilemap = PlayerTilemap.Instance;
     lastShotTime           = Time.time;
     towerData              = gameObject.GetComponentInChildren <TowerData>();
     adjacentEnemyPositions = towerData.AdjacentCellPositions;
     enemiesInRange         = new List <GameObject>();
 }
Пример #20
0
    public void Init(TowerData data)
    {
        Data = data;

        ImageTower.sprite = AppController.Instance.Atlas.GetSprite(data.SpriteName);

        StartCoroutine(ShootCoroutine());
    }
Пример #21
0
    public void SetTowerToResearch(string whichType)
    {
        if (researching)
        {
            return;
        }

        towerToResearch = TowerDictionary.GetTowerData(whichType);
    }
Пример #22
0
 public void OnBuyTry(TowerData data)
 {
     if (Tower == null && AppController.Instance.UI.Withdraw(data.BuildPrice))
     {
         Tower = Instantiate(Resources.Load("Prefabs/Tower"), transform) as GameObject;
         Tower.GetComponent <TowerController>().Init(data);
         OnMenuBuyClose();
     }
 }
Пример #23
0
    void getTowerDatabase()
    {
        int length = Towers.Length;

        for (int i = 0; i < length; i++)
        {
            TowerController tower = Towers[i].GetComponent <TowerController>();
            TowerController tower2;

            while (true)
            {
                if (ReadDatabase.Instance.TowerInfo.ContainsKey(tower.ID.Type.ToString() + tower.ID.Level.ToString()))
                {
                    TowerData data = ReadDatabase.Instance.TowerInfo[tower.ID.Type.ToString() + tower.ID.Level.ToString()];

                    tower.attribute.Range      = data.Range;
                    tower.attribute.Cost       = data.Cost;
                    tower.attribute.MinATK     = data.MinATK;
                    tower.attribute.MaxATK     = data.MaxATK;
                    tower.attribute.SpawnShoot = data.ShootSpwan;
                    tower.attribute.TimeBuild  = data.TimeBuild;
                    switch (data.Type)
                    {
                    case "IRON":
                        tower.Branch = EBranchGame.IRON;
                        break;

                    case "PLANT":
                        tower.Branch = EBranchGame.PLANT;
                        break;

                    case "ICE":
                        tower.Branch = EBranchGame.ICE;
                        break;

                    case "FIRE":
                        tower.Branch = EBranchGame.FIRE;
                        break;

                    case "EARTH":
                        tower.Branch = EBranchGame.EARTH;
                        break;
                    }
                }

                if (tower.nextLevel)
                {
                    tower2 = tower.nextLevel;
                    tower  = tower2;
                }
                else
                {
                    break;
                }
            }
        }
    }
Пример #24
0
    /// <summary>
    /// 创建箭塔
    /// </summary>
    /// <param name="charData"></param>
    public void CreateTower(CampType campId, ObjectType type)
    {
        Tower     towerObj = new Tower();
        int       hp       = type == ObjectType.CRYSTAL_TOWER ? 20000 : 10000;
        TowerData data     = new TowerData(campId, type, hp);

        towerObj.Create(data);
        GameData.m_ObjectList.Add(towerObj);
    }
Пример #25
0
 public void SetUp(TowerData data)
 {
     price                 = data.Price;
     damage                = data.Damage;
     range                 = data.Range;
     attackCd              = data.ShootInterval;
     PossibleUpgrades      = new List <TowerData>(data.PossibleUpgrades);
     spriteRenderer.sprite = data.TowerSprite;
 }
Пример #26
0
    public void AddTower(TowerData newTower)
    {
        if (_allTower == null)
        {
            _allTower = new List <TowerData>();
        }

        _allTower.Add(newTower);
    }
Пример #27
0
 public void Init(TowerData data)
 {
     this.data             = data;
     nameText.text         = data.Name;
     thumbnailImage.sprite = data.Thumbnail;
     descriptionText.text  = data.Description;
     GameManager.Instance.ScoreChangedEvent += UpdateBuyButton;
     UpdateBuyButton();
 }
Пример #28
0
 public void BuildTower(TowerData tower)
 {
     this.towerdata = tower;
     isUpgrade      = false;
     TowerCubeOn    = GameObject.Instantiate(towerdata.TowerPrefab, transform.position, Quaternion.identity);
     //UI
     //GameObject effect = GameObject.Instantiate(buildeffect, transform.position, Quaternion.identity);
     //Destroy(effect, 1);
 }
Пример #29
0
 // START
 void Start()
 {
     playerData1 = Player1.GetComponent <PlayerData>();
     playerData2 = Player2.GetComponent <PlayerData>();
     towerHub1   = Tower1.GetComponent <Tower_Hub>();
     towerHub2   = Tower2.GetComponent <Tower_Hub>();
     towerData1  = towerHub1.GetData;
     towerData2  = towerHub2.GetData;
 }
Пример #30
0
    /// <summary>
    /// Spawn a Tower From its Identifier
    /// </summary>
    /// <param name="entityIdentifier">Entity Identifier to spawn</param>
    /// <param name="pos">Position</param>
    /// <param name="rot">Rotation</param>
    public void SpawnTower(string entityIdentifier, Vector3 pos, Quaternion rot)
    {
        TowerData  def            = GameDataManager.instance.GetEntityData(entityIdentifier) as TowerData;
        GameObject towerObj       = SpawnManager.instance.InstantiatePool(def.m_prefab, pos, rot);
        AIEntity   towerComponent = towerObj.GetComponent <AIEntity>();

        towerComponent.InitializeEntity(def, Guid.NewGuid().ToString());
        NetworkServer.Spawn(towerObj);
    }
Пример #31
0
    public void SetView(TowerData data)
    {
        int vipLevel = MogoWorld.thePlayer.VipLevel;
        TimerManager.GetTimer(m_buttonNormal.gameObject).StartTimer(data.CountDown,
            (sec) => { m_buttonNormal.GetComponentsInChildren<UILabel>(true)[0].text = String.Concat((sec / 3600),":",(sec % 3600) / 60, ":", ((sec % 3600) % 60)); m_sweepReady = true; },
            () => { m_buttonNormal.GetComponentsInChildren<UILabel>(true)[0].text = LanguageData.dataMap.Get(810).content; m_sweepReady = false; });
        m_highHistory.text = LanguageData.GetContent(801, data.Highest);
        //m_currentLevel.text = LanguageData.GetContent(802, data.CurrentLevel);

        if (vipLevel == 0)
        {
            //非VIP
            m_buttonVIP.SetButtonText(LanguageData.GetContent(808));
            m_leftVIPSweepCount.text = LanguageData.GetContent(20019, vipLevel + 1, PrivilegeData.dataMap[vipLevel + 1].dailyTowerSweepLimit);
        }
        else
        {
            int leftCount = PrivilegeData.dataMap[vipLevel].dailyTowerSweepLimit - data.VIPSweepUsed;
            m_buttonVIP.SetButtonText(LanguageData.GetContent(807, leftCount));

            if (vipLevel >= GlobalData.dataMap[0].tower_all_sweep_vip_level)
            {
                m_leftVIPSweepCount.text = LanguageData.GetContent(20021, vipLevel);
                //隐藏普通扫荡,vip扫荡改为全部扫荡
                m_buttonNormal.gameObject.SetActive(false);
                m_buttonVIP.SetButtonText(LanguageData.GetContent(809));
            }
            else if (vipLevel + 1 == GlobalData.dataMap[0].tower_all_sweep_vip_level)
            {
                m_leftVIPSweepCount.text = LanguageData.GetContent(20020, vipLevel + 1);
            }
            else
            {
                m_leftVIPSweepCount.text = LanguageData.GetContent(20019, vipLevel + 1, PrivilegeData.dataMap[vipLevel + 1].dailyTowerSweepLimit);
            }

        }
        m_leftChallengeCount.text = LanguageData.GetContent(803, data.FailCount);
        m_lblGuide.text = LanguageData.dataMap.Get(vipLevel + 20006).content;

        if (data.CurrentLevel > data.Highest)
        {
            m_buttonVIP.Clickable = false;
            m_buttonNormal.Clickable = false;
        }
        else
        {
            m_buttonVIP.Clickable = true;
            m_buttonNormal.Clickable = true;
        }
        int iter = 0;
        var rwdList = m_rewardList.GetComponentsInChildren<MogoListImproved>(true);
        if (rwdList[0].DataList.Count > 0)
        {
            foreach (var towerXML in TowerXMLData.dataMap)
            {
                TowerRewardUnit unit = (TowerRewardUnit)(rwdList[0].DataList[iter]);
                if (data.Items.ContainsValue(towerXML.Key))
                {
                    unit.IsAlreadyGet = true;
                }
                else
                {
                    unit.IsAlreadyGet = false;
                }
                unit.force = LanguageData.GetContent(20099, MissionData.dataMap.FirstOrDefault(
                    x =>
                        MapData.dataMap.Get(x.Value.mission).type == MapType.ClimbTower
                        && x.Value.difficulty == unit.RewardID - 9)
                        .Value.minimumFight.ToString());
                unit.PicID = (unit.RewardID / 10 - 1) % 3;

                if (((data.CurrentLevel % 10 == 0 ? data.CurrentLevel : (data.CurrentLevel / 10 + 1) * 10) == unit.RewardID))
                {
                    unit.TowerDesc = LanguageData.GetContent(802, data.CurrentLevel);
                    unit.forceCurrent = LanguageData.GetContent(20099,
                        (MissionData.dataMap.FirstOrDefault(x =>
                        MapData.dataMap.Get(x.Value.mission).type == MapType.ClimbTower
                        && x.Value.difficulty == data.CurrentLevel)
                        .Value.minimumFight).ToString());
                    unit.Grey = false;
                    unit.HighLight = true;
                    unit.Unlocked = true;
                }
                else if (((data.CurrentLevel % 10 == 0 ? data.CurrentLevel : (data.CurrentLevel / 10 + 1) * 10) < unit.RewardID))
                {
                    unit.TowerDesc = string.Empty;
                    unit.Grey = true;// true;
                    unit.Unlocked = false;
                    unit.HighLight = false;
                }
                else
                {
                    unit.TowerDesc = string.Empty;
                    unit.Grey = false;
                    unit.HighLight = false;
                    unit.Unlocked = true;
                }

                iter++;
            }
        }
        MogoGlobleUIManager.Instance.ShowWaitingTip(false);
    }
Пример #32
0
    void readTower()
    {
        TowerInfo = new Dictionary<string, TowerData>();

        TextAsset textAsset = (TextAsset)Resources.Load(GameConfig.DatabasePathTowerInfo);
        string[] temp = textAsset.text.Split('\n');

        int lenght = temp.Length;
        for (int i = 1; i < lenght - 1; i++)
        {
            if (temp[i].Equals(""))
                break;

            TowerData data = new TowerData();
            string[] s = temp[i].Split(';');

            data.Type = s[1].Replace('\"', ' ').ToString().Trim();
            data.Level = int.Parse(s[2].ToString());
            data.Region = s[4].Replace('\"', ' ').ToString().Trim();

            data.Target = s[5].Replace('\"', ' ').ToString().Trim();
            data.BulletMode = s[6].Replace('\"', ' ').ToString().Trim();
            data.Range = int.Parse(s[7].ToString());
            data.Cost = int.Parse(s[8].ToString());
            data.MinATK = int.Parse(s[9].ToString());
            data.MaxATK = int.Parse(s[10].ToString());
            data.ShootSpwan = float.Parse(s[11].ToString());
            data.TimeBuild = float.Parse(s[12].ToString());
            data.Branch = s[13].Replace('\"', ' ').ToString().Trim();
            TowerInfo.Add(data.Type + data.Level.ToString(), data);
        }
    }
Пример #33
0
 public void RefreshUI(TowerData data)
 {
     if (m_view!=null)
     {
         m_view.SetView(data);
     }
     else
     {
         //Debug.LogError("m_view null");
     }
     
 }
Пример #34
0
    void Start()
    {
        //set the class objects
        ButtonScript = GameObject.Find("Canvas/Panel").GetComponent<buttonScript>(); //get a refference to the buttonscript u=in scen
        canvaStatsPanel = ButtonScript.statPanel; //Should send this unit's stats to the panel
        statsLabel = canvaStatsPanel.GetComponentInChildren<Text>();

        towerManager = GameObject.FindGameObjectWithTag("PlayerTowerManager").GetComponent<TowerManager>();
        selectionCircle = transform.Find("selectPlane");
        selectionCircle.gameObject.SetActive(false);
        enemiesInRange = new List<GameObject>(); //Get alist of enemeies in range
        lastShotTime = Time.time;
        towerData = gameObject.GetComponentInChildren<TowerData>();
    }