Beispiel #1
0
    public void PutTowerInMap()
    {
        int idnum = 0;

        // int towerIndex=0;
        towers.Clear();
        ActivetowerList.Clear();
        towerList.Clear();
        foreach (var VARIABLE in _globalsettings.towerInfosList.data)
        {
            TowerInfo towerInfo = new TowerInfo();

            ++idnum;
            towerInfo.id         = idnum;
            towerInfo.tower_code = VARIABLE.tower_code;
            towerInfo.type       = VARIABLE.tower_type;
            towerInfo.latlon     = new Vector2d(VARIABLE.tower_position_x, VARIABLE.tower_position_y);
            towerInfo.towerId    = VARIABLE.towerId;
            towerInfo.towerState = VARIABLE.towerStatus;
            towerInfo.jichu      = VARIABLE.jichu;
            towerInfo.zuta       = VARIABLE.zuta;
            towerInfo.jiaxian    = VARIABLE.jiaxian;
            towers.Add(towerInfo);
        }

        isLoad = true;
    }
Beispiel #2
0
    public void StartPlacingTower(int index)
    {
        GameManager gameManager = GameManager.instance;
        TowerInfo   info        = towers[index];

        if (info == null)
        {
            return;
        }

        if (!gameManager.playerManager.HasCoins(info.price))
        {
            return;
        }

        Vector3 towerPosition = gameManager.mainCamera.ScreenToWorldPoint(Input.mousePosition);

        towerPosition.z = 0;

        GameObject gameObject = Instantiate(info.prefab, towerPosition, new Quaternion());
        Tower      tower      = gameObject.GetComponent <Tower>();

        tower.price  = info.price;
        tower.moving = true;

        gameManager.shopManager.StartPlacingTower(info);
        gameManager.shopManager.UpdateButtonColors();
    }
    public void Upgrade()
    {
        //업그레이드 가능한지 체크
        if (!isUpgradable)
        {
            return;
        }

        //레벨업
        upgradeLevel++;

        //최대치 인가?
        if (upgradeLevel > upgradeSprites.Length)
        {
            isUpgradable = false;
        }

        //타워 스탯 업
        rangeRadius += 1.0f;
        reloadTime  -= 0.5f;

        // 타워 그래픽 변경
        GetComponent <SpriteRenderer>().sprite = upgradeSprites[upgradeLevel];

        //비용 증가
        //buyPrice += 5;
        upgradingCost += 10;
        sellPrice     += 5;
        TowerInfo.UpdateInfo();
    }
Beispiel #4
0
 /**
  * Finishes creating the tower - adjusts transparency and activates, updates dragging variables and
  * informs other objects of creation.
  */
 private void finalizeTowerCreation()
 {
     dragTower.GetComponent <SpriteRenderer> ().color = new Color(1f, 1f, 1f, 1f);
     dragTower.GetComponent <BaseTower> ().activated  = true;
     draggingTower = false;
     inputHandler.towerCreated(dragTower, TowerInfo.getTowerCost(dragTower.GetComponent <BaseTower> ().getTowerName()));
 }
Beispiel #5
0
    // Update is called once per frame
    void Update()
    {
        //마우스 포인터 위치
        float x = Input.mousePosition.x;
        float y = Input.mousePosition.y;

        transform.position = Camera.main.ScreenToWorldPoint(new Vector3(x, y, 10));

        //배치 가능 영역 체크
        if (Input.GetMouseButtonDown(0) && deployAreaCheck.isPointerOnAllowedArea())
        {
            GetComponent <CupcakeTower>().enabled = true;
            GetComponent <CupcakeTower>().outlineActive(true);
            gameObject.AddComponent <BoxCollider2D>();

            TowerInfo.UpdateInfo();
            Destroy(this);
        }

        //배치 안되면 빨간색
        if (!deployAreaCheck.isPointerOnAllowedArea())
        {
            GetComponent <SpriteRenderer>().color = Color.red;
        }
        else
        {
            GetComponent <SpriteRenderer>().color = originColor;
        }
    }
