public void TryAcceptMission(int id) { for (int i = 0; i < m_MissionList.Count; ++i) { if (m_MissionList[i].GetCurrentMissionId() == id) { // already has mission return; } } //check is mission exist for (int i = 0; i < m_MissionInfoList.Count; ++i) { if (m_MissionInfoList[i].MissionId == id) { return; } } MissionElement elem = new MissionElement(); elem.InitMissionStep(id, OnMissionComplete); OnAcceptNewMission(elem); if (!m_bIsBusy) { m_MissionList.Add(elem); } else { m_AddedMissionList.Add(elem); } }
private void OnMissionComplete(MissionElement elem) { MainMissionConfig config = ConfigManager.Instance.GetMainMissionConfig(elem.GetCurrentMissionId()); if (config != null && config.NextMissionId != 0) { TryAcceptMission(config.NextMissionId); } for (int i = 0; i < m_RemovingStore.Count; ++i) { if (m_RemovingStore[i] == elem.GetCurrentMissionId()) { return; } } m_RemovingStore.Add(elem.GetCurrentMissionId()); for (int i = 0; i < m_MissionInfoList.Count; ++i) { if (m_MissionInfoList[i].MissionId == elem.GetCurrentMissionId()) { m_MissionInfoList.RemoveAt(i); break; } } RewriteMissionCounter(); elem = null; }
private void OnAcceptNewMission(MissionElement mission) { MissionInfo info = new MissionInfo(); info.MissionId = mission.GetCurrentMissionId(); info.Counter = 0; info.MissionStepInfoList = new List <MissionStepInfo>(); //set search map if (!m_MissionCounterMap.ContainsKey(mission.GetCurrentMissionId())) { m_MissionCounterMap.Add(mission.GetCurrentMissionId(), 0); } else { m_MissionCounterMap[mission.GetCurrentMissionId()] = 0; } for (int i = 0; i < mission.GetMissionStepConfig().Count; ++i) { MissionStepInfo stepInfo = new MissionStepInfo(); stepInfo.Counter = 0; stepInfo.StepId = mission.GetMissionStepConfig()[i].Id; //set search map if (!m_MissionStepCounterMap.ContainsKey(mission.GetMissionStepConfig()[i].Id)) { m_MissionStepCounterMap.Add(mission.GetMissionStepConfig()[i].Id, 0); } else { m_MissionStepCounterMap[mission.GetMissionStepConfig()[i].Id] = 0; } info.MissionStepInfoList.Add(stepInfo); } //add element m_MissionInfoList.Add(info); RewriteMissionCounter(); }
private MissionTable() { m_mapElements = new Dictionary <int, MissionElement>(); m_emptyItem = new MissionElement(); m_vecAllElements = new List <MissionElement>(); }
public bool LoadCsv(string strContent) { if (strContent.Length == 0) { return(false); } m_mapElements.Clear(); m_vecAllElements.Clear(); int contentOffset = 0; List <string> vecLine; vecLine = GameAssist.readCsvLine(strContent, ref contentOffset); if (vecLine.Count != 25) { Ex.Logger.Log("Mission.csv中列数量与生成的代码不匹配!"); return(false); } if (vecLine[0] != "MissionID") { Ex.Logger.Log("Mission.csv中字段[MissionID]位置不对应"); return(false); } if (vecLine[1] != "Name") { Ex.Logger.Log("Mission.csv中字段[Name]位置不对应"); return(false); } if (vecLine[2] != "Type") { Ex.Logger.Log("Mission.csv中字段[Type]位置不对应"); return(false); } if (vecLine[3] != "Title") { Ex.Logger.Log("Mission.csv中字段[Title]位置不对应"); return(false); } if (vecLine[4] != "Lv") { Ex.Logger.Log("Mission.csv中字段[Lv]位置不对应"); return(false); } if (vecLine[5] != "Reward") { Ex.Logger.Log("Mission.csv中字段[Reward]位置不对应"); return(false); } if (vecLine[6] != "TiaoJian") { Ex.Logger.Log("Mission.csv中字段[TiaoJian]位置不对应"); return(false); } if (vecLine[7] != "JieNpc") { Ex.Logger.Log("Mission.csv中字段[JieNpc]位置不对应"); return(false); } if (vecLine[8] != "JiaoNpc") { Ex.Logger.Log("Mission.csv中字段[JiaoNpc]位置不对应"); return(false); } if (vecLine[9] != "Dialog1") { Ex.Logger.Log("Mission.csv中字段[Dialog1]位置不对应"); return(false); } if (vecLine[10] != "Dialog2") { Ex.Logger.Log("Mission.csv中字段[Dialog2]位置不对应"); return(false); } if (vecLine[11] != "Dialog3") { Ex.Logger.Log("Mission.csv中字段[Dialog3]位置不对应"); return(false); } if (vecLine[12] != "IngDialog") { Ex.Logger.Log("Mission.csv中字段[IngDialog]位置不对应"); return(false); } if (vecLine[13] != "Tips") { Ex.Logger.Log("Mission.csv中字段[Tips]位置不对应"); return(false); } if (vecLine[14] != "Time") { Ex.Logger.Log("Mission.csv中字段[Time]位置不对应"); return(false); } if (vecLine[15] != "Index") { Ex.Logger.Log("Mission.csv中字段[Index]位置不对应"); return(false); } if (vecLine[16] != "QianZhi") { Ex.Logger.Log("Mission.csv中字段[QianZhi]位置不对应"); return(false); } if (vecLine[17] != "Monster") { Ex.Logger.Log("Mission.csv中字段[Monster]位置不对应"); return(false); } if (vecLine[18] != "Plant") { Ex.Logger.Log("Mission.csv中字段[Plant]位置不对应"); return(false); } if (vecLine[19] != "Npc") { Ex.Logger.Log("Mission.csv中字段[Npc]位置不对应"); return(false); } if (vecLine[20] != "FuBen") { Ex.Logger.Log("Mission.csv中字段[FuBen]位置不对应"); return(false); } if (vecLine[21] != "FuBenLimit") { Ex.Logger.Log("Mission.csv中字段[FuBenLimit]位置不对应"); return(false); } if (vecLine[22] != "Target") { Ex.Logger.Log("Mission.csv中字段[Target]位置不对应"); return(false); } if (vecLine[23] != "ZiDong") { Ex.Logger.Log("Mission.csv中字段[ZiDong]位置不对应"); return(false); } if (vecLine[24] != "TiJiao") { Ex.Logger.Log("Mission.csv中字段[TiJiao]位置不对应"); return(false); } while (true) { vecLine = GameAssist.readCsvLine(strContent, ref contentOffset); if ((int)vecLine.Count == 0) { break; } if ((int)vecLine.Count != (int)25) { return(false); } MissionElement member = new MissionElement(); member.MissionID = Convert.ToInt32(vecLine[0]); member.Name = vecLine[1]; member.Type = Convert.ToInt32(vecLine[2]); member.Title = vecLine[3]; member.Lv = Convert.ToInt32(vecLine[4]); member.Reward = Convert.ToInt32(vecLine[5]); member.TiaoJian = Convert.ToInt32(vecLine[6]); member.JieNpc = Convert.ToInt32(vecLine[7]); member.JiaoNpc = Convert.ToInt32(vecLine[8]); member.Dialog1 = Convert.ToInt32(vecLine[9]); member.Dialog2 = vecLine[10]; member.Dialog3 = vecLine[11]; member.IngDialog = Convert.ToInt32(vecLine[12]); member.Tips = vecLine[13]; member.Time = Convert.ToInt32(vecLine[14]); member.Index = Convert.ToInt32(vecLine[15]); member.QianZhi = Convert.ToInt32(vecLine[16]); member.Monster = Convert.ToInt32(vecLine[17]); member.Plant = Convert.ToInt32(vecLine[18]); member.Npc = Convert.ToInt32(vecLine[19]); member.FuBen = Convert.ToInt32(vecLine[20]); member.FuBenLimit = Convert.ToInt32(vecLine[21]); member.Target = Convert.ToInt32(vecLine[22]); member.ZiDong = Convert.ToInt32(vecLine[23]); member.TiJiao = Convert.ToInt32(vecLine[24]); member.IsValidate = true; m_vecAllElements.Add(member); m_mapElements[member.MissionID] = member; } return(true); }
public bool LoadBin(byte[] binContent) { m_mapElements.Clear(); m_vecAllElements.Clear(); int nCol, nRow; int readPos = 0; readPos += GameAssist.ReadInt32Variant(binContent, readPos, out nCol); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out nRow); List <string> vecLine = new List <string>(nCol); List <int> vecHeadType = new List <int>(nCol); string tmpStr; int tmpInt; for (int i = 0; i < nCol; i++) { readPos += GameAssist.ReadString(binContent, readPos, out tmpStr); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out tmpInt); vecLine.Add(tmpStr); vecHeadType.Add(tmpInt); } if (vecLine.Count != 25) { Ex.Logger.Log("Mission.csv中列数量与生成的代码不匹配!"); return(false); } if (vecLine[0] != "MissionID") { Ex.Logger.Log("Mission.csv中字段[MissionID]位置不对应"); return(false); } if (vecLine[1] != "Name") { Ex.Logger.Log("Mission.csv中字段[Name]位置不对应"); return(false); } if (vecLine[2] != "Type") { Ex.Logger.Log("Mission.csv中字段[Type]位置不对应"); return(false); } if (vecLine[3] != "Title") { Ex.Logger.Log("Mission.csv中字段[Title]位置不对应"); return(false); } if (vecLine[4] != "Lv") { Ex.Logger.Log("Mission.csv中字段[Lv]位置不对应"); return(false); } if (vecLine[5] != "Reward") { Ex.Logger.Log("Mission.csv中字段[Reward]位置不对应"); return(false); } if (vecLine[6] != "TiaoJian") { Ex.Logger.Log("Mission.csv中字段[TiaoJian]位置不对应"); return(false); } if (vecLine[7] != "JieNpc") { Ex.Logger.Log("Mission.csv中字段[JieNpc]位置不对应"); return(false); } if (vecLine[8] != "JiaoNpc") { Ex.Logger.Log("Mission.csv中字段[JiaoNpc]位置不对应"); return(false); } if (vecLine[9] != "Dialog1") { Ex.Logger.Log("Mission.csv中字段[Dialog1]位置不对应"); return(false); } if (vecLine[10] != "Dialog2") { Ex.Logger.Log("Mission.csv中字段[Dialog2]位置不对应"); return(false); } if (vecLine[11] != "Dialog3") { Ex.Logger.Log("Mission.csv中字段[Dialog3]位置不对应"); return(false); } if (vecLine[12] != "IngDialog") { Ex.Logger.Log("Mission.csv中字段[IngDialog]位置不对应"); return(false); } if (vecLine[13] != "Tips") { Ex.Logger.Log("Mission.csv中字段[Tips]位置不对应"); return(false); } if (vecLine[14] != "Time") { Ex.Logger.Log("Mission.csv中字段[Time]位置不对应"); return(false); } if (vecLine[15] != "Index") { Ex.Logger.Log("Mission.csv中字段[Index]位置不对应"); return(false); } if (vecLine[16] != "QianZhi") { Ex.Logger.Log("Mission.csv中字段[QianZhi]位置不对应"); return(false); } if (vecLine[17] != "Monster") { Ex.Logger.Log("Mission.csv中字段[Monster]位置不对应"); return(false); } if (vecLine[18] != "Plant") { Ex.Logger.Log("Mission.csv中字段[Plant]位置不对应"); return(false); } if (vecLine[19] != "Npc") { Ex.Logger.Log("Mission.csv中字段[Npc]位置不对应"); return(false); } if (vecLine[20] != "FuBen") { Ex.Logger.Log("Mission.csv中字段[FuBen]位置不对应"); return(false); } if (vecLine[21] != "FuBenLimit") { Ex.Logger.Log("Mission.csv中字段[FuBenLimit]位置不对应"); return(false); } if (vecLine[22] != "Target") { Ex.Logger.Log("Mission.csv中字段[Target]位置不对应"); return(false); } if (vecLine[23] != "ZiDong") { Ex.Logger.Log("Mission.csv中字段[ZiDong]位置不对应"); return(false); } if (vecLine[24] != "TiJiao") { Ex.Logger.Log("Mission.csv中字段[TiJiao]位置不对应"); return(false); } for (int i = 0; i < nRow; i++) { MissionElement member = new MissionElement(); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.MissionID); readPos += GameAssist.ReadString(binContent, readPos, out member.Name); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Type); readPos += GameAssist.ReadString(binContent, readPos, out member.Title); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Lv); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Reward); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.TiaoJian); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.JieNpc); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.JiaoNpc); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Dialog1); readPos += GameAssist.ReadString(binContent, readPos, out member.Dialog2); readPos += GameAssist.ReadString(binContent, readPos, out member.Dialog3); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.IngDialog); readPos += GameAssist.ReadString(binContent, readPos, out member.Tips); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Time); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Index); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.QianZhi); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Monster); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Plant); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Npc); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.FuBen); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.FuBenLimit); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Target); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.ZiDong); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.TiJiao); member.IsValidate = true; m_vecAllElements.Add(member); m_mapElements[member.MissionID] = member; } return(true); }