public bool UpdateData(PlayerDataRequire require, bool isReallyUpdate = true) //isReallyUpdate为false时相当于仅检测 { PlayerDataEnum dataEnum = require.dataEnum; int val = require.updateVal; if (!data.ContainsKey(dataEnum)) { data.Add(dataEnum, 0); } if (data[dataEnum] + val < 0) { if (OnPlayerDataLack != null) { OnPlayerDataLack.Invoke(this, require); } return(false); } else { if (isReallyUpdate) { data[dataEnum] += val; if (OnPlayerDataChange != null) { OnPlayerDataChange.Invoke(this, require); } } return(true); } }
IEnumerator SelectToLand(Pipe pipe) { while (true) { Vector2 point = Camera.main.ScreenToWorldPoint(Input.mousePosition); pipe.Stretch(point, pipe.GetLength(point) < maxPipeLen); if (Input.GetMouseButtonDown(0)) { RaycastHit2D hit = Physics2D.Raycast(point, Vector2.zero); if (hit.collider) { Land land = hit.collider.GetComponent <Land>(); float dis = 0; if (land != null && !land.Equals(LandPanel.GetInstance().GetCurPointLand()) && //不建立自己到自己的pipe pipe.GetPlayer().Equals(land.GetPlayer()) && //不建立自己到别人的pipe (dis = pipe.GetLength(point)) < maxPipeLen) //不能太长 { PlayerDataRequire dataRequire = new PlayerDataRequire(PlayerData.PlayerDataEnum.capital, -(int)(pipeCostPerLen * dis)); bool ret = pipe.GetPlayer().GetData().UpdateData(dataRequire, false); if (!ret) { break; //资金不够 } pipe.GetPlayer().GetData().UpdateData(dataRequire, true); pipe.SetToLand(land); break; } } Destroy(pipe.gameObject); break; } yield return(0); } MouseStateRecorder.GetInstance().SetCurMouseState(MouseStateRecorder.MouseState.normal); }
private void Data_OnPlayerDataLack(object s, PlayerDataRequire require) { }
private void Data_OnPlayerDataChange(object s, PlayerDataRequire require) { dataText[require.dataEnum].text = (s as PlayerData).GetDataByEnum(require.dataEnum).ToString(); }