// Use this for initialization void Start() { m_wave = 1; m_life = LifeIni; m_point = PointIni; m_result = 0; moneyLable = this.transform.FindChild ("money").FindChild ("lable").gameObject.GetComponent<UpgradeLableController> (); waveLable = this.transform.FindChild ("wave").FindChild ("lable").gameObject.GetComponent<UpgradeLableController> (); lifeLable = this.transform.FindChild ("life").FindChild ("lable").gameObject.GetComponent<UpgradeLableController> (); resultLable = this.transform.FindChild ("result").FindChild ("lable").gameObject.GetComponent<UpgradeLableController> (); moneyLable.text = "" + m_point; waveLable.text = "" + m_wave; lifeLable.text = "" + m_life; resultLable.text = "" + m_result; over = false; final_result = ""; clickUpgradeButtons=false; m_button = null; }
void detectCreateTower() { //If game have already over if (m_life <= 0) { return; } if (Input.GetMouseButtonDown (1)) {//cancel m_ui if(m_ui){ Destroy(m_ui); } if(m_button){ if(m_button.m_state==TowerButtonNew.StateID.ACTIVE){ m_button.m_state=TowerButtonNew.StateID.NORMAL; m_button.spriteRenderer.sprite=m_button.m_ButtonSkin[0]; } } } else if (Input.GetMouseButtonDown (0)) { //get the mouse click position Vector3 v3 = Camera.main.ScreenToWorldPoint (Input.mousePosition); Vector2 v2 = new Vector2 (v3.x, v3.y); RaycastHit2D hit = Physics2D.Raycast (v2, Vector2.zero); if (hit.collider != null) { //Debug.Log(hit.collider.tag); //check whether hit on the background if (hit.collider.tag.CompareTo("background")==0) { if(clickUpgradeButtons){ clickUpgradeButtons=false; Debug.Log("click on upgrade buttons!"); return; } if(m_ui){ Destroy(m_ui); } float rate=bgController.Instance.rate; //convert click position to array index float newX=(v2.x+(rate-1.0f)*this.transform.position.x)/rate; int inewX=(int)(newX*10.0f+0.5f)/10; //if the point beyond the scene ix=inewX; iy=(int)v2.y; if(ix>=GridMap.Instance.MapSizeX || iy>GridMap.Instance.MapSizeY || ix<0 || iy<0) { return; } //calculate the place position float posX=ix*rate-(rate-1.0f)*6.66f; Vector3 pos=new Vector3(posX+0.5f*rate,iy+0.5f,-2.0f); //check if this position can be put a defender if(GridMap.Instance.m_map[ix,iy].fieldtype==MapData.FieldTypeID.GuardPosition){ if(Settings.Instance.interID==1){ m_ui=(GameObject)Instantiate(createUI,pos,Quaternion.identity); m_ui.transform.parent=this.transform.parent; m_ui.transform.localScale=new Vector3(1.0f,1,1); } else if(Settings.Instance.interID==0){ //Build a tower if(m_button){ RecordController.Operation op=new RecordController.Operation(); op.posX=pos.x; op.posY=pos.y; op.time=RecordController.Instance.timer; //create tower CreateTower(pos); if(Settings.Instance.sound){ AudioSource.PlayClipAtPoint(placing,Camera.main.transform.position,1.0f); } switch(m_button.tower.GetComponent<DefenderController>().m_towerType){ case DefenderController.TowerType.LightTower: op.type=RecordController.OperationType.LightTower; break; case DefenderController.TowerType.HeavyTower: op.type=RecordController.OperationType.HeavyTower; break; case DefenderController.TowerType.PoisonTower: op.type=RecordController.OperationType.PoisonTower; break; case DefenderController.TowerType.IceTower: op.type=RecordController.OperationType.IceTower; break; case DefenderController.TowerType.ElecTower: op.type=RecordController.OperationType.ElecTower; break; } RecordController.Instance.ops.Add(op); m_button = null; } } }else{ m_button=null; //Debug.LogWarning("Cannot put here!!!"); m_forbid=(GameObject)Instantiate(forbidUI,pos,Quaternion.identity); m_forbid.transform.parent=this.transform.parent; m_forbid.transform.localScale=new Vector3(1.0f,1,1); Destroy(m_forbid,0.3f); } }else{ //Debug.Log("Do nothing"); } }else{ Debug.LogError("Click Nothing!"); } } }