public MonsterRole AddDartCar(Variant d) { this.init(); bool loading = GRMap.loading; MonsterRole result; if (loading) { this.cacheProxy.Add(d); result = null; } else { Vector3 pos = new Vector3(d["x"] / 53.333f, 0f, d["y"] / 53.333f); int num = d["mid"]; uint num2 = d["iid"]; bool flag = this.m_mapMonster.ContainsKey(num2); if (flag) { this.RemoveMonster(num2); } SXML sXML = this.dMon[num]; int num3 = sXML.getInt("obj"); float @float = sXML.getFloat("scale"); string empty = string.Empty; bool flag2 = num2 <= 0u; if (flag2) { bool flag3 = Globle.m_nTestMonsterID > 0; if (flag3) { num3 = Globle.m_nTestMonsterID; } } MDC000 mDC = new MDC000(); mDC.tempXMl = sXML; mDC.isBoos = (sXML.getInt("boss") == 1); bool flag4 = @float > 0f; if (flag4) { mDC.scale = @float; } bool flag5 = mDC != null; if (flag5) { mDC.Init("monster/" + num3, EnumLayer.LM_MONSTER, pos, 0f); mDC.curhp = d["hp"]; mDC.maxHp = d["battleAttrs"]["max_hp"]; mDC.escort_name = d["escort_name"]; PlayerNameUIMgr.getInstance().show(mDC); PlayerNameUIMgr.getInstance().setDartName(mDC, d["escort_name"] + "军团的镖车"); mDC.roleName = d["escort_name"] + "军团的镖车"; mDC.monsterid = num; bool flag6 = mDC.roleName == ModelBase <A3_LegionModel> .getInstance().myLegion.name; if (flag6) { mDC.m_isMarked = false; } bool flag7 = num2 > 0u; if (flag7) { mDC.m_unIID = num2; this.m_mapMonster.Add(num2, mDC); } else { mDC.isfake = true; mDC.m_unIID = this.idIdx; this.m_mapFakeMonster.Add(this.idIdx, mDC); this.idIdx += 1u; } bool flag8 = !GRMap.loading; if (flag8) { mDC.refreshViewType(2); } mDC.dartid = num; mDC.isDart = true; } this.m_listMonster.Add(mDC); bool flag9 = mDC != null; if (flag9) { base.dispatchEvent(GameEvent.Create(MonsterMgr.EVENT_MONSTER_ADD, this, mDC, false)); } bool flag10 = d.ContainsKey("moving"); if (flag10) { uint @uint = d["iid"]._uint; MonsterRole monster = MonsterMgr._inst.getMonster(@uint); float float2 = d["moving"]["to_x"]._float; float float3 = d["moving"]["to_y"]._float; Vector3 sourcePosition = new Vector3(float2 * 32f / 53.333f, 0f, float3 * 32f / 53.333f); NavMeshHit navMeshHit; NavMesh.SamplePosition(sourcePosition, out navMeshHit, 100f, monster.m_layer); monster.SetDestPos(navMeshHit.position); } result = mDC; } return(result); }
public MonsterRole AddDartCar(Variant d)//镖车 { init(); if (GRMap.grmap_loading) { cacheProxy.Add(d); return(null); } Vector3 born_pt = new Vector3(d["x"] / GameConstant.PIXEL_TRANS_UNITYPOS, 0f, d["y"] / GameConstant.PIXEL_TRANS_UNITYPOS); int id = d["mid"]; uint serverid = d["iid"]; if (m_mapMonster.ContainsKey(serverid)) { return(m_mapMonster[serverid]); } SXML xml = dMon[id]; int tempid = xml.getInt("obj"); float scale = xml.getFloat("scale"); string name = string.Empty; if (serverid <= 0) { if (Globle.m_nTestMonsterID > 0) { tempid = Globle.m_nTestMonsterID; } } MDC000 mon = new MDC000(); mon.tempXMl = xml; mon.isBoos = xml.getInt("boss") == 1; mon.isBoss_c = xml.getInt("boss_c") == 1; if (scale > 0f) { mon.scale = scale; } if (mon != null) { if (serverid > 0) { mon.m_unIID = serverid; m_mapMonster.Add(serverid, mon);//这个地图上的所有的monster } else { mon.isfake = true; mon.m_unIID = idIdx; m_mapFakeMonster.Add(idIdx, mon); idIdx++; } mon.Init("monster_" + tempid, EnumLayer.LM_MONSTER, born_pt, 0); mon.curhp = d["hp"]; mon.maxHp = d["battleAttrs"]["max_hp"]; mon.escort_name = d["escort_name"]; PlayerNameUIMgr.getInstance().show(mon); PlayerNameUIMgr.getInstance().setDartName(mon, d["escort_name"] + ContMgr.getCont("MonsterMgr1")); mon.roleName = d["escort_name"] + ContMgr.getCont("MonsterMgr1"); mon.monsterid = id; if (mon.roleName == A3_LegionModel.getInstance().myLegion.name) { mon.m_isMarked = false; } //if (GRMap.grmap_loading == false) // mon.refreshViewType(2); mon.dartid = id; mon.isDart = true; } m_listMonster.Add(mon); if (mon != null) { dispatchEvent(GameEvent.Create(MonsterMgr.EVENT_MONSTER_ADD, this, mon)); } if (d.ContainsKey("moving")) { uint iid = d["iid"]._uint; var vv = MonsterMgr._inst.getMonster(iid); float to_x = d["moving"]["to_x"]._float; float to_y = d["moving"]["to_y"]._float; NavMeshHit hit; Vector3 vec = new Vector3(to_x * 32 / GameConstant.PIXEL_TRANS_UNITYPOS, 0f, to_y * 32 / GameConstant.PIXEL_TRANS_UNITYPOS); NavMesh.SamplePosition(vec, out hit, 100f, vv.m_layer); vv.SetDestPos(hit.position); } return(mon); }