public void SetRegionObj(int nIndex, int Id, int nNum, int Time, int dir) { RegionObjInfo obj = m_RegionNpcInfo[nIndex]; obj.Nums = nNum; obj.ObjId = Id; obj.Time = Time; obj.Per = 0; obj.Dir = dir; }
void ExportRegionNpcInfo(string tablename, Transform parent, ref StreamWriter sw) { int index = 1; string key = tablename; for (int i = 0; i < parent.childCount; ++i) { Transform ChildTRF = parent.GetChild(i); BornInfo info = ChildTRF.GetComponent <BornInfo>(); key = tablename + "[" + (index++).ToString() + "]"; Vector2 mapPos = m_csPathGrid.GetMapPosByWordPos(ChildTRF.position.x, ChildTRF.position.y); int id = info.mi_Id; sw.WriteLine(key + "= {}"); sw.WriteLine(key + "['ID']" + " = " + i); sw.WriteLine(key + "['Type']" + " = " + info.m_eObjType); sw.WriteLine(key + "['GridX']" + " = " + mapPos.x.ToString()); sw.WriteLine(key + "['GridY']" + " = " + mapPos.y.ToString()); sw.WriteLine(key + "['GridW']" + " = " + info.m_nWidth); sw.WriteLine(key + "['GridH']" + " = " + info.m_nHeight); sw.WriteLine(key + "['NpcSum']" + " = " + info.m_RegionNpcInfo.Count); for (int k = 0; k < info.m_RegionNpcInfo.Count; k++) { RegionObjInfo objinfo = info.m_RegionNpcInfo[k]; int showkey = k + 1; sw.WriteLine(key + "['npc_" + showkey + "']" + " = {}"); sw.WriteLine(key + "['npc_" + showkey + "']['Nums']" + " = " + objinfo.Nums); sw.WriteLine(key + "['npc_" + showkey + "']['ObjId']" + " = " + objinfo.ObjId); sw.WriteLine(key + "['npc_" + showkey + "']['Dir']" + " = " + objinfo.Dir); sw.WriteLine(key + "['npc_" + showkey + "']['Per']" + " = " + 0); sw.WriteLine(key + "['npc_" + showkey + "']['Time']" + " = " + objinfo.Time); sw.WriteLine(key + "['npc_" + showkey + "']['Rate']" + " = " + objinfo.Rate); } sw.WriteLine(key + "['MinPower']" + " = " + info.m_minPower); sw.WriteLine(key + "['MaxPower']" + " = " + info.m_maxPower); } }
void DrawBornInfo() { if (mo_ChooseObj == null) { return; } GUI.backgroundColor = Color.red; GUI.color = Color.yellow; GUI.skin.textField.fontSize = 15; GUI.skin.label.fontSize = 12; GUI.skin.box.fontSize = 15; EditorStyles.popup.fontSize = 12; EditorGUILayout.BeginVertical(); DrawBoxWithText("类型", GetTypeNameByObjectType((CreateObjType)mcs_Borninfo.m_eObjType)); if (name.Length > 0) { DrawBoxWithText("名字", name); } DrawBoxWithText("ID", mcs_Borninfo.mi_ObjId.ToString()); if (mcs_Borninfo.m_eObjType != 1)//不是功能NPC,就一定有强度 { m_minPower = DrawBoxWithInt("怪物限定最低强度:", mcs_Borninfo.m_minPower); mcs_Borninfo.m_minPower = m_minPower; m_maxPower = DrawBoxWithInt("怪物限定最低强度:", mcs_Borninfo.m_maxPower); mcs_Borninfo.m_maxPower = m_maxPower; m_groupId = DrawBoxWithInt("怪物组id:", mcs_Borninfo.mi_Group); mcs_Borninfo.mi_Group = m_groupId; } m_nRebornTime = DrawBoxWithInt("OBJ复活时间:", mcs_Borninfo.m_nRebornTime); mcs_Borninfo.m_nRebornTime = m_nRebornTime; Transform tran = mo_ChooseObj.transform; Vector2 pos = SceneEditorWindow._windowInstance.GetMapPosWith3DPos(tran.position.x, tran.position.y); DrawBoxWithInt("X坐标", (int)pos.x); DrawBoxWithInt("Y坐标", (int)pos.y); //tran.localPosition = new Vector3(posx, DrawBoxWithInt("Y坐标", posy) + 0.5f, tran.localPosition.z); int angel = GetAngelWithDireciton((enDirection)DrawBoxWithPop("朝向", (int)GetDirectionWithAngel(mcs_Borninfo.rotation), ref m_saDirection)); mcs_Borninfo.rotation = angel; if (mcs_Borninfo.m_eObjType == 1) { int graphDir = DrawBoxWithInt("图形朝向:", mcs_Borninfo.graphDir); mcs_Borninfo.graphDir = graphDir; } if (mcs_Borninfo.me_Type == CreateMode.enRegionObj) { m_nWidth = DrawBoxWithInt("随机范围Width:", mcs_Borninfo.m_nWidth); mcs_Borninfo.m_nWidth = m_nWidth; m_nHeight = DrawBoxWithInt("随机范围Height:", mcs_Borninfo.m_nHeight); mcs_Borninfo.m_nHeight = m_nHeight; m_SumonNum = DrawBoxWithInt("随机怪组数:", mcs_Borninfo.m_RegionNpcInfo.Count); //mcs_Borninfo.m_SumonNum = m_SumonNum; mcs_Borninfo.ReSizeRegionObj(m_SumonNum); for (int regionindex = 0; regionindex < mcs_Borninfo.m_RegionNpcInfo.Count; regionindex++) { int showindex = regionindex + 1; RegionObjInfo regionobj = mcs_Borninfo.m_RegionNpcInfo[regionindex]; int nID = DrawBoxWithInt("随机怪物" + showindex + "ID:", regionobj.ObjId); int nNum = DrawBoxWithInt("随机怪物" + showindex + "数量:", regionobj.Nums); int Time = DrawBoxWithInt("随机怪物" + showindex + "时间:", regionobj.Time); int Dir = DrawBoxWithInt("随机怪物" + showindex + "朝向:", regionobj.Dir); int nRate = DrawBoxWithInt("随机怪物" + showindex + "几率:", regionobj.Rate); regionobj.ObjId = nID; regionobj.Nums = nNum; regionobj.Time = Time; regionobj.Dir = Dir; regionobj.Rate = nRate; } } else { if (mcs_Borninfo.m_eObjType == 0) { m_nRebornTime = DrawBoxWithInt("重生时间", mcs_Borninfo.m_nRebornTime); mcs_Borninfo.m_nRebornTime = m_nRebornTime; m_nLiveTime = DrawBoxWithInt("生存时间", mcs_Borninfo.m_nLiveTime); mcs_Borninfo.m_nLiveTime = m_nLiveTime; int nRate = DrawBoxWithInt("几率:", mcs_Borninfo.m_nRate); mcs_Borninfo.m_nRate = nRate; m_nRoundType = DrawBoxWithIntPop("巡逻类型", mcs_Borninfo.m_RoundType, m_RoundType, m_sRoundType); mcs_Borninfo.m_RoundType = m_nRoundType; m_nRoundNum = DrawBoxWithInt("巡逻点数量", mcs_Borninfo.m_PatrolInfo.Count); mcs_Borninfo.ReSizePatrolPoint(m_nRoundNum); //巡逻点 for (int i = 0; i < mcs_Borninfo.m_PatrolInfo.Count; i++) { PatrolPointInfo point = mcs_Borninfo.m_PatrolInfo[i]; int WaitTime = DrawBoxWithInt(" 等待时间", point.m_WaitTime); int ActionId = DrawBoxWithInt(" 行为Id", point.m_ActionId); int gridx = DrawBoxWithInt(" X坐标", point.m_GridX); int gridy = DrawBoxWithInt(" Y坐标", point.m_GridY); point.m_WaitTime = WaitTime; point.m_ActionId = ActionId; //point.m_GridX = gridx; //point.m_GridY = gridy; } } if (mcs_Borninfo.m_eObjType == 1) { m_nMoveMode = DrawBoxWithIntPop("移动方式", mcs_Borninfo.m_nMoveMode, m_MoveMode, m_sMoveMode); mcs_Borninfo.m_nMoveMode = m_nMoveMode; m_nMoveRadius = DrawBoxWithInt("移动半径:", mcs_Borninfo.m_nMoveRadius); mcs_Borninfo.m_nMoveRadius = m_nMoveRadius; m_nRoundType = DrawBoxWithIntPop("巡逻类型", mcs_Borninfo.m_RoundType, m_RoundType, m_sRoundType); mcs_Borninfo.m_RoundType = m_nRoundType; m_nRoundNum = DrawBoxWithInt("巡逻点数量", mcs_Borninfo.m_PatrolInfo.Count); mcs_Borninfo.ReSizePatrolPoint(m_nRoundNum); //巡逻点 for (int i = 0; i < mcs_Borninfo.m_PatrolInfo.Count; i++) { PatrolPointInfo point = mcs_Borninfo.m_PatrolInfo[i]; int WaitTime = DrawBoxWithInt(" 等待时间", point.m_WaitTime); int ActionId = DrawBoxWithInt(" 行为Id", point.m_ActionId); int gridx = DrawBoxWithInt(" X坐标", point.m_GridX); int gridy = DrawBoxWithInt(" Y坐标", point.m_GridY); point.m_WaitTime = WaitTime; point.m_ActionId = ActionId; point.m_GridX = gridx; point.m_GridY = gridy; } } if (mcs_Borninfo.m_eObjType == 2) { int nRate = DrawBoxWithInt("几率:", mcs_Borninfo.m_nRate); mcs_Borninfo.m_nRate = nRate; m_nDelayBornTime = DrawBoxWithInt("延迟出生时间", mcs_Borninfo.m_nDelayBornTime); mcs_Borninfo.m_nDelayBornTime = m_nDelayBornTime; m_nTrapSceneId = DrawBoxWithInt("OBJ传送场景id:", mcs_Borninfo.m_nTrapSceneId); mcs_Borninfo.m_nTrapSceneId = m_nTrapSceneId; m_nPosX = DrawBoxWithInt("OBJ传送位置X:", mcs_Borninfo.m_nPosX); mcs_Borninfo.m_nPosX = m_nPosX; m_nPosY = DrawBoxWithInt("OBJ传送位置Y:", mcs_Borninfo.m_nPosY); mcs_Borninfo.m_nPosY = m_nPosY; } } EditorGUILayout.EndVertical(); RestorGuiSkin(); }
public void ImportNpcMapInfo(string filePath) { m_bOnImport = true; CreateMode mode = InteractionTool.GetNowCreateMode(); BornInfo info; int preid = InteractionTool.m_iChooseFunNpcId; InteractionTool.SetCanDraw(false); //fileName = fileName.Substring(filename.IndexOf("/Scene/") + "/Scene/".Length).Replace(".lua", ""); string fileName = filePath.Substring(filePath.IndexOf("/Map/") + 1).Replace(".lua", ""); object[] objarray = m_fLoadFunNpcFun.LazyCall(fileName); string sRegionNpcIdInfo = objarray[0].ToString(); LuaTable tRegionNpcInfo = (LuaTable)objarray[1]; string sPointNpcIdInfo = objarray[2].ToString(); LuaTable tPointNpcInfo = (LuaTable)objarray[3]; string sPathSetInfo = objarray[4].ToString(); LuaTable tPathSetInfo = (LuaTable)objarray[5]; string sScenePointInfo = objarray[6].ToString(); LuaTable tScenenPointInfo = (LuaTable)objarray[7]; string[] npcIdList = sRegionNpcIdInfo.Split(','); for (int i = 0; i < npcIdList.Length; i++) { int id = -1; if (!int.TryParse(npcIdList[i], out id)) { continue; } LuaTable npcInfo = (LuaTable)tRegionNpcInfo[id]; int Type = int.Parse(npcInfo["Type"].ToString()); int ID = int.Parse(npcInfo["ID"].ToString()); int GridX = int.Parse(npcInfo["GridX"].ToString()); int GridY = int.Parse(npcInfo["GridY"].ToString()); int GridW = int.Parse(npcInfo["GridW"].ToString()); int GridH = int.Parse(npcInfo["GridH"].ToString()); int summonNum = int.Parse(npcInfo["NpcSum"].ToString()); List <RegionObjInfo> regionObjInfo = new List <RegionObjInfo>(); int ObjId = 0; int Dir = 0; for (int key = 0; key < summonNum; key++) { int showkey = key + 1; LuaTable tNpc = (LuaTable)npcInfo["npc_" + showkey]; ObjId = int.Parse(tNpc["ObjId"].ToString()); int Nums = int.Parse(tNpc["Nums"].ToString()); Dir = int.Parse(tNpc["Dir"].ToString()); int Time = int.Parse(tNpc["Time"].ToString()); int nRate = 0; if (tNpc["Rate"] != null && tNpc["Rate"].ToString() != "") { nRate = int.Parse(tNpc["Rate"].ToString()); } RegionObjInfo newobj = new RegionObjInfo(); newobj.ObjId = ObjId; newobj.Nums = Nums; newobj.Dir = Dir; newobj.Time = Time; newobj.Per = 0; newobj.Rate = nRate; regionObjInfo.Add(newobj); } int minPower = 1; if (npcInfo["MinPower"] != null && npcInfo["MinPower"].ToString() != "") { minPower = int.Parse(npcInfo["MinPower"].ToString()); } int maxPower = 99; if (npcInfo["MaxPower"] != null && npcInfo["MaxPower"].ToString() != "") { maxPower = int.Parse(npcInfo["MaxPower"].ToString()); } GameObject obj = InteractionTool.AddReginNpc(GridX, GridY, -1, ObjId, (CreateObjType)Type, Dir); if (obj != null) { BornInfo bornInfo = obj.GetComponent <BornInfo>(); bornInfo.m_minPower = minPower; bornInfo.m_maxPower = maxPower; bornInfo.m_nWidth = GridW; bornInfo.m_nHeight = GridH; bornInfo.m_RegionNpcInfo = regionObjInfo; } } string[] funNpcIdList = sPointNpcIdInfo.Split(','); for (int i = 0; i < funNpcIdList.Length; i++) { int funnpcid = -1; if (!int.TryParse(funNpcIdList[i], out funnpcid)) { continue; } LuaTable funNpcInfo = (LuaTable)tPointNpcInfo[funnpcid]; int Type = int.Parse(funNpcInfo["Type"].ToString()); int ID = int.Parse(funNpcInfo["ID"].ToString()); int nTime = 0; if (funNpcInfo["Time"] != null && funNpcInfo["Time"].ToString() != "") { nTime = int.Parse(funNpcInfo["Time"].ToString()); } int nLiveTime = 0; if (funNpcInfo["LiveTime"] != null && funNpcInfo["LiveTime"].ToString() != "") { nLiveTime = int.Parse(funNpcInfo["LiveTime"].ToString()); } int nDelayBornTime = 0; if (funNpcInfo["DelayBornTime"] != null && funNpcInfo["DelayBornTime"].ToString() != "") { nLiveTime = int.Parse(funNpcInfo["DelayBornTime"].ToString()); } int nRate = 0; if (funNpcInfo["Rate"] != null && funNpcInfo["Rate"].ToString() != "") { nRate = int.Parse(funNpcInfo["Rate"].ToString()); } int nGraphicDir = 0; if (funNpcInfo["GraphicDir"] != null && funNpcInfo["GraphicDir"].ToString() != "") { nGraphicDir = int.Parse(funNpcInfo["GraphicDir"].ToString()); } int ObjId = int.Parse(funNpcInfo["ObjId"].ToString()); int GridX = int.Parse(funNpcInfo["GridX"].ToString()); int GridY = int.Parse(funNpcInfo["GridY"].ToString()); int Dir = int.Parse(funNpcInfo["Dir"].ToString()); int nTrapSceneId = 0; int nTrapPosX = 0; int nTrapPosY = 0; if (funNpcInfo["Tranp_SceneID"] != null && funNpcInfo["Tranp_SceneID"].ToString() != "") { nTrapSceneId = int.Parse(funNpcInfo["Tranp_SceneID"].ToString()); nTrapPosX = int.Parse(funNpcInfo["Tranp_PosX"].ToString()); nTrapPosY = int.Parse(funNpcInfo["Tranp_PosY"].ToString()); } int minPower = 1; if (funNpcInfo["MinPower"] != null && funNpcInfo["MinPower"].ToString() != "") { minPower = int.Parse(funNpcInfo["MinPower"].ToString()); } int maxPower = 99; if (funNpcInfo["MaxPower"] != null && funNpcInfo["MaxPower"].ToString() != "") { maxPower = int.Parse(funNpcInfo["MaxPower"].ToString()); } int RoundType = 0; if (funNpcInfo["RoundType"] != null && funNpcInfo["RoundType"].ToString() != "") { RoundType = int.Parse(funNpcInfo["RoundType"].ToString()); } int LinkID = 0; if (funNpcInfo["LinkID"] != null && funNpcInfo["LinkID"].ToString() != "") { LinkID = int.Parse(funNpcInfo["LinkID"].ToString()); } int RoundNum = 0; if (funNpcInfo["RoundNum"] != null && funNpcInfo["RoundNum"].ToString() != "") { RoundNum = int.Parse(funNpcInfo["RoundNum"].ToString()); } List <PatrolPointInfo> patrolInfo = new List <PatrolPointInfo>(); int MoveMode = 0; int MoveRadius = 0; if (RoundNum > 0) { for (int key = 0; key < RoundNum; key++) { LuaTable tRoundInfo = (LuaTable)funNpcInfo["Round_" + key.ToString()]; PatrolPointInfo patrolpoint = new PatrolPointInfo(); patrolpoint.m_WaitTime = int.Parse(tRoundInfo["WaitTime"].ToString()); patrolpoint.m_ActionId = int.Parse(tRoundInfo["ActionID"].ToString()); patrolpoint.m_GridX = int.Parse(tRoundInfo["GridX"].ToString()); patrolpoint.m_GridY = int.Parse(tRoundInfo["GridY"].ToString()); patrolInfo.Add(patrolpoint); } } else { if (funNpcInfo["MoveMode"] != null && funNpcInfo["MoveMode"].ToString() != "") { MoveMode = int.Parse(funNpcInfo["MoveMode"].ToString()); } if (funNpcInfo["MoveRadius"] != null && funNpcInfo["MoveRadius"].ToString() != "") { MoveRadius = int.Parse(funNpcInfo["MoveRadius"].ToString()); } } GameObject obj = InteractionTool.AddPointNpc(GridX, GridY, -1, ObjId, (CreateObjType)Type, Dir); if (obj != null) { BornInfo bornInfo = obj.GetComponent <BornInfo>(); bornInfo.m_nRebornTime = nTime; bornInfo.m_nTrapSceneId = nTrapSceneId; bornInfo.m_nPosX = nTrapPosX; bornInfo.m_nPosY = nTrapPosY; bornInfo.m_minPower = minPower; bornInfo.m_maxPower = maxPower; bornInfo.mi_Group = LinkID; bornInfo.m_RoundType = RoundType; bornInfo.m_nMoveMode = MoveMode; bornInfo.m_nMoveRadius = MoveRadius; bornInfo.m_nLiveTime = nLiveTime; bornInfo.m_nDelayBornTime = nDelayBornTime; bornInfo.m_nRate = nRate; bornInfo.graphDir = nGraphicDir; for (int n = 0; n < patrolInfo.Count; n++) { PatrolPointInfo point = patrolInfo[n]; InteractionTool.AddNpcPatrolPoint(point.m_GridX, point.m_GridY, -1, obj); } bornInfo.m_PatrolInfo = patrolInfo; } } Debug.Log("导入功能NPC文件完成:" + filePath); InteractionTool.SetCanDraw(true); InteractionTool.SetCreateMode(mode); m_bOnImport = false; SceneEditorWindow._windowInstance.m_sBornListPath = filePath; }
public GameObject AddReginNpc(float posx, float posy, float posz, int id, CreateObjType eType, int rotation) { GameObject obj = InstantiatePrefabWithpos(posx, posy, posz, ref RegionBorn); obj.transform.SetParent(RegionParent); obj.name = "范围刷怪点"; if (eType == CreateObjType.eFunNpc) { FunNpcInfo funnpcinfo; if (EditerDataClass._Instance.GetFunNpcInfo().TryGetValue(id, out funnpcinfo)) { BornInfo bornInfo = obj.GetComponent <BornInfo>(); if (bornInfo != null) { bornInfo.m_eObjType = 1; bornInfo.me_Type = CreateMode.enRegionObj; bornInfo.mi_ObjId = id; bornInfo.ms_Name = funnpcinfo.name; bornInfo.rotation = rotation; } } } if (eType == CreateObjType.eMonster) { NpcInfo npcinfo; if (EditerDataClass._Instance.GetNpcInfo().TryGetValue(id, out npcinfo)) { BornInfo bornInfo = obj.GetComponent <BornInfo>(); if (bornInfo != null) { bornInfo.m_eObjType = 0; bornInfo.me_Type = CreateMode.enRegionObj; bornInfo.mi_ObjId = id; bornInfo.ms_Name = npcinfo.name; bornInfo.rotation = rotation; } } } if (eType == CreateObjType.eObj) { ObjInfo objinfo; if (EditerDataClass._Instance.GetObjInfo().TryGetValue(id, out objinfo)) { BornInfo bornInfo = obj.GetComponent <BornInfo>(); if (bornInfo != null) { bornInfo.m_eObjType = 2; bornInfo.me_Type = CreateMode.enRegionObj; bornInfo.mi_ObjId = id; bornInfo.ms_Name = objinfo.name; bornInfo.rotation = rotation; } } } BornInfo born = obj.GetComponent <BornInfo>(); if (born != null) { RegionObjInfo info = new RegionObjInfo(); info.Nums = 1; info.ObjId = id; info.Time = 0; info.Dir = 0; info.Per = 0; born.m_RegionNpcInfo.Clear(); born.m_RegionNpcInfo.Add(info); } obj.transform.localScale = new Vector3(0.2f, 0.2f, 0.01f); return(obj); }