Beispiel #6
0
    public void loadTowerInfo()
    {
        TowerInfo info = selectedTower.getProperties();

        typeText.text = selectedTower.type;

        this.transform.position = selectedTower.getLocation();

        levelText.text    = "Level " + (selectedTower.getLevel() + 1);
        damageText.text   = "Damage: " + info.damage;
        fireRateText.text = "Fire Rate: " + info.fireRate + "/sec";
        rangeText.text    = "Range: " + info.range.ToString();

        Text sellButtonText = sellButton.transform.GetChild(0).GetComponent <Text>();

        sellButtonText.text = "Sell ($" + (int)(selectedTower.getMoneyInvested() * buildManager.sellReturn) + ")";

        if (selectedTower.getLevel() >= selectedTower.properties.Length - 1) //means tower is max level
        {
            upgradeButton.GetComponent <Image>().enabled  = false;
            upgradeButton.GetComponent <Button>().enabled = false;
            upgradeButton.transform.GetChild(0).GetComponent <Text>().text = "Max Level";
        }
        else
        {
            upgradeButton.GetComponent <Image>().enabled  = true;
            upgradeButton.GetComponent <Button>().enabled = true;

            TowerInfo next = selectedTower.properties[selectedTower.getLevel() + 1];
            upgradeButton.transform.GetChild(0).GetComponent <Text>().text = "Upgrade ($" + next.cost + ")";

            updateButtonColor();
        }
    }
        public void CreateTower(TowerData towerData, IPlacementArea placementArea, IntVector2 placeGrid, Vector3 position, Quaternion rotation)
        {
            if (towerData == null)
            {
                return;
            }

            TowerLevelData towerLevelData = towerData.GetTowerLevelData(0);

            if (dataPlayer.Energy < towerLevelData.BuildEnergy)
            {
                return;
            }

            dataPlayer.AddEnergy(-towerLevelData.BuildEnergy);

            Tower tower = dataTower.CreateTower(towerData.Id);

            if (tower == null)
            {
                Log.Error("Create tower fail,Tower data id is '{0}'.", towerData.Id);
                return;
            }

            entityLoader.ShowEntity(towerData.EntityId, TypeUtility.GetEntityType(tower.Type),
                                    (entity) =>
            {
                EntityTowerBase entityTowerBase = entity.Logic as EntityTowerBase;
                dicTowerInfo.Add(tower.SerialId, TowerInfo.Create(tower, entityTowerBase, placementArea, placeGrid));
            }
                                    , EntityDataTower.Create(tower, position, rotation));

            HidePreviewTower();
        }
Beispiel #8
0
    //1-建造塔  2-升级塔  3-升级塔的技能
    public void ShowPanel(TowerInfo towerInfo)
    {
        int towerType  = towerInfo.towerType;
        int towerLevel = towerInfo.towerData._level;

        BuildTowerObj.SetActive(false);
        UpgradeTowerObj.SetActive(false);
        UpgradeSkillObj.SetActive(false);
        UpgradeFinalTower.SetActive(false);
        //升级技能
        if (nextlevel == null)
        {
            UpgradeSkillObj.SetActive(true);
        }
        //升级界面
        else if (nextlevel.Length == 1)
        {
            UpgradeTowerObj.SetActive(true);
        }
        //升级到最终状态
        else if (nextlevel.Length == 2)
        {
            UpgradeFinalTower.SetActive(true);
        }
        //开始建造界面
        else
        {
            BuildTowerObj.SetActive(true);
        }
    }
