public void onHit(int _demage, int num = 1) { float _delay = 0.0f; for (int i = 0; i < num; i++) { Loom.QueueOnMainThread(() => { if (PropertyDic [Property.HP] > 0) { Bleed bleed = (Bleed)PoolManager.getInstance().getGameObject("Bleed"); if (_demage > 0) { iTween.ShakePosition(style.gameObject, new Vector3(5.0f, 5.0f, 0.0f), 0.2f); bleed.blood.color = DataManager.getInstance().getColor("red"); } else { //加血 bleed.blood.color = DataManager.getInstance().getColor("green"); } int buffhp = PropertyAddByBuffDic [Property.HP]; //护盾 buffhp = buffhp - _demage; PropertyAddByBuffDic [Property.HP] = buffhp < 0 ? 0 : buffhp; if (buffhp < 0 || _demage < 0) { int hp = PropertyDic [Property.HP]; int maxhp = PropertyDic [Property.MAXHP]; hp = hp + buffhp; hp = hp >= 0 ? hp : 0; hp = hp >= maxhp ? maxhp : hp; float xscale = (float)hp / (float)maxhp; HP.transform.localScale = new Vector3(xscale, 1, 1); HPTxt.text = (Math.Ceiling(xscale * 100)).ToString() + "%"; PropertyDic [Property.HP] = hp; } else { buffhp = 0; } bleed.transform.SetParent(this.transform); bleed.show(buffhp, () => { if (PropertyDic [Property.HP] == 0) { onDead(); } pvescene.checkBout(); }); } }, _delay); _delay += 0.3f; } }
public void showPropertyChange(Property changeEntityProperty, int _changeValue, int valueType) { Bleed bleed = (Bleed)PoolManager.getInstance().getGameObject("Bleed"); if (_changeValue > 0) { bleed.blood.color = DataManager.getInstance().getColor("green"); } else { bleed.blood.color = DataManager.getInstance().getColor("red"); } bleed.transform.SetParent(this.transform); string str = ""; switch (valueType) { case 0: str = DataManager.getInstance().languageJson [10011 + (int)changeEntityProperty] ["name"].ToString() + _changeValue.ToString(); if (changeEntityProperty == Property.HP) { if (PropertyDic [Property.HP] > PropertyDic [Property.MAXHP]) { PropertyDic [Property.HP] = PropertyDic [Property.MAXHP]; } float xscale = (float)PropertyDic [Property.HP] / (float)PropertyDic [Property.MAXHP]; HP.transform.localScale = new Vector3(xscale, 1, 1); HPTxt.text = (Math.Ceiling(xscale * 100)).ToString() + "%"; } break; case 1: str = DataManager.getInstance().languageJson [10023 + (int)changeEntityProperty]["name"].ToString() + _changeValue.ToString(); break; case 2: str = DataManager.getInstance().languageJson [10035 + (int)changeEntityProperty]["name"].ToString() + _changeValue.ToString(); break; default: break; } bleed.show(str, () => { if (PropertyDic [Property.HP] == 0) { onDead(); } pvescene.checkBout(); }); }
public void initMonster() { MonsterManager.getInstance().initMonsterData(ChapterManager2.getInstance().monsterPath); PveMonsterList.Clear(); ArrayList monsterArr = MonsterManager.getInstance().getPveMonstersByBoShu(monsterBoShu, bg.transform); if (monsterArr.Count > 0) { Bleed bleed = (Bleed)PoolManager.getInstance().getGameObject("Bleed"); bleed.transform.SetParent(bg.transform); bleed.show("第 " + monsterBoShu.ToString() + " 回合", () => { for (int i = 0; i < monsterArr.Count; i++) { string[] oneData = (string[])monsterArr [i]; JsonObject _monsterData = DataManager.getInstance().monsterDicJson [int.Parse(oneData [1])]; PveMonster pvmonster = (PveMonster)PoolManager.getInstance().getGameObject("PveMonster"); //foreach (KeyValuePair<int,PveMonster> kvp in PveMonsterList) { pvmonster.transform.SetParent(bg.transform); pvmonster.transform.localScale = Vector3.one; JsonObject _monsterpos = DataManager.getInstance().pvePosJson [int.Parse(oneData [2])]; pvmonster.transform.localPosition = new Vector3(float.Parse(_monsterpos ["x"].ToString()), float.Parse(_monsterpos ["y"].ToString()), float.Parse(_monsterpos ["z"].ToString())); pvmonster.init(_monsterData, this); PveMonsterList [i] = pvmonster; //} } monsterBoShu++; sortEntityBySpeed(); setNextAttackEntityBySpeed(); }); //Loom.QueueOnMainThread (, 2.0f); } else { gameOver(); //战斗结束 } }