/// <summary> /// 根据角色id查询角色数据 /// </summary> /// <returns>The role data by role identifier.</returns> /// <param name="roleId">Role identifier.</param> public RoleData GetRoleDataByRoleId(string roleId) { RoleData data = null; db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Id, RoleData, InjuryType from RolesTable where RoleId = '" + roleId + "' and State > 0 and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { string roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData")); roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr); data = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr); data.PrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); data.Injury = (InjuryType)sqReader.GetInt32(sqReader.GetOrdinal("InjuryType")); } db.CloseSqlConnection(); return(data); }
/// <summary> /// 获取行囊物品数据 /// </summary> public List <ItemData> GetItems(ItemType type) { List <ItemData> items = new List <ItemData>(); db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Id, ItemId, Num from BagTable where BelongToRoleId = '" + currentRoleId + "' and Type = " + (int)type + " order by Lv desc"); ItemData item; while (sqReader.Read()) { item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", sqReader.GetString(sqReader.GetOrdinal("ItemId"))); item.PrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); item.Num = sqReader.GetInt32(sqReader.GetOrdinal("Num")); items.Add(item); } db.CloseSqlConnection(); return(items); }
/// <summary> /// 请求医馆角色数据 /// </summary> public void GetHospitalPanelData() { db = OpenDb(); List <RoleData> roles = new List <RoleData>(); SqliteDataReader sqReader = db.ExecuteQuery("select * from RolesTable where State != " + ((int)RoleStateType.NotRecruited) + " and BelongToRoleId = '" + currentRoleId + "'"); RoleData role; while (sqReader.Read()) { role = JsonManager.GetInstance().DeserializeObject <RoleData>(sqReader.GetString(sqReader.GetOrdinal("RoleData"))); role.PrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); role.State = (RoleStateType)sqReader.GetInt32(sqReader.GetOrdinal("State")); role.Injury = (InjuryType)sqReader.GetInt32(sqReader.GetOrdinal("InjuryType")); roles.Add(role); } db.CloseSqlConnection(); Messenger.Broadcast <List <RoleData> >(NotifyTypes.GetHospitalPanelDataEcho, roles); }
/// <summary> /// 查询所有的道具 /// </summary> /// <returns>The all properties.</returns> public List <PropData> GetAllProps() { List <PropData> props = new List <PropData>(); db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Data from GiftsTable where BelongToRoleId = '" + currentRoleId + "'"); string dataStr; PropData propData; while (sqReader.Read()) { dataStr = DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("Data"))); propData = JsonManager.GetInstance().DeserializeObject <PropData>(dataStr); props.Add(propData); } db.CloseSqlConnection(); return(props); }
/// <summary> /// 修改队伍的位子编号 /// </summary> /// <param name="ids">Identifiers.</param> public void ChangeRolesSeatNo(JArray ids) { db = OpenDb(); //将原来的角色先全部下阵 db.ExecuteQuery("update RolesTable set State = " + ((int)RoleStateType.OutTeam) + " where State = " + ((int)RoleStateType.InTeam) + " and BelongToRoleId = '" + currentRoleId + "'"); string id; for (int i = 0; i < ids.Count; i++) { id = ids[i].ToString(); db.ExecuteQuery("update RolesTable set State = " + ((int)RoleStateType.InTeam) + ", SeatNo = " + i + " where Id = " + id); } //处理干粮 SqliteDataReader sqReader = db.ExecuteQuery("select Data, AreaFoodNum from UserDatasTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { UserData user = JsonManager.GetInstance().DeserializeObject <UserData>(sqReader.GetString(sqReader.GetOrdinal("Data"))); user.AreaFood.Num = sqReader.GetInt32(sqReader.GetOrdinal("AreaFoodNum")); if (user.AreaFood.Num < user.AreaFood.MaxNum) { sqReader = db.ExecuteQuery("select * from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { //更新 List <ResourceData> resources = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(sqReader.GetString(sqReader.GetOrdinal("ResourcesData"))); ResourceData resource = resources.Find(item => item.Type == ResourceType.Food); double cutNum = (double)(user.AreaFood.MaxNum - user.AreaFood.Num); cutNum = resource.Num >= cutNum ? cutNum : resource.Num; if (cutNum > 0) { resource.Num -= cutNum; user.AreaFood.Num += (int)cutNum; //扣除工坊中的干粮 db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + JsonManager.GetInstance().SerializeObject(resources) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); //增加随身携带的干粮 db.ExecuteQuery("update UserDatasTable set AreaFoodNum = " + user.AreaFood.Num + " where BelongToRoleId = '" + currentRoleId + "'"); } } } } db.CloseSqlConnection(); Messenger.Broadcast(NotifyTypes.ChangeRolesSeatNoEcho); }
/// <summary> /// 请求书筐中的秘籍数据 /// </summary> public void GetBooksListPanelData() { List <BookData> books = new List <BookData>(); db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select * from BooksTable where State = " + ((int)BookStateType.Read) + " and BelongToRoleId = '" + currentRoleId + "' order by SeatNo"); BookData book; while (sqReader.Read()) { book = JsonManager.GetInstance().GetMapping <BookData>("Books", sqReader.GetString(sqReader.GetOrdinal("BookId"))); book.PrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); book.State = (BookStateType)sqReader.GetInt32(sqReader.GetOrdinal("State")); book.BeUsingByRoleId = sqReader.GetString(sqReader.GetOrdinal("BeUsingByRoleId")); books.Add(book); } db.CloseSqlConnection(); Messenger.Broadcast <List <BookData> >(NotifyTypes.GetBooksListPanelDataEcho, books); }
/// <summary> /// 根据兵器Id查询兵器强化等级 /// </summary> /// <returns>The weapon L.</returns> /// <param name="weaponId">Weapon identifier.</param> public WeaponLVData GetWeaponLV(string weaponId) { WeaponLVData WeaponLVData = null; db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Data from WeaponLVsTable where WeaponId = '" + weaponId + "' and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { //获取角色数据 WeaponLVData = JsonManager.GetInstance().DeserializeObject <WeaponLVData>(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("Data")))); } else { WeaponLVData = new WeaponLVData(); } db.CloseSqlConnection(); return(WeaponLVData); }
public void UpdateData(object obj, bool isfighting) { disabed = false; JArray data = (JArray)obj; roleDataList = new List <RoleData>(); JArray itemData; RoleData role; for (int i = 0; i < data.Count; i++) { itemData = (JArray)data[i]; role = JsonManager.GetInstance().DeserializeObject <RoleData>(itemData[1].ToString()); role.MakeJsonToModel(); role.Injury = (InjuryType)((int)itemData[3]); role.IsDie = false; roleDataList.Add(role); } }
int modifyResourceTimeout = 20; //刷新资源间隔时间(单位:秒) /// <summary> /// 检测是否有新的生产单元 /// </summary> /// <param name="cityId">City identifier.</param> public void CheckNewWorkshopItems(string cityId) { db = OpenDb(); List <ResourceRelationshipData> resourcesRelationshipsInCity = WorkshopModel.Relationships.FindAll(item => item.BelongToCityId == cityId); if (resourcesRelationshipsInCity.Count > 0) { List <ResourceData> resources; SqliteDataReader sqReader = db.ExecuteQuery("select * from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { //更新 string resourcesStr = sqReader.GetString(sqReader.GetOrdinal("ResourcesData")); resourcesStr = resourcesStr.IndexOf("[") == 0 ? resourcesStr : DESStatics.StringDecder(resourcesStr); resources = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(resourcesStr); for (int i = 0; i < resourcesRelationshipsInCity.Count; i++) { if (resources.FindIndex(item => item.Type == resourcesRelationshipsInCity[i].Type) < 0) { resources.Add(new ResourceData(resourcesRelationshipsInCity[i].Type, 0)); } } db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } else { //新增 resources = new List <ResourceData>(); for (int i = 0; i < resourcesRelationshipsInCity.Count; i++) { resources.Add(new ResourceData(resourcesRelationshipsInCity[i].Type, 0)); } db.ExecuteQuery("insert into WorkshopResourceTable (ResourcesData, Ticks, WorkerNum, MaxWorkerNum, BelongToRoleId) values('" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "', " + DateTime.Now.Ticks + ", 0, 0, '" + currentRoleId + "')"); } //记录当前所有的工坊资源类型列表 CitySceneModel.ResourceTypeStrOfWorkShopNewFlagList = new List <string>(); for (int i = resources.Count - 1; i >= 0; i--) { CitySceneModel.ResourceTypeStrOfWorkShopNewFlagList.Add(resources[i].Type.ToString()); } } db.CloseSqlConnection(); }
public void UpdateData(string id, JArray data, bool willDuring) { taskId = id; msgStr = data[2].ToString(); dialogStatus = (TaskDialogStatusType)((short)data[3]); fightId = data[5].ToString(); fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); if (willDuring) { alphaGroup = gameObject.AddComponent <CanvasGroup>(); alphaGroup.alpha = 0; alphaGroup.DOFade(1, 0.5f).OnComplete(() => { if (alphaGroup != null) { Destroy(alphaGroup); } }); } }
/// <summary> /// 记录战斗结果 /// </summary> /// <param name="win">If set to <c>true</c> window.</param> /// <param name="fightId">Fight identifier.</param> /// <param name="star">Star.</param> public void SendFightResult(bool win, string fightId, int star) { FightData fight = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); List <DropData> drops = new List <DropData>(); if (win) { db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select * from FightWinedRecordsTable where FightId = '" + fightId + "' and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.HasRows) { if (sqReader.Read()) { int id = sqReader.GetInt32(sqReader.GetOrdinal("Id")); int starData = sqReader.GetInt32(sqReader.GetOrdinal("Star")); starData = star > starData ? star : starData; int numData = sqReader.GetInt32(sqReader.GetOrdinal("Num")) + 1; db.ExecuteQuery("update FightWinedRecordsTable set Star = " + starData + ", Num = " + numData + " where Id = " + id); } } else { db.ExecuteQuery("insert into FightWinedRecordsTable (FightId, Star, Num, DateTime, BelongToRoleId) values('" + fightId + "', " + star + ", 1, '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "', '" + currentRoleId + "');"); } db.CloseSqlConnection(); if (fight.Drops.Count > 0) { drops = PushItemToBag(fight.Drops); } //将战斗事件从区域大地图上移除 RemoveFightEvent(fightId); } else { //失败后需要计算队伍中侠客的伤势 MakeRolesInjury(); } Messenger.Broadcast <bool, List <DropData>, FightData>(NotifyTypes.SendFightResultEcho, win, drops, fight); //根据战斗胜负处理是否添加临时禁用事件 Messenger.Broadcast <bool>(NotifyTypes.ReleaseDisableEvent, win); }
public override void RefreshView() { icon.sprite = Statics.GetIconSprite(weaponData.IconId); flashImage.gameObject.SetActive(((int)weaponData.Quality) >= ((int)QualityType.FlashGold)); nameText.text = string.Format("<color=\"{0}\">{1}</color> {2}", Statics.GetQualityColorString(weaponData.Quality), weaponData.Name, weaponLVData.LV > 0 ? ("+" + weaponLVData.LV) : ""); // weaponWidthScript.UpdateData(weaponData); // weaponWidthScript.RefreshView(); infoText.text = info; if (weaponData.BelongToRoleId == "") { occupationText.text = string.Format("门派限制:{0}", weaponData.Occupation != OccupationType.None ? Statics.GetOccupationName(weaponData.Occupation) : "无限制"); } else { occupationText.text = string.Format("仅限 {0} 使用", JsonManager.GetInstance().GetMapping <RoleData>("RoleDatas", weaponData.BelongToRoleId).Name); } lvFullNoticeText.gameObject.SetActive(weaponData.Quality >= QualityType.FlashGold && weaponLVData.LV >= weaponLVData.MaxLV); lvUpgradeBtn.gameObject.SetActive(weaponData.Quality >= QualityType.FlashGold && weaponLVData.LV < weaponLVData.MaxLV); StartCoroutine(refreshHeight()); }
/// <summary> /// 请求工坊主界面数据(包括生产材料标签页数据) /// </summary> public void GetWorkshopPanelData() { JArray data = new JArray(); db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select * from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { string resourceDataStr = sqReader.GetString(sqReader.GetOrdinal("ResourcesData")); data.Add(sqReader.GetInt32(sqReader.GetOrdinal("Id"))); data.Add(resourceDataStr); data.Add(sqReader.GetInt32(sqReader.GetOrdinal("WorkerNum"))); data.Add(sqReader.GetInt32(sqReader.GetOrdinal("MaxWorkerNum"))); List <ResourceData> resultResources = returnAllReceiveResourcesOnece(resourceDataStr); data.Add(JsonManager.GetInstance().SerializeObject(resultResources)); } db.CloseSqlConnection(); Messenger.Broadcast <JArray>(NotifyTypes.GetWorkshopPanelDataEcho, data); }
/// <summary> /// 卸下兵器 /// </summary> /// <param name="id">Identifier.</param> public void TakeOffWeapon(int id) { db = OpenDb(); db.ExecuteQuery("update WeaponsTable set BeUsingByRoleId = '' where Id = " + id); SqliteDataReader sqReader = db.ExecuteQuery("select RoleId, RoleData from RolesTable where RoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { //获取角色数据 string roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData")); roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr); RoleData role = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr); role.ResourceWeaponDataId = ""; //更新主角关联数据 db.ExecuteQuery("update RolesTable set RoleData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(role)) + "' where RoleId = '" + currentRoleId + "'"); } db.CloseSqlConnection(); GetWeaponsListPanelData(); //刷新兵器匣列表 CallRoleInfoPanelData(false); //刷新队伍数据 }
/// <summary> /// 获取出售物品数据 /// </summary> public void GetSellItemsPanelData() { List <ItemData> items = new List <ItemData>(); db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Id, ItemId, Num from BagTable where BelongToRoleId = '" + currentRoleId + "'"); ItemData item; while (sqReader.Read()) { item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", sqReader.GetString(sqReader.GetOrdinal("ItemId"))); if (item.SellPrice >= 0) { item.PrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); item.Num = sqReader.GetInt32(sqReader.GetOrdinal("Num")); items.Add(item); } } db.CloseSqlConnection(); Messenger.Broadcast <List <ItemData> >(NotifyTypes.GetSellItemsPanelDataEcho, items); }
/// <summary> /// 判断是否需要初始化缓存数据 /// </summary> void validTaskListData() { if (taskListData == null) { taskListData = new List <TaskData>(); db = OpenDb(); //正序查询处于战斗队伍中的角色 SqliteDataReader sqReader = db.ExecuteQuery("select * from TasksTable where BelongToRoleId = '" + currentRoleId + "' and State >= 0 order by State desc"); TaskData taskData; while (sqReader.Read()) { taskData = JsonManager.GetInstance().GetMapping <TaskData>("Tasks", sqReader.GetString(sqReader.GetOrdinal("TaskId"))); taskData.State = (TaskStateType)sqReader.GetInt32(sqReader.GetOrdinal("State")); taskData.SetCurrentDialogIndex(sqReader.GetInt32(sqReader.GetOrdinal("CurrentDialogIndex"))); taskData.ProgressData = JsonManager.GetInstance().DeserializeObject <JArray>(sqReader.GetString(sqReader.GetOrdinal("ProgressData"))); taskData.MakeJsonToModel(); taskListData.Add(taskData); } db.CloseSqlConnection(); } }
/// <summary> /// 查询队伍中的侠客 /// </summary> /// <returns>The roles in team.</returns> public List <RoleData> GetRolesInTeam() { List <RoleData> rolesData = new List <RoleData>(); db = OpenDb(); //正序查询处于战斗队伍中的角色 SqliteDataReader sqReader = db.ExecuteQuery("select * from RolesTable where BelongToRoleId = '" + currentRoleId + "' and State = " + (int)RoleStateType.InTeam + " order by SeatNo"); RoleData roleData; string roleDataStr; while (sqReader.Read()) { roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData")); roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr); roleData = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr); roleData.Injury = (InjuryType)((int)sqReader.GetInt32(sqReader.GetOrdinal("InjuryType"))); rolesData.Add(roleData); } db.CloseSqlConnection(); return(rolesData); }
/// <summary> /// 结交侠客 /// </summary> /// <param name="id">Identifier.</param> public void InviteRole(int id) { bool invited = false; RoleData role = null; db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Id, RoleId, State from RolesTable where Id = " + id); if (sqReader.Read()) { role = JsonManager.GetInstance().GetMapping <RoleData>("RoleDatas", sqReader.GetString(sqReader.GetOrdinal("RoleId"))); RoleStateType state = (RoleStateType)sqReader.GetInt32(sqReader.GetOrdinal("State")); if (state == RoleStateType.NotRecruited) { sqReader = db.ExecuteQuery("select * from WeaponsTable where WeaponId = '" + role.ResourceWeaponDataId + "' and BeUsingByRoleId == '' and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { //删掉兵器 db.ExecuteQuery("delete from WeaponsTable where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); //结交侠客 db.ExecuteQuery("update RolesTable set State = " + ((int)RoleStateType.OutTeam) + ", SeatNo = 888 where Id = " + id); invited = true; } else { AlertCtrl.Show("你的兵器匣里并没有称手的兵器!", null); } } else { AlertCtrl.Show("你们已经结识!", null); } } db.CloseSqlConnection(); if (invited && role != null) { Statics.CreatePopMsg(Vector3.zero, string.Format("你与<color=\"#FFFF00\">{0}</color>撮土为香,结成八拜之交!", role.Name), Color.white, 30); GetRolesOfWinShopPanelData(role.HometownCityId); } }
/// <summary> /// 请求酒馆中的侠客列表 /// </summary> /// <param name="cityId">City identifier.</param> public void GetRolesOfWinShopPanelData(string cityId) { db = OpenDb(); List <RoleData> roles = new List <RoleData>(); // SqliteDataReader sqReader = db.ExecuteQuery("select * from RolesTable where HometownCityId = '" + cityId + "' and BelongToRoleId = '" + currentRoleId + "'"); SqliteDataReader sqReader = db.ExecuteQuery("select * from RolesTable where BelongToRoleId = '" + currentRoleId + "'"); RoleData role; while (sqReader.Read()) { if (sqReader.GetString(sqReader.GetOrdinal("RoleId")) != sqReader.GetString(sqReader.GetOrdinal("BelongToRoleId"))) { role = JsonManager.GetInstance().DeserializeObject <RoleData>(sqReader.GetString(sqReader.GetOrdinal("RoleData"))); role.PrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); role.State = (RoleStateType)sqReader.GetInt32(sqReader.GetOrdinal("State")); role.Injury = (InjuryType)sqReader.GetInt32(sqReader.GetOrdinal("InjuryType")); roles.Add(role); } } db.CloseSqlConnection(); Messenger.Broadcast <List <RoleData> >(NotifyTypes.GetRolesOfWinShopPanelDataEcho, roles); }
/// <summary> /// 检测是否是否发现新的秘籍,有则加入到待选数据表中 /// </summary> /// <param name="cityId">City identifier.</param> public void CheckNewBooksOfForbiddenArea(string cityId) { JObject booksOfForbiddenAreaData = JsonManager.GetInstance().GetJson("BooksOfForbiddenAreaData"); if (booksOfForbiddenAreaData[cityId] != null) { db = OpenDb(); JArray bookIdsData = (JArray)booksOfForbiddenAreaData[cityId]; string bookId; for (int i = 0; i < bookIdsData.Count; i++) { bookId = bookIdsData[i].ToString(); SqliteDataReader sqReader = db.ExecuteQuery("select Id from BooksTable where BookId = '" + bookId + "' and BelongToRoleId = '" + currentRoleId + "'"); if (!sqReader.HasRows) { db.ExecuteQuery("insert into BooksTable (BookId, State, SeatNo, BeUsingByRoleId, BelongToCityId, BelongToRoleId) values('" + bookId + "', " + ((int)BookStateType.Unread) + ", 888, '', '" + cityId + "', '" + currentRoleId + "')"); } } db.CloseSqlConnection(); } booksOfForbiddenAreaData = null; }
/// <summary> /// 创建新的事件 /// </summary> /// <param name="type">Type.</param> /// <param name="eventId">Event identifier.</param> /// <param name="sceneId">Scene identifier.</param> /// <param name="name">Name.</param> public void CreateNewEvent(SceneEventType type, string eventId, string areaId, string name = "") { //计算区域大地图上的随机坐标点 if (AreaModel.AreaMainScript == null) { return; } SizeData mapSize = JsonManager.GetInstance().GetMapping <SizeData>("AreaSizeDatas", areaId); int x = UnityEngine.Random.Range(1, mapSize.Width - 1); int y = UnityEngine.Random.Range(1, mapSize.Height - 1); string randomEventId; tk2dRuntime.TileMap.TileInfo groundTile; bool canNotAdd = true; //查找到合法的事件点坐标 while (canNotAdd) { randomEventId = areaId + "_" + x.ToString() + "_" + y.ToString(); groundTile = AreaModel.AreaMainScript.Map.GetTileInfoForTileId(AreaModel.AreaMainScript.Map.GetTile(x, y, 0)); if (groundTile == null || //非法坐标 groundTile.stringVal == "obstacle" || //为寻路障碍点 AreaMain.StaticAreaEventsMapping.ContainsKey(randomEventId) || //为静态事件 AreaMain.ActiveAreaEventsMapping.ContainsKey(randomEventId)) //为动态事件 { x = UnityEngine.Random.Range(1, mapSize.Width - 1); y = UnityEngine.Random.Range(1, mapSize.Height - 1); } else { canNotAdd = false; } } db = OpenDb(); db.ExecuteQuery("insert into EventsTable (X, Y, Type, EventId, SceneId, Name, BelongToRoleId) values(" + x + ", " + y + ", " + ((int)type) + ", '" + eventId + "', '" + areaId + "', '" + name + "', '" + currentRoleId + "')"); db.CloseSqlConnection(); }
/// <summary> /// 请求兵器分解标签页数据 /// </summary> public void GetWorkshopWeaponBreakingTableData() { List <WeaponData> weapons = new List <WeaponData>(); db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select * from WeaponsTable where (BeUsingByRoleId = '" + currentRoleId + "' or BeUsingByRoleId = '') and BelongToRoleId ='" + currentRoleId + "'"); WeaponData weapon; while (sqReader.Read()) { weapon = JsonManager.GetInstance().GetMapping <WeaponData>("Weapons", sqReader.GetString(sqReader.GetOrdinal("WeaponId"))); weapon.PrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); weapon.BeUsingByRoleId = sqReader.GetString(sqReader.GetOrdinal("BeUsingByRoleId")); for (int i = 0; i < weapon.Needs.Count; i++) { weapon.Needs[i].Num = Mathf.Floor((float)(weapon.Needs[i].Num * 0.5f)); //熔解兵器只返还50%的资源 } weapons.Add(weapon); } db.CloseSqlConnection(); weapons.Sort((a, b) => b.Quality.CompareTo(a.Quality)); Messenger.Broadcast <List <WeaponData> >(NotifyTypes.GetWorkshopWeaponBreakingTableDataEcho, weapons); }
/// <summary> /// 添加一个道具 /// </summary> /// <param name="type">Type.</param> /// <param name="num">Number.</param> public void AddProp(PropType type, int num) { db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Id, Data from GiftsTable where Type = " + (int)type + " and BelongToRoleId = '" + currentRoleId + "'"); string dataStr; PropData propData; if (sqReader.Read()) { dataStr = DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("Data"))); propData = JsonManager.GetInstance().DeserializeObject <PropData>(dataStr); propData.Num = Mathf.Clamp(propData.Num + num, 0, propData.Max); //改 db.ExecuteQuery("update GiftsTable set Data = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(propData)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } else { propData = new PropData(type, num); //增 db.ExecuteQuery("insert into GiftsTable (Type, Data, BelongToRoleId) values(" + (int)type + ", '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(propData)) + "', '" + currentRoleId + "');"); } db.CloseSqlConnection(); }
/// <summary> /// 添加银子 /// </summary> /// <param name="num">Number.</param> public void GotSilver(double num) { db = OpenDb(); //添加银子到资源 SqliteDataReader sqReader = db.ExecuteQuery("select Id, ResourcesData from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); List <ResourceData> resources = null; if (sqReader.Read()) { string resourcesStr = sqReader.GetString(sqReader.GetOrdinal("ResourcesData")); resourcesStr = resourcesStr.IndexOf("[") == 0 ? resourcesStr : DESStatics.StringDecder(resourcesStr); resources = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(resourcesStr); //查询目前的银子余额 ResourceData resource = resources.Find(re => re.Type == ResourceType.Silver); if (resource != null) { resource.Num += num; //加钱 db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } } db.CloseSqlConnection(); }
/// <summary> /// 根据角色拥有的秘籍Id集合查询出拥有的诀要总和 /// </summary> /// <returns>The secrets belong books.</returns> /// <param name="bookIds">Book identifiers.</param> public List <SecretData> GetSecretsBelongBooks(List <string> bookIds) { List <SecretData> secrets = new List <SecretData>(); db = OpenDb(); SqliteDataReader sqReader; List <SecretData> secretsInDB; for (int i = 0, len = bookIds.Count; i < len; i++) { sqReader = db.ExecuteQuery("select SecretsData from BookExpsTable where BookId = '" + bookIds[i] + "' and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { secretsInDB = JsonManager.GetInstance().DeserializeObject <List <SecretData> >(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("SecretsData")))); for (int j = 0, len2 = secretsInDB.Count; j < len2; j++) { secrets.Add(secretsInDB[j]); } } } db.CloseSqlConnection(); return(secrets); }
/// <summary> /// 添加一条新任务到可截取任务数据列表,但是不包括某一个特定类型的任务 /// </summary> /// <param name="taskId">Task identifier.</param> /// <param name="exceptType">Except type.</param> public void AddNewTaskExceptType(string taskId, TaskType exceptType) { validTaskListData(); if (getTask(taskId) == null) { db = OpenDb(); TaskData taskData = JsonManager.GetInstance().GetMapping <TaskData>("Tasks", taskId); if (taskData.Type != exceptType) { if (taskData.Id == taskId) { if (taskData.Type == TaskType.Occupation) { if (HostData == null || HostData.Occupation != (OccupationType)taskData.IntValue) { db.CloseSqlConnection(); return; } } //添加任务数据时把任务步骤存档字段也进行初始化 JArray progressDataList = new JArray(); for (int i = 0; i < taskData.Dialogs.Count; i++) { progressDataList.Add((short)TaskDialogStatusType.Initial); } db.ExecuteQuery("insert into TasksTable (TaskId, ProgressData, CurrentDialogIndex, State, BelongToRoleId) values('" + taskId + "', '" + progressDataList.ToString() + "', 0, 0, '" + currentRoleId + "')"); //顺手把数据写入缓存 taskData.State = TaskStateType.CanNotAccept; taskData.SetCurrentDialogIndex(0); taskData.ProgressData = progressDataList; taskData.MakeJsonToModel(); taskListData.Add(taskData); } } db.CloseSqlConnection(); } }
//将所有人的伤势缓解一级 public void RelieveRoles() { db = OpenDb(); bool success = false; RoleData role = null; SqliteDataReader sqReader = db.ExecuteQuery("select Id, RoleData, InjuryType from RolesTable where InjuryType > " + 0); string roleDataStr; while (sqReader.Read()) { roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData")); roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr); role = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr); db.ExecuteQuery("update RolesTable set InjuryType = " + (sqReader.GetInt32(sqReader.GetOrdinal("InjuryType")) - 1) + " where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); success = true; } db.CloseSqlConnection(); if (success) { AlertCtrl.Show("各位侠客的伤势得到了缓解!"); GetHospitalPanelData(); CallRoleInfoPanelData(false); //刷新队伍数据 } }
/// <summary> /// 增减资源的工作家丁数回调 /// </summary> /// <param name="data">Data.</param> public void ChangeResourceWorkerNumEcho(JArray data) { ResourceType type = (ResourceType)((short)data[0]); int busyWorkerNum = (int)data[1]; workerNum = (int)data[2]; maxWorkerNum = (int)data[3]; resultResources = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(data[4].ToString()); ResourceData findResource = resources.Find(item => item.Type == type); if (findResource != null) { findResource.WorkersNum = busyWorkerNum; WorkshopResourceContainer findContainer = resourceContainers.Find(item => item.Type == findResource.Type); //更新资源的工作家丁数 if (findContainer != null) { findContainer.UpdateData(busyWorkerNum); findContainer.RefreshView(); } } //更新产量信息 RefreshResultResourcesView(); }
/// <summary> /// Battles the notify init. /// </summary> public static void BattleNotifyInit() { Messenger.AddListener <string>(NotifyTypes.CreateBattle, (fightId) => { //获取队伍角色列表 // RoleData currentRoleData = RoleInfoPanelCtrl.GetCurrentRoleData(); RoleData currentRoleData = DbManager.Instance.GetHostRoleData(); currentRoleData.MakeJsonToModel(); if (currentRoleData == null) { return; } if (currentRoleData.Injury == InjuryType.Moribund) { AlertCtrl.Show("你已奄奄一息无法再战!"); return; } //获取战斗数据 // FightData fightData = new FightData(); // fightData.Id = fightId; // fightData.Type = FightType.Normal; // RoleData enemy0 = new RoleData(); // enemy0.Id = "enemy0"; // enemy0.Name = "赏金刺客"; // enemy0.HalfBodyId = "enemy000001"; // BookData book0 = new BookData(); // book0.Id = "book20001"; // book0.Name = "地痞撒泼"; // book0.IconId = "200000"; // SkillData skill0 = new SkillData(); // skill0.Type = SkillType.MagicAttack; // skill0.Name = "背负投"; // BuffData buff0 = new BuffData(); // buff0.Type = BuffType.Vertigo; //// buff0.Value = 8888; //// buff0.FirstEffect = true; // buff0.RoundNumber = 3; // buff0.Rate = 30; // buff0.FirstEffect = true; // skill0.DeBuffDatas.Add(buff0); // SkillData skill1 = new SkillData(); // skill1.Type = SkillType.PhysicsAttack; // skill1.Name = "抱摔"; // SkillData skill2 = new SkillData(); // skill2.Type = SkillType.PhysicsAttack; // skill2.Name = "撕咬"; // book0.Skills.Add(skill0); // book0.Skills.Add(skill1); // book0.Skills.Add(skill2); // enemy0.Books.Add(book0); // enemy0.AttackSpeed = 2; // enemy0.HP = 10000; // enemy0.MaxHP = 10000; // WeaponData weapon5 = new WeaponData(); // weapon5.Id = "weapon5"; // weapon5.Id = "阔刃刀"; // weapon5.Width = 360; // weapon5.Rates = new float[] { 1, 0.6f, 0.2f, 0.1f }; // enemy0.Weapon = weapon5; // fightData.Enemys = new List<RoleData>() { // enemy0 // }; FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); fightData.MakeJsonToModel(); Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => { BattleMainPanelCtrl.Show(currentRoleData, fightData); }, () => { Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, true); }); }); Messenger.AddListener <RoleData, string>(NotifyTypes.CreateTestBattle, (currentRoleData, fightId) => { FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); fightData.MakeJsonToModel(); BattleMainPanelCtrl.Show(currentRoleData, fightData); }); Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, (win, drops, fightData) => { Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => { //如果普通战斗失败则回之前到过的城镇去疗伤 if (fightData.Type == FightType.Normal && !win) { AlertCtrl.Show("江湖凶险, 稍事休息后再出发!", () => { Messenger.Broadcast(NotifyTypes.BackToCity); }); } BattleMainPanelCtrl.Hide(); }, () => { //任务详情界面打开时不呼出角色信息板 if (TaskDetailInfoPanelCtrl.Ctrl == null) { Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, false); } Messenger.Broadcast(NotifyTypes.PlayBgm); if (drops.Count > 0) { Messenger.Broadcast <List <DropData> >(NotifyTypes.ShowDropsListPanel, drops); } if (fightData.Type == FightType.Task) { Messenger.Broadcast(NotifyTypes.ReloadTaslDetailInfoData); if (win) { Messenger.Broadcast <string>(NotifyTypes.MakeFightWinedBtnDisable, fightData.Id); } } }); }); Messenger.AddListener <RoleData>(NotifyTypes.ChangeCurrentTeamRoleInBattle, (roleData) => { BattleMainPanelCtrl.ChangeCurrentTeamRole(roleData); }); Messenger.AddListener <int>(NotifyTypes.ChangeCurrentTeamBookInBattle, (index) => { BattleMainPanelCtrl.ChangeCurrentTeamBook(index); }); Messenger.AddListener <JArray>(NotifyTypes.SendFightResult, (data) => { DbManager.Instance.SendFightResult((bool)data[0], data[1].ToString(), (int)data[2]); JArray usedSkillIdData = (JArray)data[3]; JArray d; for (int i = 0; i < usedSkillIdData.Count; i++) { d = (JArray)usedSkillIdData[i]; DbManager.Instance.UpdateUsedTheSkillRecords(d[0].ToString(), (int)d[1]); } JArray plusIndexData = (JArray)data[4]; for (int i = 0; i < plusIndexData.Count; i++) { d = (JArray)plusIndexData[i]; DbManager.Instance.UpdateWeaponPowerPlusSuccessedRecords((int)d[0], (int)d[1]); } }); Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.SendFightResultEcho, (win, drops, fightData) => { //加载动态事件列表 Messenger.Broadcast <string>(NotifyTypes.GetActiveEventsInArea, UserModel.CurrentUserData.CurrentAreaSceneName); Messenger.Broadcast <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, win, drops, fightData); }); Messenger.AddListener(NotifyTypes.BackToCity, () => { string eventId = JsonManager.GetInstance().GetMapping <string>("AreaCityPosDatas", UserModel.CurrentUserData.CurrentCitySceneId); string[] fen = eventId.Split(new char[] { '_' }); if (fen.Length >= 3) { string areaName = fen[0]; int x = int.Parse(fen[1]); int y = int.Parse(fen[2]); if (UserModel.CurrentUserData != null) { UserModel.CurrentUserData.PositionStatu = UserPositionStatusType.InCity; UserModel.CurrentUserData.CurrentAreaSceneName = areaName; UserModel.CurrentUserData.CurrentAreaX = x; UserModel.CurrentUserData.CurrentAreaY = y; Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, null); Messenger.Broadcast <string>(NotifyTypes.GoToScene, areaName); } } }); Messenger.AddListener(NotifyTypes.BattleFaild, () => { BattleMainPanelCtrl.MakeFaild(); }); Messenger.AddListener <string>(NotifyTypes.MakePopRole, (dieRoleId) => { RoleInfoPanelCtrl.MakePopRole(dieRoleId); }); }
/// <summary> /// 将索引映射成实体类 /// </summary> public void MakeJsonToModel() { Item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", ResourceItemDataId); Num = Num > Item.MaxNum ? Item.MaxNum : Num; }