Beispiel #9
0
    private void OnMouseDown()
    {
        if (!infoWindow.gameObject.activeSelf)
        {
            Debug.Log("Paspaustas");
            if (TowerInfo.selected != null)
            {
                TowerInfo.selected.Hide();
            }

            TowerInfo.selected = this;
            infoWindow.gameObject.SetActive(true);
        }
        else if (infoWindow.gameObject.activeSelf)
        {
            Debug.Log("Paspaustas");
            if (TowerInfo.selected != null)
            {
                TowerInfo.selected.Hide();
            }

            TowerInfo.selected = this;
            infoWindow.gameObject.SetActive(false);
        }
    }
    void Update()
    {
        if (currentlyPlacing != null)
        {
            return;
        }

        if (Input.GetMouseButtonDown(0))
        {
            Ray          ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit2D hit = Physics2D.GetRayIntersection(ray, Mathf.Infinity);
            if (hit.collider != null && hit.collider.gameObject.tag == "Tower")
            {
                Tower tower = hit.collider.gameObject.GetComponent <Tower>();

                if (tower.moving)
                {
                    return;
                }
                TowerInfo towerInfo = towerManager.towers[(int)tower.type];

                UpdateUpgradeMenu(tower, towerInfo);

                upgradeMenu.enabled = true;
            }
            else if (!EventSystem.current.IsPointerOverGameObject())
            {
                upgradeMenu.enabled = false;
            }
        }
    }
    public static List <TowerInfo> ReadExcel(string ePath)
    {
        List <TowerInfo> list = new List <TowerInfo>();

        using (FileStream stream = File.Open(excelPath, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            using (IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream))
            {
                SetReader(excelReader);
                excelReader.Read();
                for (int i = 1; i < excelReader.RowCount; i++)
                {
                    excelReader.Read();
                    TowerInfo info = new TowerInfo();
                    info.towerId     = GetInt(0);
                    info.Name        = GetString(1);
                    info.Introduce   = GetString(2);
                    info.buildCoin   = GetInt(3);
                    info.sellCoin    = GetInt(4);
                    info.damageType  = GetInt(5);
                    info.damageRange = GetFloat(6);
                    info.CD          = GetFloat(7);
                    info.damage      = GetInt(8);
                    info.Range       = GetInt(9);
                    info.bullectPath = GetString(10);
                    info.nextTowerId = GetInt(11);
                    info.path        = GetString(12);
                    info.audio       = GetString(13);
                    info.helpSprite  = GetString(14);
                    list.Add(info);
                }
            }
        }
        return(list);
    }
    void Start()
    {
        Towers = StaticObject.Coookie.GetComponent <TowerManager>().Towers;

        Cookie = StaticObject.CookieCount;
        InvokeRepeating("BPS", 0, 1);
    }
Beispiel #13
0
    public void UpdateTowerIntro(int toweID)
    {
        //更新图片
        TowerInfo info = TowerInfoMgr.Instance.towerInfoList[toweID];

        Txt_TowerName.text      = info.Name;
        Txt_TowerIntroduce.text = info.Introduce;
        Img_TowerPicture.sprite = FactoryMgr.Instance.GetSprite(info.helpSprite);
        if (info.damageType == 1)
        {
            Txt_Phy.text   = info.damage.ToString();
            Txt_Magic.text = "0";
        }
        else
        {
            Txt_Phy.text   = "0";
            Txt_Magic.text = info.damage.ToString();
        }

        Txt_CD.text    = info.CD.ToString();
        Txt_Range.text = info.Range.ToString();
        if (!mBtn_TowerClose.interactable)//说明面板没有显示,显示面板
        {
            ShowTowerIntro();
        }
        if (mBtn_EnemyClose.interactable)//说明另一个面板还显示着,隐藏它
        {
            HideEnemyIntro();
        }
    }
    void Update()
    {
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        //Place/Buy
        if (Input.GetMouseButtonDown(0))
        {
            if (Physics.Raycast(ray.origin, ray.direction, out m_HitInfo, Mathf.Infinity, 1 << 11))
            {
                mouseCollider = m_HitInfo.collider;
                if (mouseCollider == GameObject.Find("Ground").GetComponent <BoxCollider>())
                {
                    ti = tower.GetComponent <TowerInfo>();
                    if (cc.money >= ti.price)
                    {
                        Vector3Int clonePos = new Vector3Int((int)m_HitInfo.point.x, (int)m_HitInfo.point.y, (int)m_HitInfo.point.z);
                        clone = Instantiate(tower, clonePos, Quaternion.identity);
                        cc.SubtractMoney(ti.price);
                        StartCoroutine(CheckPath(clone));
                    }
                }
            }
        }


        //Sell tower

        if (Input.GetMouseButtonDown(1))
        {
            RaycastHit[] hits = Physics.RaycastAll(ray.origin, ray.direction, Mathf.Infinity, 1 << 10);
            foreach (var hit in hits)
            {
                if (hit.collider.GetType() == typeof(BoxCollider))
                {
                    ti = hit.collider.gameObject.GetComponent <TowerInfo>();
                    cc.SellTower(ti.price);
                    Destroy(hit.collider.gameObject);
                }
            }
        }

        //Upgrade
        if (Input.GetKeyDown(KeyCode.U))
        {
            RaycastHit[] hits = Physics.RaycastAll(ray.origin, ray.direction, Mathf.Infinity, 1 << 10);

            foreach (var hit in hits)
            {
                ti = hit.collider.gameObject.GetComponent <TowerInfo>();
                if (hit.collider.GetType() == typeof(BoxCollider) && ti.price * 1.2f < cc.money)
                {
                    if (ti.LevelUp())
                    {
                        cc.SubtractMoney(Mathf.RoundToInt(ti.price * 1.2f));
                        ti.UpdatePrice(Mathf.RoundToInt(ti.price * 1.2f));
                    }
                }
            }
        }
    }
