void EnterTower(EntityView ev) { if (m_nearTowerID != ev.ID) { m_TowerEV = ev; m_nearTowerID = ev.ID; m_nearTowerPos = ev.gameObject.transform.position; m_soldierCount = 0; IList <U3D_Render.EntityView> enemyList = MapFinderManager.Nearest(m_nearTowerPos, TowerStrikingDistance, SPELL.CampFlag.CampFlag_Friend); foreach (EntityView entity in enemyList) { if (entity.Property != null && entity.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SEX) == (int)MONSTER_TYPE.MONSTER_TYPE_COMMON) { if (entity.StateMachine != null && entity.StateMachine.GetState() != GameLogic.EntityState.Dead) { float dis = Vector3.SqrMagnitude(entity.gameObject.transform.position - m_TowerEV.gameObject.transform.position); if (dis <= TowerStrikingDistance * TowerStrikingDistance) { m_soldierCount++; } } } } UWarTowerSoldierMsgData data = new UWarTowerSoldierMsgData(true, m_soldierCount); UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WARTOWER_UPDATE, data); } }
void ExitTower() { if (m_nearTowerID != -1) { m_nearTowerID = -1; m_nearTowerPos = Vector3.one; m_soldierCount = 0; m_TowerEV = null; UWarTowerSoldierMsgData data = new UWarTowerSoldierMsgData(false, m_soldierCount); UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WARTOWER_UPDATE, data); } }
void UpdateNearTowerSoldier() { m_towerSoldierCheckTimer += Time.deltaTime; if (m_towerSoldierCheckTimer >= TowerSoldierCheckTime) { m_towerSoldierCheckTimer = 0f; if (m_nearTowerID > 0) { if (m_TowerEV == null || m_TowerEV.gameObject == null) { m_nearTowerID = -1; m_nearTowerPos = Vector3.one; m_soldierCount = 0; UWarTowerSoldierMsgData msgData = new UWarTowerSoldierMsgData(false, m_soldierCount); UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WARTOWER_UPDATE, msgData); return; } m_nearTowerPos = m_TowerEV.gameObject.transform.position; m_soldierCount = 0; IList <U3D_Render.EntityView> enemyList = MapFinderManager.Nearest(m_nearTowerPos, TowerStrikingDistance, SPELL.CampFlag.CampFlag_Friend); foreach (EntityView entity in enemyList) { if (entity.Property != null && entity.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SEX) == (int)MONSTER_TYPE.MONSTER_TYPE_COMMON) { if (entity.StateMachine != null && entity.StateMachine.GetState() != GameLogic.EntityState.Dead) { float dis = Vector3.SqrMagnitude(entity.gameObject.transform.position - m_TowerEV.gameObject.transform.position); if (dis <= TowerStrikingDistance * TowerStrikingDistance) { m_soldierCount++; } } } } UWarTowerSoldierMsgData data = new UWarTowerSoldierMsgData(true, m_soldierCount); UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WARTOWER_UPDATE, data); } } }
public void UpdateData(UWarTowerSoldierMsgData data) { countTxt.text = data.nSoldierCount.ToString(); m_wnd.SetVisible(data.bShow); }