void onClick(GameObject e) { switch (e.name) { case "Block": case "CloseBtn": SlideDown(); break; case "SellBtn": if (selectedItemsId.Count > 0) { ConfirmCtrl.Show("确定将选中物品卖出?", () => { Messenger.Broadcast <JArray>(NotifyTypes.SellItems, selectedItemsId); }); } else { AlertCtrl.Show("请先选择要卖出的物品!"); } break; default: break; } }
void onClick(GameObject e) { switch (e.name) { case "RandomBtn": randomName(); break; case "CreateBtn": if (NameInputField.text.Length > 6) { AlertCtrl.Show("称谓不能超过6个字!"); return; } ConfirmCtrl.Show(string.Format("<color=\"{0}\">{1}</color>以后就是你的称谓,确定后不可更改", Statics.GetGenderColor(genderType), NameInputField.text), () => { RoleData role = new RoleData(); role.Id = hostRoleId; role.Name = NameInputField.text; role.Gender = genderType; role.IsHost = true; // role.ResourceWeaponDataId = "1"; //默认武器是布缠手 role.Occupation = OccupationType.None; role.IconId = IconImages[iconIndex].sprite.name; role.DeadSoundId = role.Gender == GenderType.Male ? "die0003" : "die0002"; Messenger.Broadcast <RoleData>(NotifyTypes.CreateHostRole, role); }, null, "确定", "取消"); break; default: break; } }
void onClick(GameObject e) { switch (e.name) { case "plusWorkerBtn": if (DbManager.Instance.GetPlusWorkerNum() < DbManager.Instance.GetMaxPlusWorkerNum()) { ConfirmCtrl.Show(string.Format("花费¥3 购买10个家丁({0}/{1})\n(家丁越多资源生产效率越高)\n确定购买?", DbManager.Instance.GetPlusWorkerNum(), DbManager.Instance.GetMaxPlusWorkerNum()), () => { MaiHandler.PayForProduct("com.courage2017.worker_10"); // DbManager.Instance.SetPlusWorkerNum(DbManager.Instance.GetPlusWorkerNum() + 10); // DbManager.Instance.SetMaxWorkerNum(DbManager.Instance.GetMaxWorkerNum() + 10); // DbManager.Instance.SetWorkerNum(DbManager.Instance.GetWorkerNum() + 10); // WorkshopPanelCtrl.MakeWorkerNumChange(DbManager.Instance.GetWorkerNum(), DbManager.Instance.GetMaxWorkerNum()); // AlertCtrl.Show("成功招募了10个家丁"); }, null, "购买", "不了"); } else { AlertCtrl.Show(string.Format("你已经买满了{0}个家丁", DbManager.Instance.GetMaxPlusWorkerNum())); } break; case "CloseBtn": FadeOut(); break; default: break; } }
void onClick(GameObject e) { switch (e.name) { case "CameraBtn": // ConfirmCtrl.Show("观看一段视频来缓解下各位侠客的伤势如何?", () => { // MaiHandler.StartRewardedVideo(() => { // Messenger.Broadcast(NotifyTypes.RelieveRoles); // }); // MaiHandler.SendEvent("StartRewardedVideoForInjurys", DbManager.Instance.HostData.Lv.ToString()); // }); ConfirmCtrl.Show("是否花费10000两银子请御医来缓解下各位侠客的伤势如何?", () => { if (DbManager.Instance.CostSilver(10000)) { Messenger.Broadcast(NotifyTypes.RelieveRoles); MaiHandler.SendEvent("StartRewardedVideoForInjurys", DbManager.Instance.HostData.Lv.ToString()); } else { AlertCtrl.Show("银两不足"); } }); break; case "CloseBtn": FadeOut(); break; } }
void onClick(GameObject e) { switch (e.name) { case "ScoutBtn": ConfirmCtrl.Show("是否派出一个探子追踪目标?", () => { if (DbManager.Instance.GetProp(PropType.Scout) == null) { AlertCtrl.Show("没有探子可以派遣"); return; } EventData eventData = DbManager.Instance.GetActiveEvent(currentDialog.StringValue); if (eventData != null) { AlertCtrl.Show(string.Format("追踪结果: {0} X: {1} Y: {2}\n<color=\"#00FF00\">(请牢记该坐标)</color>", areaNames[eventData.SceneId] != null ? areaNames[eventData.SceneId]["Name"].ToString() : "", eventData.X, eventData.Y)); } else { AlertCtrl.Show("查询不到该事件信息"); } DbManager.Instance.UseProp(PropType.Scout, 1); Messenger.Broadcast(NotifyTypes.MakeUpdateProps); }); break; default: break; } }
public static void SendRewards(PropType type, int num) { switch (type) { case PropType.NocturnalClothing: AlertCtrl.Show(string.Format("获得了{0}件夜行衣", num)); break; case PropType.Bodyguard: AlertCtrl.Show(string.Format("获得了{0}位镖师", num)); break; case PropType.LimePowder: AlertCtrl.Show(string.Format("获得了{0}包石灰粉", num)); break; case PropType.Scout: AlertCtrl.Show(string.Format("获得了{0}个探子", num)); break; default: break; } Messenger.Broadcast <PropType, int>(NotifyTypes.AddProp, type, num); }
void onClick(GameObject e) { switch (e.name) { case "Block": Back(); break; case "lvUpgradeBtn": if (weaponData.LV >= weaponLVData.MaxLV) { AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>强化度已到满级", Statics.GetQualityColorString(weaponData.Quality), weaponData.Name)); break; } string needMsg = ""; double needRate = DbManager.Instance.GetWeaponNeedRate(weaponData.LV + 1); for (int i = 0, len = weaponData.Needs.Count; i < len; i++) { needMsg += string.Format("{0}个{1}", weaponData.Needs[i].Num * needRate, Statics.GetEnmuDesc <ResourceType>(weaponData.Needs[i].Type)) + (i < len - 1 ? "," : ""); } ConfirmCtrl.Show(string.Format("将<color=\"{0}\">{1}</color>强化到{2}\n需要{3}\n是否立即强化兵器?", Statics.GetQualityColorString(weaponData.Quality), weaponData.Name, weaponData.LV + 1, needMsg), () => { Messenger.Broadcast <WeaponData>(NotifyTypes.WeaponLVUpgrade, weaponData); }); break; default: break; } }
/// <summary> /// 领悟秘籍诀要 /// </summary> /// <param name="secret">Secret.</param> public void StudySecret(BookData book, SecretData secret) { List <SecretData> secrets = null; db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Id, ExpData, SecretsData from BookExpsTable where BookId = " + book.Id + " and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { ExpData exp = JsonManager.GetInstance().DeserializeObject <ExpData>(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("ExpData")))); secrets = JsonManager.GetInstance().DeserializeObject <List <SecretData> >(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("SecretsData")))); int bookLv = Statics.GetBookLV(exp.Cur); if (secrets.Count >= bookLv) { AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>目前只能领悟最多{2}张诀要", Statics.GetQualityColorString(book.Quality), book.Name, bookLv)); db.CloseSqlConnection(); return; } else { if (secrets.FindIndex(item => item.Type == secret.Type) < 0) { secrets.Add(secret); db.ExecuteQuery("update BookExpsTable set SecretsData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(secrets)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); db.ExecuteQuery("update BookSecretsTable set BelongToBookId = '" + book.Id + "' where Id = '" + secret.PrimaryKeyId + "'"); } else { AlertCtrl.Show("该类型诀要不能重复领悟!"); db.CloseSqlConnection(); return; } } } else { secrets = new List <SecretData>() { secret }; //处理空数据初始化 db.ExecuteQuery("insert into BookExpsTable (BookId, ExpData, SecretsData, BelongToRoleId) values('" + book.Id + "', '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(new ExpData(0, Statics.GetBookMaxExp(book.Quality)))) + "', '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(secrets)) + "', '" + currentRoleId + "')"); db.ExecuteQuery("update BookSecretsTable set BelongToBookId = '" + book.Id + "' where Id = '" + secret.PrimaryKeyId + "'"); } db.CloseSqlConnection(); if (secrets != null) { Messenger.Broadcast <BookData, List <SecretData> >(NotifyTypes.DealSecretEcho, book, secrets); Statics.CreatePopMsg(Vector3.zero, string.Format("领悟<color=\"{0}\">{1}</color>后<color=\"{2}\">{3}</color>更为精进!!", Statics.GetQualityColorString(secret.Quality), secret.Name, Statics.GetQualityColorString(book.Quality), book.Name), Color.white, 30); SoundManager.GetInstance().PushSound("ui0010"); } }
/// <summary> /// 前往城镇 /// </summary> /// <param name="fromIndex">From index.</param> /// <param name="toIndex">To index.</param> public void GoToCity(int fromIndex, int toIndex) { SceneData toScene = null; ModifyResources(); db = OpenDb(); string indexToId = JsonManager.GetInstance().GetMapping <string>("SceneIndexToIds", toIndex.ToString()); SqliteDataReader sqReader = db.ExecuteQuery("select CityId from EnterCityTable where CityId == '" + indexToId + "' and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.HasRows) { FloydResult result = floyd.GetResult(fromIndex, toIndex); //查询银子是否足够支付路费 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) { if (resource.Num >= result.Distance) { resource.Num -= result.Distance; //扣钱 db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); toScene = JsonManager.GetInstance().GetMapping <SceneData>("Scenes", GetCityIdByIndex(toIndex)); Debug.LogWarning(GetCityIdByIndex(toIndex) + "," + toScene.Id + "," + toScene.Name); } else { AlertCtrl.Show("银子不够支付路费!"); } } } } else { AlertCtrl.Show("并没有开启前方传送点!"); } db.CloseSqlConnection(); if (toScene != null) { Messenger.Broadcast <SceneData>(NotifyTypes.GoToCityEcho, toScene); } }
/// <summary> /// 治疗侠客 /// </summary> /// <param name="id">Identifier.</param> public void CureRole(int id) { db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select RoleData, InjuryType from RolesTable where Id = " + id); int injury; bool success = false; RoleData role = null; if (sqReader.Read()) { injury = sqReader.GetInt32(sqReader.GetOrdinal("InjuryType")); string roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData")); roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr); role = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr); if (injury > 0) { sqReader = db.ExecuteQuery("select Id, Num from BagTable where Type = " + ((int)ItemType.Vulnerary) + " and Lv >= " + injury + " and BelongToRoleId = '" + currentRoleId + "' order by Lv"); int primaryKeyId = 0; int num = 0; if (sqReader.Read()) { primaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); num = sqReader.GetInt32(sqReader.GetOrdinal("Num")); if (num > 1) { db.ExecuteQuery("update BagTable set Num = " + (num - 1) + " where Id = " + primaryKeyId); } else { db.ExecuteQuery("delete from BagTable where Id = " + primaryKeyId); } db.ExecuteQuery("update RolesTable set InjuryType = " + ((int)InjuryType.None) + " where Id = " + id); success = true; } else { AlertCtrl.Show(string.Format("行囊中并未发现有能够治愈{0}的伤药(需要{1}级伤药)", Statics.GetInjuryName((InjuryType)injury), injury), null); } } } db.CloseSqlConnection(); if (success && role != null) { Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"#FFFF00\">{0}</color>的伤势已经痊愈!", role.Name), Color.white, 30); GetHospitalPanelData(); CallRoleInfoPanelData(false); //刷新队伍数据 } }
void onClick(GameObject e) { switch (e.name) { case "SettingBtn": Messenger.Broadcast <bool>(NotifyTypes.ShowSettingPanel, true); break; case "viewTimesButton": AlertCtrl.Show("时辰顺序: \n午时, 未时, 申时, 酉时, 戌时, 亥时 子时, 丑时, 寅时, 卯时, 辰时, 巳时", null, "关闭"); break; default: break; } }
/// <summary> /// 融合诀要 /// </summary> /// <param name="secret">Secret.</param> public bool MixSecrets(SecretData secret) { bool result = false; if (secret.Quality >= QualityType.FlashRed) { AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>已经是顶级诀要无法继续融合", Statics.GetQualityColorString(secret.Quality), secret.Name)); return(result); } db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select count(*) as num from BookSecretsTable where T = " + ((short)secret.Type) + " and Q = " + ((short)secret.Quality) + " and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { if (sqReader.GetInt32(sqReader.GetOrdinal("num")) >= 2) { sqReader = db.ExecuteQuery("select Id from BookSecretsTable where T = " + ((short)secret.Type) + " and Q = " + ((short)secret.Quality) + " and BelongToRoleId = '" + currentRoleId + "' and Id != " + secret.PrimaryKeyId + " order by Id limit 0, 1"); //删除素材诀要 while (sqReader.Read()) { db.ExecuteQuery("delete from BookSecretsTable where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } //升级选中的诀要 sqReader = db.ExecuteQuery("select SecretData, Q from BookSecretsTable where Id = " + secret.PrimaryKeyId); if (sqReader.Read()) { SecretData secretData = JsonManager.GetInstance().DeserializeObject <SecretData>(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("SecretData")))); short endQuality = (short)(((int)secretData.Quality) + 1); secretData.Quality = (QualityType)(endQuality); db.ExecuteQuery("update BookSecretsTable set SecretData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(secretData)) + "', Q = " + ((short)secretData.Quality) + " where Id = " + secret.PrimaryKeyId); Statics.CreatePopMsg(Vector3.zero, string.Format("融合<color=\"{0}\">{1}</color>后使你武功精进!", Statics.GetQualityColorString(secretData.Quality), secretData.Name), Color.white, 30); SoundManager.GetInstance().PushSound("ui0010"); result = true; } else { AlertCtrl.Show("需要融合的诀要不存在"); } } else { AlertCtrl.Show(string.Format("至少需要2张相同品质的<color=\"{0}\">{1}</color>才能融合成更高级的诀要", Statics.GetQualityColorString(secret.Quality), secret.Name)); } } db.CloseSqlConnection(); return(result); }
void onClick(GameObject e) { if (Time.fixedTime - date <= timeout) { return; } switch (e.name) { case "EnterOccupation0": Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation0"); break; case "EnterOccupation1": if (DbManager.Instance.HostData.Gender == GenderType.Male) { Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation1"); } else { AlertCtrl.Show("少林乃佛门清净之地,不接纳女弟子"); return; } break; case "EnterOccupation2": Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation2"); break; case "EnterOccupation3": Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation3"); break; case "EnterOccupation4": Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation4"); break; case "EnterOccupation5": Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation5"); break; default: break; } Back(); AlertCtrl.Show("去吧去吧,老夫已为你做了引荐"); }
/// <summary> /// 吃干粮 /// </summary> /// <param name="id">Identifier.</param> /// <param name="num">Number.</param> public void Eat(int id, int num) { int eatNum = 0; db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select Id, Data, AreaFoodNum from UserDatasTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { int userDataId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); UserData user = JsonManager.GetInstance().DeserializeObject <UserData>(sqReader.GetString(sqReader.GetOrdinal("Data"))); user.AreaFood.Num = sqReader.GetInt32(sqReader.GetOrdinal("AreaFoodNum")); user.AreaFood.Num = user.AreaFood.Num > user.AreaFood.MaxNum ? user.AreaFood.MaxNum : user.AreaFood.Num; if (user.AreaFood.Num < user.AreaFood.MaxNum) { eatNum = user.AreaFood.MaxNum - user.AreaFood.Num; eatNum = eatNum <= num ? eatNum : num; user.AreaFood.Num += eatNum; num -= eatNum; if (num > 0) { //减掉吃掉的干粮辎重 db.ExecuteQuery("update BagTable set Num = " + num + " where Id = " + id); } else { //删除干粮辎重 db.ExecuteQuery("delete from BagTable where Id = " + id); } //更新当前干粮 db.ExecuteQuery("Update UserDatasTable set Data = '" + JsonManager.GetInstance().SerializeObjectDealVector(user) + "', AreaFoodNum = " + user.AreaFood.Num + " where Id = " + userDataId); AreaMainPanelCtrl.MakeUpdateFoods(user.AreaFood.Num); } else { AlertCtrl.Show("目前体力充沛不需要进食!"); } } db.CloseSqlConnection(); if (eatNum > 0) { Statics.CreatePopMsg(Vector3.zero, string.Format("补充了{0}个干粮", eatNum), Color.green, 30); GetBagPanelData(); } }
void onClick(GameObject e) { if (!e.GetComponent <Button>().enabled) { return; } switch (e.name) { case "MakeBtn": if (roleData.State == RoleStateType.NotRecruited) { // ConfirmCtrl.Show(string.Format("是否将<color=\"{0}\">{1}</color>赠给{2}与其结交?", Statics.GetQualityColorString(weapon.Quality), weapon.Name, roleData.Name), () => { // Messenger.Broadcast<int>(NotifyTypes.InviteRole, roleData.PrimaryKeyId); // }); string needMsg = ""; for (int i = 0, len = weapon.Needs.Count; i < len; i++) { needMsg += string.Format("{0}个{1}", weapon.Needs[i].Num, Statics.GetEnmuDesc <ResourceType>(weapon.Needs[i].Type)) + (i < len - 1 ? "," : ""); } if (needMsg != "") { ConfirmCtrl.Show(string.Format("要将<color=\"{0}\">{1}</color>赠送给{2}\n需要{3}\n是否立即锻造兵器?", Statics.GetQualityColorString(weapon.Quality), weapon.Name, roleData.Name, needMsg), () => { Messenger.Broadcast <int>(NotifyTypes.InviteRole, roleData.PrimaryKeyId); }); } else { AlertCtrl.Show("兵器没有原材料无法打造", null); } } else { AlertCtrl.Show(string.Format("{0}已经和你结交", roleData.Name), null); } break; case "Btn": Messenger.Broadcast <RoleData>(NotifyTypes.ShowRoleDetailPanel, roleData); break; default: break; } viewedNewFlag(); }
void onClick(GameObject e) { if (!e.GetComponent <Button>().enabled) { return; } switch (e.name) { case "StartBtn": if (rolesData.Count > 0) { if (rolesData[0].Injury == InjuryType.Moribund) { AlertCtrl.Show("你现在伤重生命垂危不能继续闯荡江湖!", null); } else { if (foodData.Num <= 0) { AlertCtrl.Show("没有干粮如何闯荡江湖!", null); } else { JArray ids = new JArray(); for (int i = 0; i < selectedRolesData.Count; i++) { ids.Add(selectedRolesData[i].PrimaryKeyId); } Messenger.Broadcast <JArray>(NotifyTypes.ChangeRolesSeatNo, ids); } } } break; case "BackBtn": FadeOut(); break; default: break; } }
void onClick(GameObject e) { if (!PayBtn.enabled) { return; } if (!IsFree) { MaiHandler.PayForProduct(ProductId); } else { // MaiHandler.StartRewardedVideo(() => { DbManager.Instance.GotSilver(1000); Messenger.Broadcast <string>(NotifyTypes.GetStorePanelData, UserModel.CurrentUserData.CurrentCitySceneId); StartTimer(); AlertCtrl.Show("银子 +1000"); // }); } }
/// <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); } }
void onClick(GameObject e) { if (!e.GetComponent <Button>().enabled) { return; } switch (e.name) { case "MakeBtn": if (bookData.Occupation == OccupationType.None || bookData.Occupation == hostRoleData.Occupation) { if (bookData.State == BookStateType.Unread) { string noticeMsg = costStr != "" ? string.Format("是否将{0}拼合成<color=\"{1}\">{2}</color>进行研读?", costStr, Statics.GetQualityColorString(bookData.Quality), bookData.Name) : string.Format("是否研读<color=\"{0}\">{1}</color>?", Statics.GetQualityColorString(bookData.Quality), bookData.Name); ConfirmCtrl.Show(noticeMsg, () => { Messenger.Broadcast <int>(NotifyTypes.ReadBook, bookData.PrimaryKeyId); }); } else { AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>已经研读过", Statics.GetQualityColorString(bookData.Quality), bookData.Name), null); } } else { AlertCtrl.Show(string.Format("非{0}弟子不得研习<color=\"{1}\">{2}</color>!", Statics.GetOccupationName(bookData.Occupation), Statics.GetQualityColorString(bookData.Quality), bookData.Name)); } break; case "Btn": Messenger.Broadcast <BookData>(NotifyTypes.ShowBookDetailPanel, bookData); break; default: break; } viewedNewFlag(); }
void sendUseBook(int index) { BookData book = booksData[index]; BookData findBook; if (!book.IsMindBook) { if (!book.IsLostKnowledge) { findBook = booksData.Find(item => item.BeUsingByRoleId != "" && item.IsMindBook == false && item.IsLostKnowledge == false); if (findBook != null) { AlertCtrl.Show("只能随身携带一本秘籍!"); return; } } else { findBook = booksData.Find(item => item.BeUsingByRoleId != "" && item.IsMindBook == false && item.IsLostKnowledge == true); if (findBook != null) { AlertCtrl.Show("只能随身携带一本绝学!"); return; } } Messenger.Broadcast <int>(NotifyTypes.UseBook, book.PrimaryKeyId); } else { findBook = booksData.Find(item => item.BeUsingByRoleId != "" && item.IsMindBook == false && item.IsLostKnowledge == false); if (findBook == null) { AlertCtrl.Show("没有秘籍在身不能使用心法!"); return; } Messenger.Broadcast <int>(NotifyTypes.UseBook, book.PrimaryKeyId); } }
void onClick(GameObject e) { switch (e.name) { case "SettingBtn": if (BattleFightPanelCtrl.Ctrl != null) { AlertCtrl.Show("请专心战斗"); break; } Messenger.Broadcast <bool>(NotifyTypes.ShowSettingPanel, true); break; case "viewTimesButton": AlertCtrl.Show("时辰顺序: \n午时, 未时, 申时, 酉时, 戌时, 亥时 子时, 丑时, 寅时, 卯时, 辰时, 巳时", null, "关闭"); break; case "EnemyInfoBtn": EnemysInfoPanelCtrl.Show(); SetEnemyInfoRedPointFlag(false); break; case "BackToCityBtn": if (BattleFightPanelCtrl.Ctrl != null) { AlertCtrl.Show("请专心战斗"); break; } ConfirmCtrl.Show("现在马上回城?", () => { Messenger.Broadcast(NotifyTypes.BackToCity); }); break; default: break; } }
//将所有人的伤势缓解一级 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> /// 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); }); }
void onClick(GameObject e) { if (!PayBtn.enabled) { return; } if (propData.Num >= propData.Max) { switch (propData.Type) { case PropType.NocturnalClothing: AlertCtrl.Show(string.Format("最多只能携带{0}件夜行衣", propData.Max)); break; case PropType.Bodyguard: AlertCtrl.Show(string.Format("最多只能雇佣{0}位镖师", propData.Max)); break; case PropType.LimePowder: AlertCtrl.Show(string.Format("最多只能携带{0}包石灰粉", propData.Max)); break; case PropType.Scout: AlertCtrl.Show(string.Format("最多只能拥有{0}个探子", propData.Max)); break; default: break; } return; } if (!IsFree) { if (propData.Num > 0) { switch (propData.Type) { case PropType.NocturnalClothing: AlertCtrl.Show(string.Format("你还有{0}件夜行衣,不可再买", propData.Num)); break; case PropType.Bodyguard: AlertCtrl.Show(string.Format("你还有{0}位镖师,不可再买", propData.Num)); break; case PropType.LimePowder: AlertCtrl.Show(string.Format("你还有{0}包石灰粉,不可再买", propData.Num)); break; case PropType.Scout: AlertCtrl.Show(string.Format("你还有{0}个探子,不可再买", propData.Num)); break; default: break; } return; } MaiHandler.PayForProduct(productId); } else { // MaiHandler.StartRewardedVideo(() => { StartTimer(); SendRewards(propData.Type, UnityEngine.Random.Range(1, 3)); // }); } }
/// <summary> /// 打造兵器 /// </summary> /// <param name="weaponId">Weapon identifier.</param> public void CreateNewWeaponOfWorkshop(string weaponId) { db = OpenDb(); WeaponData weapon = JsonManager.GetInstance().GetMapping <WeaponData>("Weapons", weaponId); List <ResourceData> needs = new List <ResourceData>(); ResourceData need; ResourceData find; for (int i = 0; i < weapon.Needs.Count; i++) { need = weapon.Needs[i]; find = needs.Find(item => item.Type == need.Type); if (find == null) { needs.Add(new ResourceData(need.Type, need.Num)); } else { find.Num += need.Num; } } SqliteDataReader sqReader = db.ExecuteQuery("select Id, ResourcesData from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); List <ResourceData> resources = null; int id = 0; if (sqReader.Read()) { id = sqReader.GetInt32(sqReader.GetOrdinal("Id")); string resourcesStr = sqReader.GetString(sqReader.GetOrdinal("ResourcesData")); resourcesStr = resourcesStr.IndexOf("[") == 0 ? resourcesStr : DESStatics.StringDecder(resourcesStr); resources = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(resourcesStr); } db.CloseSqlConnection(); if (resources != null) { bool canAdd = true; string msg = ""; for (int i = 0; i < needs.Count; i++) { need = needs[i]; find = resources.Find(item => item.Type == need.Type); if (find != null && find.Num >= need.Num) { find.Num -= need.Num; } else { canAdd = false; msg = string.Format("{0}不足!", Statics.GetResourceName(need.Type)); break; } } if (canAdd) { //检测添加武器 if (AddNewWeapon(weapon.Id)) { db = OpenDb(); db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "' where Id = " + id); db.CloseSqlConnection(); Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(weapon.Quality), weapon.Name), Color.white, 30); SoundManager.GetInstance().PushSound("ui0007"); } else { AlertCtrl.Show("兵器匣已满!", null); } } else { AlertCtrl.Show(msg, null); } } }
void onClick(GameObject e) { if (Time.fixedTime - date <= timeout) { return; } switch (e.name) { case "SureBtn": case "Block": Back(); break; case "ResetBtn": ConfirmCtrl.Show("是否打开塔内重置机关?\n<color=\"#ff0000\">[重置后塔内守卫将会重生]</color>", () => { Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, null); Statics.CreatePopMsg(Vector3.zero, "通天塔内守卫全部重生!", Color.red, 30); }); break; case "difficultyBtn0": if (difficultyBtns[0].enabled) { ConfirmCtrl.Show("是否激活普通强度?", () => { if (DbManager.Instance.CostSilver(10000)) { PlayerPrefs.SetInt("TowerDifficulty", 0); Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel); Statics.CreatePopMsg(Vector3.zero, "普通的量子强度被激活", Color.white, 30); } else { AlertCtrl.Show("银子不足!"); } }); } break; case "difficultyBtn1": if (difficultyBtns[1].enabled) { ConfirmCtrl.Show("是否激活噩梦强度?\n(4倍修为)", () => { if (DbManager.Instance.CostSilver(180000)) { PlayerPrefs.SetInt("TowerDifficulty", 1); Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel); Statics.CreatePopMsg(Vector3.zero, "噩梦的量子强度被激活", new Color(0.93f, 1, 0.33f), 30); } else { AlertCtrl.Show("银子不足!"); } }); } break; case "difficultyBtn2": if (difficultyBtns[2].enabled) { ConfirmCtrl.Show("是否激活绝望强度?\n(8倍修为)", () => { if (DbManager.Instance.CostSilver(980000)) { PlayerPrefs.SetInt("TowerDifficulty", 2); Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel); Statics.CreatePopMsg(Vector3.zero, "绝望的量子强度被激活", new Color(0.98f, 0.26f, 0.26f), 30); } else { AlertCtrl.Show("银子不足!"); } }); } break; default: break; } }
/// <summary> /// 记录进入的城镇 /// </summary> /// <param name="areaName">Area name.</param> public void CheckEnterCity(string cityId) { SceneData scene = JsonManager.GetInstance().GetMapping <SceneData>("Scenes", cityId); //战斗据点不处理任何增加数据 if (scene.IsJustFightScene) { return; } //非战斗城镇才需要检测各项数据 if (!scene.IsJustFightScene) { //检测是否有新的可以招募的侠客 CheckNewRoleIdsOfWinShop(cityId); //初始化用于判定新增结识侠客的id列表 CreateRoleIdOfWinShopNewFlagList(); //检测工坊是否有新的生产单元 CheckNewWorkshopItems(cityId); //检测是否有新的可以打造的兵器 CheckNewWeaponIdsOfWorkshop(cityId); //初始化用于判定新增锻造兵器的id列表 CreateWeaponIdOfWorkShopNewFlagList(); //检测是否发现新的秘籍 CheckNewBooksOfForbiddenArea(cityId); //初始化用于判定秘境中新增秘籍的id列表 CreateBookIdOfCurrentForbiddenAreaNewFlagList(cityId); //将背包里的辎重箱资源存入工坊 BringResourcesToWorkshop(); } string addDataMsg = ""; db = OpenDb(); SqliteDataReader sqReader; //处理新的家丁数 //兼容老版本 if (GetMaxWorkerNum() == 0) { sqReader = db.ExecuteQuery("select WorkerNum, MaxWorkerNum from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { int oldWorkerNum = sqReader.GetInt32(sqReader.GetOrdinal("WorkerNum")); int oldMaxWorkerNum = sqReader.GetInt32(sqReader.GetOrdinal("MaxWorkerNum")); SetMaxWorkerNum(oldMaxWorkerNum); SetWorkerNum(oldWorkerNum); } } sqReader = db.ExecuteQuery("select Id from EnterCityTable where CityId = '" + cityId + "' and BelongToRoleId = '" + currentRoleId + "'"); if (!sqReader.HasRows) { db.ExecuteQuery("insert into EnterCityTable (CityId, BelongToRoleId) values('" + cityId + "', '" + currentRoleId + "')"); //根据开启的城镇数计算工坊的家丁数上限和干粮上限 sqReader = db.ExecuteQuery("select count(*) as num from EnterCityTable where BelongToRoleId = '" + currentRoleId + "'"); int num = 0; int maxWorkerNum = 0; int areaFoodMaxNum = 0; if (sqReader.Read()) { num = sqReader.GetInt32(sqReader.GetOrdinal("num")); //新到一个城镇会增加5个家丁 maxWorkerNum = Mathf.Clamp(GetPlusWorkerNum() + 10 + num * 5, 15, 500 + GetPlusWorkerNum()); //上限500 //新到一个城镇会增加10个干粮上限 areaFoodMaxNum = Mathf.Clamp(30 + num * 10, 30, 600); //上限600 if (cityId != "00001") { //新手村不提示这个 if (maxWorkerNum < (500 + GetPlusWorkerNum())) { addDataMsg += string.Format("家丁上限增加5, 总数:{0}", maxWorkerNum); } if (areaFoodMaxNum < 600) { addDataMsg += string.Format("\n可携带干粮上限增加10, 总数:{0}", areaFoodMaxNum); } } } if (maxWorkerNum > 0) { sqReader = db.ExecuteQuery("select Id, WorkerNum, MaxWorkerNum from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { int id = sqReader.GetInt32(sqReader.GetOrdinal("Id")); // int oldWorkerNum = sqReader.GetInt32(sqReader.GetOrdinal("WorkerNum")); // int oldMaxWorkerNum = sqReader.GetInt32(sqReader.GetOrdinal("MaxWorkerNum")); int oldWorkerNum = GetWorkerNum(); int oldMaxWorkerNum = GetMaxWorkerNum(); if (oldMaxWorkerNum < maxWorkerNum) { //累加空闲家丁,更新家丁上限 db.ExecuteQuery("update WorkshopResourceTable set WorkerNum = " + (oldWorkerNum + (maxWorkerNum - oldMaxWorkerNum)) + ", MaxWorkerNum = " + maxWorkerNum + " where Id = '" + id + "'"); SetMaxWorkerNum(maxWorkerNum); SetWorkerNum((oldWorkerNum + (maxWorkerNum - oldMaxWorkerNum))); } } } if (areaFoodMaxNum > 0) { sqReader = db.ExecuteQuery("select Id, Data from UserDatasTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { UserData user = JsonManager.GetInstance().DeserializeObject <UserData>(sqReader.GetString(sqReader.GetOrdinal("Data"))); user.AreaFood.MaxNum = areaFoodMaxNum; db.ExecuteQuery("Update UserDatasTable set Data = '" + JsonManager.GetInstance().SerializeObjectDealVector(user) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); if (UserModel.CurrentUserData != null) { UserModel.CurrentUserData.AreaFood.MaxNum = user.AreaFood.MaxNum; } } } switch (cityId) { case "0002": //临安集市 case "1001": //观前街 case "2002": //归云庄 case "6001": //金国领地 sqReader = db.ExecuteQuery("select Id, Data from UserDatasTable where BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { UserData user = JsonManager.GetInstance().DeserializeObject <UserData>(sqReader.GetString(sqReader.GetOrdinal("Data"))); user.MaxRoleNum = Mathf.Clamp(user.MaxRoleNum + 1, 2, 6); db.ExecuteQuery("Update UserDatasTable set Data = '" + JsonManager.GetInstance().SerializeObjectDealVector(user) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); if (UserModel.CurrentUserData != null) { UserModel.CurrentUserData.MaxRoleNum = user.MaxRoleNum; if (addDataMsg != "") { addDataMsg += "\n"; } addDataMsg += string.Format("侠客上限增加1, 总数:{0}", user.MaxRoleNum); } } break; default: break; } } db.CloseSqlConnection(); if (!string.IsNullOrEmpty(addDataMsg)) { AlertCtrl.Show(addDataMsg); } }
/// <summary> /// Scenes the notify init. /// </summary> public static void RoleNotifyInit() { Messenger.AddListener <bool>(NotifyTypes.CallRoleInfoPanelData, (isfighting) => { DbManager.Instance.CallRoleInfoPanelData(isfighting); }); Messenger.AddListener <JObject, bool>(NotifyTypes.CallRoleInfoPanelDataEcho, (obj, isfighting) => { // RoleInfoPanelCtrl.Show((JArray)obj["data"], isfighting); RolesInfoPanelCtrl.Show((JArray)obj["data"]); if (!isfighting) { Messenger.Broadcast(NotifyTypes.ShowTaskBtnPanel); } }); Messenger.AddListener(NotifyTypes.HideRoleInfoPanel, () => { // RoleInfoPanelCtrl.MoveDown(); RolesInfoPanelCtrl.MoveDown(); Messenger.Broadcast(NotifyTypes.HideTaskBtnPanel); }); Messenger.AddListener(NotifyTypes.MakeRoleInfoPanelRedPointRefresh, () => { RolesInfoPanelCtrl.MakeRefreshRedPoint(); }); Messenger.AddListener(NotifyTypes.MakeReviewRole, () => { RolesInfoPanelCtrl.MakeReviewRole(); }); Messenger.AddListener <bool>(NotifyTypes.MakeChangeRoleEnable, (enable) => { RoleInfoPanelCtrl.MakeChangeRoleEnable(enable); }); Messenger.AddListener <bool>(NotifyTypes.MakeChangeBookEnable, (enable) => { RoleInfoPanelCtrl.MakeChangeBookEnable(enable); }); Messenger.AddListener <bool>(NotifyTypes.MakeRoleInfoPanelDisable, (dis) => { RoleInfoPanelCtrl.MakeDisable(dis); }); Messenger.AddListener <string>(NotifyTypes.GetRolesOfWinShopPanelData, (cityId) => { DbManager.Instance.GetRolesOfWinShopPanelData(cityId); }); Messenger.AddListener <List <RoleData> >(NotifyTypes.GetRolesOfWinShopPanelDataEcho, (roles) => { roles.Sort((a, b) => b.Id.CompareTo(a.Id)); RolesOfWinShopPanelCtrl.Show(roles); }); Messenger.AddListener(NotifyTypes.GetWeaponsListPanelData, () => { DbManager.Instance.GetWeaponsListPanelData(); }); Messenger.AddListener <List <WeaponData>, RoleData>(NotifyTypes.GetWeaponsListPanelDataEcho, (weapons, host) => { WeaponListPanelCtrl.Show(weapons, host); }); Messenger.AddListener <int, string>(NotifyTypes.ReplaceWeapon, (id, beUsingByRoleId) => { DbManager.Instance.ReplaceWeapon(id, beUsingByRoleId); }); Messenger.AddListener <int>(NotifyTypes.TakeOffWeapon, (id => { DbManager.Instance.TakeOffWeapon(id); SoundManager.GetInstance().PushSound("ui0008"); })); Messenger.AddListener(NotifyTypes.GetBooksListPanelData, () => { DbManager.Instance.GetBooksListPanelData(); }); Messenger.AddListener <List <BookData> >(NotifyTypes.GetBooksListPanelDataEcho, (books) => { BookListPanelCtrl.Show(books); }); Messenger.AddListener <int>(NotifyTypes.UseBook, (id => { DbManager.Instance.UseBook(id); })); Messenger.AddListener <int>(NotifyTypes.UnuseBook, (id => { DbManager.Instance.UnuseBook(id); SoundManager.GetInstance().PushSound("ui0008"); })); Messenger.AddListener <string>(NotifyTypes.GetBooksOfForbiddenAreaPanelData, (cityId) => { DbManager.Instance.GetBooksOfForbiddenAreaPanelData(cityId); }); Messenger.AddListener <List <BookData>, RoleData>(NotifyTypes.GetBooksOfForbiddenAreaPanelDataEcho, (books, host) => { BooksOfForbiddenAreaPanelCtrl.Show(books, host); }); Messenger.AddListener <int>(NotifyTypes.InviteRole, (id) => { // DbManager.Instance.InviteRole(id); DbManager.Instance.InviteRoleWithResources(id); }); Messenger.AddListener <int>(NotifyTypes.ReadBook, (id => { DbManager.Instance.ReadBook(id); })); Messenger.AddListener(NotifyTypes.GetReadyToTravelPanelData, () => { DbManager.Instance.GetReadyToTravelPanelData(); }); Messenger.AddListener <List <RoleData>, UserData>(NotifyTypes.GetReadyToTravelPanelDataEcho, (roles, user) => { Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); roles.Sort(sortReadyToTravelRoles); ReadyToTravelPanelCtrl.Show(roles, user); }); Messenger.AddListener <RoleData>(NotifyTypes.MakeSelectRoleInTeam, (role) => { ReadyToTravelPanelCtrl.MakeSelectRole(role); }); Messenger.AddListener <RoleData>(NotifyTypes.MakeUnSelectRoleInTeam, (role) => { ReadyToTravelPanelCtrl.MakeUnSelectRole(role); }); Messenger.AddListener <JArray>(NotifyTypes.ChangeRolesSeatNo, (ids) => { DbManager.Instance.ChangeRolesSeatNo(ids); }); Messenger.AddListener(NotifyTypes.EnterAreaFromCity, () => { Messenger.Broadcast(NotifyTypes.HideCityScenePanel); Messenger.Broadcast(NotifyTypes.FromCitySceneBackToArea); Messenger.Broadcast(NotifyTypes.CallAreaMainPanelData); ReadyToTravelPanelCtrl.Hide(); }); Messenger.AddListener(NotifyTypes.GetHospitalPanelData, () => { DbManager.Instance.GetHospitalPanelData(); }); Messenger.AddListener <List <RoleData> >(NotifyTypes.GetHospitalPanelDataEcho, (roles) => { roles.Sort((a, b) => b.Injury.CompareTo(a.Injury)); HospitalPanelCtrl.Show(roles); }); Messenger.AddListener <int>(NotifyTypes.CureRole, (id => { DbManager.Instance.CureRole(id); })); Messenger.AddListener(NotifyTypes.RelieveRoles, () => { DbManager.Instance.RelieveRoles(); }); Messenger.AddListener(NotifyTypes.GetBagPanelData, () => { DbManager.Instance.GetBagPanelData(); }); Messenger.AddListener <List <ItemData>, double>(NotifyTypes.GetBagPanelDataEcho, (items, silver) => { BagPanelCtrl.Show(items, silver); }); Messenger.AddListener <ItemData, bool>(NotifyTypes.ShowItemDetailPanel, (item, fromBag) => { ItemDetailPanelCtrl.Show(item, fromBag); }); Messenger.AddListener(NotifyTypes.GetSellItemsPanelData, () => { DbManager.Instance.GetSellItemsPanelData(); }); Messenger.AddListener <List <ItemData> >(NotifyTypes.GetSellItemsPanelDataEcho, (items) => { SellItemsPanelCtrl.Show(items); }); Messenger.AddListener(NotifyTypes.MakeSelectedItemOfSellItemsPanel, () => { SellItemsPanelCtrl.MakeSelectedItem(); }); Messenger.AddListener <JArray>(NotifyTypes.SellItems, (ids) => { DbManager.Instance.SellItems(ids); }); Messenger.AddListener <double>(NotifyTypes.SellItemsEcho, (silver) => { SellItemsPanelCtrl.Hide(); StorePanelCtrl.MakeChangeSilverNum(silver); SoundManager.GetInstance().PushSound("ui0005"); }); Messenger.AddListener <int>(NotifyTypes.DiscardItem, (id) => { DbManager.Instance.DiscardItem(id); SoundManager.GetInstance().PushSound("ui0008"); }); Messenger.AddListener <BookData>(NotifyTypes.ShowBookDetailPanel, (book) => { BookDetailPanelCtrl.Show(book, DbManager.Instance.GetBookExpAndSecrets(book.Id)); }); Messenger.AddListener <WeaponData>(NotifyTypes.ShowWeaponDetailPanel, (weapon) => { WeaponDetailPanelCtrl.Show(weapon, DbManager.Instance.GetWeaponLV(weapon.Id)); }); Messenger.AddListener <WeaponData>(NotifyTypes.WeaponLVUpgrade, (weapon) => { DbManager.Instance.WeaponLVUpgrade(weapon); }); Messenger.AddListener <WeaponLVData>(NotifyTypes.WeaponLVUpgradeEcho, (lvData) => { WeaponDetailPanelCtrl.WeaponLVUpgrade(lvData); }); Messenger.AddListener <RoleData>(NotifyTypes.ShowRoleDetailPanel, (role) => { RoleDetailPanelCtrl.Show(role, DbManager.Instance.GetSecretsBelongBooks(role.ResourceBookDataIds)); }); Messenger.AddListener <List <DropData> >(NotifyTypes.ShowDropsListPanel, (drops) => { DropsListPanelCtrl.Show(drops); SoundManager.GetInstance().PushSound("ui0004"); }); Messenger.AddListener <int>(NotifyTypes.UseItem, (id => { DbManager.Instance.UseItem(id); })); Messenger.AddListener <string>(NotifyTypes.GetInnInCityData, (cityId) => { DbManager.Instance.GetInnInCityData(cityId); }); Messenger.AddListener <List <FloydResult> >(NotifyTypes.GetInnInCityDataEcho, (results) => { InnPanelCtrl.Show(results); }); Messenger.AddListener <int, int>(NotifyTypes.GoToCity, (fromIndex, toIndex) => { DbManager.Instance.GoToCity(fromIndex, toIndex); }); Messenger.AddListener <SceneData>(NotifyTypes.GoToCityEcho, (scene) => { string eventId = JsonManager.GetInstance().GetMapping <string>("AreaCityPosDatas", scene.Id); 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) { CityScenePanelCtrl.MakeClose(); InnPanelCtrl.Hide(); UserModel.CurrentUserData.PositionStatu = UserPositionStatusType.InCity; UserModel.CurrentUserData.CurrentCitySceneId = scene.Id; UserModel.CurrentUserData.CurrentAreaSceneName = areaName; UserModel.CurrentUserData.CurrentAreaX = x; UserModel.CurrentUserData.CurrentAreaY = y; //清空临时事件 Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, new List <SceneEventType>() { SceneEventType.DisablePagoda }); Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, null); Messenger.Broadcast <string>(NotifyTypes.GoToScene, areaName); } } }); Messenger.AddListener <string>(NotifyTypes.NpcsEventHandler, (npcId) => { switch (npcId) { case "05002001": if (DbManager.Instance.HostData.Occupation == OccupationType.None) { if (!DbManager.Instance.HasAnyTask((new List <string>() { "task_occupation0", "task_occupation1", "task_occupation2", "task_occupation3", "task_occupation4", "task_occupation5" }).ToArray())) { OccupationPanelCtrl.Show(); } else { AlertCtrl.Show("去吧去吧,老夫已为你做了引荐"); } } else { AlertCtrl.Show(string.Format("你已是{0},可喜可贺啊,哦哈哈哈哈", Statics.GetOccupationDesc(DbManager.Instance.HostData.Occupation))); } break; default: break; } }); Messenger.AddListener <int>(NotifyTypes.HostRoleUpgrade, (toLv) => { DbManager.Instance.HostRoleUpgrade(toLv); }); Messenger.AddListener <RoleData, RoleData>(NotifyTypes.HostRoleUpgradeEcho, (roleData, toData) => { RoleUpgradeLvPanelCtrl.Show(roleData, toData); SoundManager.GetInstance().PushSound("ui0002"); }); Messenger.AddListener(NotifyTypes.OpenRepairBugPanel, () => { RepairBugPanelCtrl.Show(); }); Messenger.AddListener <BookData, List <SecretData> >(NotifyTypes.GetSecretListPanelData, (book, hasSecrets) => { SecretListPanelCtrl.Show(DbManager.Instance.GetEffectiveSecrets(), book, hasSecrets); }); Messenger.AddListener <BookData, List <SecretData> >(NotifyTypes.DealSecretEcho, (book, hasSecrets) => { if (RolesInfoPanelCtrl.Ctrl != null) { Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, false); Messenger.Broadcast(NotifyTypes.MakeReviewRole); } Messenger.Broadcast <BookData>(NotifyTypes.ShowBookDetailPanel, book); Messenger.Broadcast <BookData, List <SecretData> >(NotifyTypes.GetSecretListPanelData, book, hasSecrets); }); Messenger.AddListener(NotifyTypes.OpenTowerGuiderPanel, () => { TowerGuiderPanelCtrl.Show(); AreaMainPanelCtrl.MakeRefreshDifficultyView(); }); }
/// <summary> /// 购买物品 /// </summary> /// <param name="itemId">Item identifier.</param> /// <param name="num">Number.</param> public void BuyItem(string itemId, int num = 1) { ModifyResources(); ItemData item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId); //单次购买的数量不能超出物品叠加上限 int startNum = num <= item.MaxNum ? num : item.MaxNum; int itemNum = startNum; double silverNum = 0; db = OpenDb(); //查询背包是否已满 SqliteDataReader sqReader = db.ExecuteQuery("select count(*) as num from BagTable where BelongToRoleId = '" + currentRoleId + "'"); bool enoughBagSeat = false; bool enoughMoney = false; string msg = ""; if (sqReader.Read()) { if (sqReader.GetInt32(sqReader.GetOrdinal("num")) < MaxItemNumOfBag) { enoughBagSeat = true; } } if (enoughBagSeat) { sqReader = db.ExecuteQuery("select Id, ResourcesData from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); List <ResourceData> resources = null; if (sqReader.Read()) { resources = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(sqReader.GetString(sqReader.GetOrdinal("ResourcesData"))); //查询目前的银子余额 ResourceData resource = resources.Find(re => re.Type == ResourceType.Silver); if (resource != null) { if (resource.Num >= item.BuyPrice * itemNum) { enoughMoney = true; resource.Num -= (item.BuyPrice * itemNum); //扣钱 db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + JsonManager.GetInstance().SerializeObject(resources) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); silverNum = resource.Num; } } } //背包未满 if (enoughMoney) { //银子够买 //查询背包里是否有物品以及物品的数量是否达到上限 sqReader = db.ExecuteQuery("select * from BagTable where ItemId = '" + itemId + "' and Num < MaxNum and BelongToRoleId = '" + currentRoleId + "'"); if (!sqReader.HasRows) { //添加新的物品 db.ExecuteQuery("insert into BagTable (ItemId, Type, Num, MaxNum, Lv, BelongToRoleId) values('" + itemId + "', " + ((int)item.Type) + ", " + itemNum + ", " + item.MaxNum + ", " + item.Lv + ", '" + currentRoleId + "')"); } else { int itemDataNum; int itemDataMaxNum; int addNum; //修改以后物品的数量 while (sqReader.Read() && itemNum > 0) { itemDataNum = sqReader.GetInt32(sqReader.GetOrdinal("Num")); itemDataMaxNum = sqReader.GetInt32(sqReader.GetOrdinal("MaxNum")); addNum = (itemDataMaxNum - itemDataNum) <= itemNum ? (itemDataMaxNum - itemDataNum) : itemNum; itemNum -= addNum; db.ExecuteQuery("update BagTable set Num = " + (itemDataNum + addNum) + " where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } //对已有物品进行累加后还有剩余数量,则这个数量全部新增为新物品 if (itemNum > 0) { db.ExecuteQuery("insert into BagTable (ItemId, Type, Num, MaxNum, Lv, BelongToRoleId) values('" + itemId + "', " + ((int)item.Type) + ", " + itemNum + ", " + item.MaxNum + ", " + item.Lv + ", '" + currentRoleId + "')"); } } } } db.CloseSqlConnection(); if (!enoughBagSeat) { AlertCtrl.Show("行囊已满,不能携带更多的物品!"); } else if (!enoughMoney) { AlertCtrl.Show("银子不够!\n(<color=\"#00FF00\">工坊中可以赚取银子</color>)"); } else { msg = string.Format("<color=\"#1ABDE6\">{0}</color>+{1}", item.Name, startNum); Messenger.Broadcast <string, double>(NotifyTypes.BuyItemEcho, msg, silverNum); } }
/// <summary> /// 使用物品 /// </summary> /// <param name="Id">Identifier.</param> public void UseItem(int id) { db = OpenDb(); string itemId = ""; ItemType type = ItemType.None; int num = 0; SqliteDataReader sqReader = db.ExecuteQuery("select ItemId, Type, Num from BagTable where Id = " + id); if (sqReader.Read()) { itemId = sqReader.GetString(sqReader.GetOrdinal("ItemId")); type = (ItemType)sqReader.GetInt32(sqReader.GetOrdinal("Type")); num = sqReader.GetInt32(sqReader.GetOrdinal("Num")); } db.CloseSqlConnection(); if (type != ItemType.None && num > 0) { ItemData item; switch (type) { case ItemType.Food: Eat(id, num); break; case ItemType.Weapon: item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId); if (AddNewWeapon(item.StringValue, "")) { WeaponData weapon = JsonManager.GetInstance().GetMapping <WeaponData>("Weapons", item.StringValue); Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(weapon.Quality), weapon.Name), Color.white, 30); //删除兵器盒 db = OpenDb(); db.ExecuteQuery("delete from BagTable where Id = " + id); db.CloseSqlConnection(); //重新加载背包数据 GetBagPanelData(); } else { AlertCtrl.Show("兵器匣已满,请先整理兵器匣"); } break; case ItemType.Book: item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId); BookData book = JsonManager.GetInstance().GetMapping <BookData>("Books", item.StringValue); if (AddNewBook(item.StringValue, "")) { Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(book.Quality), book.Name), Color.white, 30); //删除秘籍盒 db = OpenDb(); db.ExecuteQuery("delete from BagTable where Id = " + id); db.CloseSqlConnection(); //重新加载背包数据 GetBagPanelData(); } else { AlertCtrl.Show(string.Format("你已经习得<color=\"{0}\">{1}</color>, 无需再研读", Statics.GetQualityColorString(book.Quality), book.Name)); } break; default: AlertCtrl.Show("该物品不可使用!"); break; } } }