Beispiel #15
0
 public void FillInstance(TowerInfo instance)
 {
     instance.Damage = Damage;
     instance.Range  = Range;
     instance.Speed  = Speed;
     instance.Price  = Price;
     instance.Bullet = Bullet;
 }
Beispiel #16
0
        protected void SetParameters(TowerInfo parameters)
        {
            _fireRate   = parameters.fireRate;
            _shootPower = parameters.shootPower;
            _fireRange  = parameters.fireRange;

            _startState = parameters.GetState();
        }
Beispiel #17
0
    public static HashSet <HexCoord> GetRangeOfTower(TowerInfo tower, HashSet <HexCoord> vision)
    {
        var range = HexagonUtils.NeighborHexagons(tower.coord, tower.range);

        range.IntersectWith(vision);
        MapManager.Instance.RemoveHexagonsNotExists(range);
        return(range);
    }
Beispiel #18
0
 public void RemoveTower(TowerInfo t)
 {
     if (visionTowers.Contains(t))
     {
         visionTowers.Remove(t);
         RecalcVision();
     }
 }
Beispiel #19
0
    // Remembers state information, makes decisions
    // gets input from others, informs whoever needs it whenever they need it

    // TODO: Next round....

    void Start()
    {
        towerCreator = gameObject.GetComponent <TowerCreator> ();
        gameManager  = gameObject.GetComponent <GameManager> ();
        gameMenu     = gameObject.GetComponent <GameMenu> ();
        towerInfo    = gameObject.GetComponent <TowerInfo> ();
        enemyManager = gameObject.GetComponent <EnemyManager> ();
    }
    public void Load(Tower tower)
    {
        _tower = tower;

        TowerInfo info = Game.Instance.StaticData.GetTowerInfo(tower.Id);
        string    path = "Res/Roles/" + (tower.IsTopLevel ? info.DisabledIcon : info.NormalIcon);

        _spriteRenderer.sprite = Resources.Load <Sprite>(path);
    }
 public void Fill(TowerInfo _info)
 {
     info = _info;
     towerImage.sprite = Sprite.Create(_info.Image, new Rect(0f, 0f, _info.Image.width, _info.Image.height), Vector2.zero);
     damageText.text   = _info.Damage.ToString();
     rangeText.text    = _info.Range.ToString();
     speedText.text    = _info.Speed.ToString();
     priceText.text    = _info.Price.ToString();
 }
Beispiel #22
0
    public void OnBtnMageTowerClick(GameObject go)
    {
        TowerInfo newTower = EntityManager.getInstance().AddTower(6);
        Vector3   pos      = towerInfo.GetPosition();

        newTower.SetPosition(pos.x, pos.y, pos.z);
        EntityManager.getInstance().RemoveTower(towerInfo.Id);
        UiManager.Instance.CloseUIById(UIDefine.eSelectPanel);
    }
Beispiel #23
0
 public void InitData(TowerInfo info)
 {
     mAttack          = info.Attack;
     AttackCD         = info.AttackCD;
     AttackRange      = info.AttackRange;
     mBulletModelName = info.BulletModelName;
     BulletMoveSpd    = info.BulletMoveSpd;
     mAttackAnim      = info.AttackAnim;
 }
