예제 #1
0
    private static bool ReadCanonData(XElement towerData, TowerAssetData assetData, out Declarations.TowerData tower)
    {
        var levels = new Declarations.FiringTowerLevelData[3];

        bool failed = false;

        #region Level1
        var level1 = towerData.Element(Constants.cst_Level1);
        if (level1 != null)
        {
            levels[0] = new Declarations.FiringTowerLevelData(ReadInt(level1, Constants.cst_Price, ref failed),
                                                              ReadFloat(level1, Constants.cst_Range, ref failed),
                                                              ReadFloat(level1, Constants.cst_FireRate, ref failed),
                                                              ReadInt(level1, Constants.cst_Damage, ref failed));
        }
        else
        {
            failed = true;
        }
        #endregion

        #region Level2
        var level2 = towerData.Element(Constants.cst_Level2);
        if (level2 != null)
        {
            levels[1] = new Declarations.FiringTowerLevelData(ReadInt(level2, Constants.cst_UpgradePrice, ref failed),
                                                              ReadFloat(level2, Constants.cst_Range, ref failed),
                                                              ReadFloat(level2, Constants.cst_FireRate, ref failed),
                                                              ReadInt(level2, Constants.cst_Damage, ref failed));
        }
        else
        {
            failed = true;
        }
        #endregion

        #region Level3
        var level3 = towerData.Element(Constants.cst_Level3);
        if (level3 != null)
        {
            levels[2] = new Declarations.FiringTowerLevelData(ReadInt(level3, Constants.cst_UpgradePrice, ref failed),
                                                              ReadFloat(level3, Constants.cst_Range, ref failed),
                                                              ReadFloat(level3, Constants.cst_FireRate, ref failed),
                                                              ReadInt(level3, Constants.cst_Damage, ref failed));
        }
        #endregion

        if (failed)
        {
            Debug.Log("Filed to read canon tower");
            tower = null;
            return(false);
        }
        else
        {
            tower = new Declarations.CanonTower(assetData, levels);
            return(true);
        }
    }
예제 #2
0
 public void ShopItemClicked(Declarations.TowerData towerData)
 {
     informationPanel.gameObject.SetActive(true);
     informationPanel.LoadTowerData(towerData);
     GameManager.instance.BuildManager.CurrentTower = towerData;
     GameManager.instance.BuildManager.Selling      = false;
     GameManager.instance.BuildManager.SellClicked  = false;
 }
    public void LoadTowerData(Declarations.TowerData towerData)
    {
        currentTower   = towerData;
        towerName.text = currentTower.Type.ToString();
        UpdateInfoPanel();

        upgradeButton.onClick.AddListener(UpgradeTowerClicked);
    }
예제 #4
0
    public void Setup(Declarations.TowerData towerData)
    {
        this.towerData = towerData;
        image.sprite   = towerData.CurrentSprite;
        price.text     = towerData.CurrentPrice.ToString();
        UpdateTextColor();
        UpdateMenu();
        towerData.Upgraded.AddListener(UpdateMenu);
        var button = GetComponent <Button>();

        button.onClick.AddListener(delegate { GameManager.instance.UIManager.ShopItemClicked(towerData); });
        GameManager.instance.MoneyChanged.AddListener(UpdateTextColor);
    }
예제 #5
0
    public static bool ReadTowerData(XElement towerData, TowerAssetData assetData, Declarations.TowerType towerType, out Declarations.TowerData tower)
    {
        switch (towerType)
        {
        case Declarations.TowerType.Canon:
            return(ReadCanonData(towerData, assetData, out tower));

        case Declarations.TowerType.Plasma:
            return(ReadPlasmaData(towerData, assetData, out tower));

        case Declarations.TowerType.Crystal:
            return(ReadCrystalData(towerData, assetData, out tower));

        case Declarations.TowerType.Tesla:
            return(ReadTeslaData(towerData, assetData, out tower));

        case Declarations.TowerType.Laser:
            return(ReadLaserData(towerData, assetData, out tower));

        case Declarations.TowerType.Radar:
            return(ReadRadarData(towerData, assetData, out tower));

        default:
            Debug.Log("Unknown tower type");
            break;
        }
        tower = null;
        return(false);
    }