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; }
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(); }
/** * 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())); }
// 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; } }
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(); }
//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); } }
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); }
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)); } } } } }
public void FillInstance(TowerInfo instance) { instance.Damage = Damage; instance.Range = Range; instance.Speed = Speed; instance.Price = Price; instance.Bullet = Bullet; }
protected void SetParameters(TowerInfo parameters) { _fireRate = parameters.fireRate; _shootPower = parameters.shootPower; _fireRange = parameters.fireRange; _startState = parameters.GetState(); }
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); }
public void RemoveTower(TowerInfo t) { if (visionTowers.Contains(t)) { visionTowers.Remove(t); RecalcVision(); } }
// 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(); }
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); }
public void InitData(TowerInfo info) { mAttack = info.Attack; AttackCD = info.AttackCD; AttackRange = info.AttackRange; mBulletModelName = info.BulletModelName; BulletMoveSpd = info.BulletMoveSpd; mAttackAnim = info.AttackAnim; }
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(); }
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; } }
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); }
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); }
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); }
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); }
//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; }
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> (); }