Beispiel #24
0
 public void Add(TowerInfo tower)
 {
     if (!towers.Any(x => x.Id == tower.Id && x.Lac == tower.Lac))
     {
         Console.WriteLine($"Added {tower.ToString()}");
         towers.Add(tower);
         return;
     }
 }
    void Start()
    {
        user = GameObject.Find("0.User").GetComponent <csUserSaveNLoad>();

        towerDB      = GameObject.Find("DB_TOWER_TEST").GetComponent <csTowerDB>();
        towerInfo    = GameObject.Find("3.GameManager").GetComponent <TowerInfo>();
        SoundManager = GameObject.Find("4.Sound Manager").GetComponent <AudioScirpt>();
        SetInfo();
    }
Beispiel #26
0
    void SwitchTo(State newState)
    {
        if (newState == state)
        {
            return;
        }

        // exiting
        switch (state)
        {
        case State.SelectBuildingCoord:
            buildingTowerIndex = -1;
            break;

        case State.SelectAttactTarget:
        {
            selectedTower.GetComponent <RangeIndicator>().enabled = false;
            selectedTower.GetComponent <RangeIndicator>().RestoreMaterial();
            selectedTower.GetComponent <TowerHover>().enabled = true;
            selectedTower = null;
            towerCoord    = HexCoord.Invalid;
            towerRange    = null;
        }
        break;

        default:
            break;
        }

        state = newState;

        // enterting
        switch (state)
        {
        case State.Idle:
            if (null != ghostTower)
            {
                Destroy(ghostTower);
            }
            break;

        case State.SelectAttactTarget:
        {
            if (null != selectedTower)
            {
                selectedTower.GetComponent <TowerHover>().enabled       = false;
                selectedTower.GetComponent <RangeIndicator>().TintColor = buildingForbiden;
                selectedTower.GetComponent <RangeIndicator>().enabled   = true;
            }
        }
        break;

        default:
            break;
        }
    }
Beispiel #27
0
    public void Load(GameModel gm, Tower tower)
    {
        m_Tower = tower;

        //图标
        TowerInfo info = Game.Instance.StaticData.GetTowerInfo(tower.ID);
        string    path = "Res/Roles/" + (tower.IsTopLevel ? info.DisabledIcon : info.NormalIcon);

        m_Render.sprite = Resources.Load <Sprite>(path);
    }
            public static TowerInfo Create(Tower tower, EntityTowerBase entityTower, IPlacementArea placementArea, IntVector2 placeGrid)
            {
                TowerInfo towerInfo = ReferencePool.Acquire <TowerInfo>();

                towerInfo.Tower         = tower;
                towerInfo.EntityTower   = entityTower;
                towerInfo.PlacementArea = placementArea;
                towerInfo.PlaceGrid     = placeGrid;
                return(towerInfo);
            }
Beispiel #29
0
    public void EnterExcute()
    {
        //加入灰尘特效
        EntityManager.getInstance().AddStaticEffect(20, towerInfo.GetPosition());
        TowerInfo tower = EntityManager.getInstance().AddTower(changeTowerId);

        tower.SetPosition(towerInfo.GetPosition());
        tower.ChangeState("idle");
        EntityManager.getInstance().RemoveTower(towerInfo.Id);
    }
Beispiel #30
0
 public void Show(GameModel gm, Vector3 createPosition, bool upSide)
 {
     transform.position = createPosition;
     for (int i = 0; i < m_Icons.Length; i++)
     {
         TowerInfo info = Game.Instance.StaticData.GetTowerInfo(i);
         m_Icons[i].Load(gm, info, createPosition, upSide);
     }
     gameObject.SetActive(true);
 }
Beispiel #31
0
    void Start()
    {
        LastClickedCoordinates = new Vector2(0f, 0f);

        TowerInfo[] towerInfos = new TowerInfo[TowerTypes.Length];

        for (int i = 0; i<towerInfos.Length; i++) {
            towerInfos[i] = TowerTypes[i].GetComponent<Tower>().myInfo;
        }

        Global.Instance.SetUpTowerInfo (towerInfos);
    }
Beispiel #32
0
 //get tower parameters
 void GetTowerSetting()
 {
     for (int i=15; i<20; i++) {
         string txt=(string)lineList[i];
         string[] info=txt.Split(',');
         TowerInfo towerInfo=new TowerInfo();
         towerInfo.type=info[0].Split(':')[1];
         string power=info[1].Split(':')[1];
         string area=info[2].Split(':')[1];
         string time=info[3].Split(':')[1];
         string cost=info[4].Split(':')[1];
         string[] powers=power.Split(' ');
         string[] areas=area.Split(' ');
         string[] times=time.Split(' ');
         string[] costs=cost.Split(' ');
         for(int j=0;j<4;j++){
             towerInfo.power[j]=int.Parse(powers[j]);
             towerInfo.attackArea[j]=float.Parse(areas[j]);
             towerInfo.attackTime[j]=float.Parse(times[j]);
             towerInfo.cost[j]=int.Parse(costs[j]);
         }
         towersInfo.Add(towerInfo);
     }
 }
    private void MoveSpawnPreview()
    {
        if (playerTransform == null || cameraTransform == null)
        {
            playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
            cameraTransform = Camera.main.transform;
            return;
        }
        Vector3 previewPosition = playerTransform.position;
        #region make tower always have same distance from player - independent of angle
        var tempVector = (playerTransform.position - cameraTransform.position);
        tempVector.y = 0;
        #endregion
        previewPosition += tempVector.normalized * PREVIEW_DISTANCE_FROM_PLAYER;
        RaycastHit hit;
        if (Physics.Raycast(previewPosition + Vector3.up * 5, Vector3.down, out hit, 10, LayerMask.GetMask("Ground")))
            previewPosition.y = hit.point.y;
        //actually, we would really have to create 4 raycasts - and also check for collisions :) perhaps make tower object red

        var towerSpawnColliders = Physics.OverlapSphere(previewPosition, SPAWN_PREVIEW_SNAP_SPHERE_RADIUS, LayerMask.GetMask("TowerSpawn"));
        if (towerSpawnColliders.Length > 0)
        {
#if !_AWEFIJWAEF_
            float closestDistanceSqr = Vector3.SqrMagnitude(previewPosition - towerSpawnColliders[0].transform.position);
            int closestIndex = 0;
            for (int i = 1; i < towerSpawnColliders.Length; ++i)
            {
                float d = Vector3.SqrMagnitude(previewPosition - towerSpawnColliders[i].transform.position);
                if (d < closestDistanceSqr)
                {
                    closestDistanceSqr = d;
                    closestIndex = i;
                }
            }
            focusedTowerSpawn = towerSpawns.Find(t => t.Position == towerSpawnColliders[closestIndex].transform.position);
            previewPosition = focusedTowerSpawn.Position;
#else
            // thought this was simpler to write, looks a little crazy now and likely is not faster than original solution
            previewPosition = towerSpawnColliders.Select(tsc => tsc.transform.position).Intersect(towerSpawns.Select(ts => ts.Position))
                .Select(pos => new { position = pos, distance = Vector3.SqrMagnitude(previewPosition - pos) })
                .OrderBy(ele => ele.distance).Select(ele => ele.position).First();
#endif
        }
        else
        {
            focusedTowerSpawn = null;
        }

        // .. temporary fix ...
        previewPosition.y += 1;

        spawnPreview.transform.position = previewPosition;
    }
Beispiel #34
0
    public void SetUpTowerInfo(TowerInfo[] towerInfos)
    {
        float start = 0.15f;
        float diff = 0.2f;

        for(int i = 0; i<towerInfos.Length; i++){
            GameObject tower = GameObject.Instantiate(towerInfos[i].gameObject) as GameObject;

            tower.transform.position = new Vector3(start+diff*i,0.05f, 20f);

            tower.GetComponent<TowerInfo>().SetNumber(i+1);
        }
    }
 // Remembers state information, makes decisions
 // gets input from others, informs whoever needs it whenever they need it
 // TODO: Next round....
 void Start()
 {
     towerCreator = gameObject.GetComponent<TowerCreator> ();
     gameManager = gameObject.GetComponent<GameManager> ();
     gameMenu = gameObject.GetComponent<GameMenu> ();
     towerInfo = gameObject.GetComponent<TowerInfo> ();
     enemyManager = gameObject.GetComponent<EnemyManager> ();
 }