public override void RefreshView() { refreshEnemy(); refreshTeamBlood(); refreshLimePowder(); DrugInBattleItemContainer drugContainer; for (int i = 0, len = drugsData.Count; i < len; i++) { drugContainer = Statics.GetPrefabClone(drugPrefab).GetComponent <DrugInBattleItemContainer>(); MakeToParent(drugsGrid.transform, drugContainer.transform); drugContainer.UpdateData(drugsData[i]); drugContainer.RefreshView(); drugInBattleItemContainers.Add(drugContainer); } TeamInBattleItemContainer teamContainer; for (int i = 0, len = teamsData.Count; i < len; i++) { teamContainer = Statics.GetPrefabClone(teamPrefab).GetComponent <TeamInBattleItemContainer>(); MakeToParent(teamsGrid.transform, teamContainer.transform); teamContainer.UpdateData(teamsData[i]); teamContainer.RefreshView(); teamInBattleItemContainers.Add(teamContainer); } //绝学视图 if (teamsData.Count > 0) { teamInBattleLostKnowledgeContainer.UpdateData(teamsData[0], true); teamInBattleLostKnowledgeContainer.RefreshView(); } SoundManager.GetInstance().PlayBGM("bgm0004"); }
/// <summary> /// 处理技能特效和音效 /// </summary> /// <param name="skill">Skill.</param> void dealSkillEffectAndSound(string teamName, SkillData skill) { if (skill == null) { return; } if (skill.EffectSrc != "") { GameObject effect = Statics.GetSkillEffectPrefabClone(skill.EffectSrc); if (effect != null) { if (teamName == "Team") { effect.transform.SetParent(enemySkillPos.transform); } else { effect.transform.SetParent(teamSkillPos.transform); } effect.transform.localPosition = Vector3.zero; } } if (skill.EffectSoundId != "") { SoundManager.GetInstance().PushSound(skill.EffectSoundId); } }
/// <summary> /// 遗忘秘籍诀要 /// </summary> /// <param name="book">Book.</param> /// <param name="secret">Secret.</param> public void ForgetSecret(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()) { secrets = JsonManager.GetInstance().DeserializeObject <List <SecretData> >(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("SecretsData")))); int findIndex = secrets.FindIndex(item => item.PrimaryKeyId == secret.PrimaryKeyId); if (findIndex >= 0) { secrets.RemoveAt(findIndex); } 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 = '' where Id = '" + secret.PrimaryKeyId + "'"); } db.CloseSqlConnection(); if (secrets != null) { Messenger.Broadcast <BookData, List <SecretData> >(NotifyTypes.DealSecretEcho, book, secrets); SoundManager.GetInstance().PushSound("ui0008"); } }
public override void RefreshView() { SoundManager.GetInstance().PlayBGM("bgm0003"); bg.color = Color.black; logoBackImage.DOFade(1, 0); logoImage.DOFade(0, 0); logoImage.rectTransform.anchoredPosition = new Vector2(-7, -100); poetryImage.DOFade(0, 0); bottomImage.DOFade(0, 0); bg.DOColor(new Color(0.937f, 0.937f, 0.937f, 1), 1).SetDelay(0.5f); logoBackImage.DOFade(0, 1).SetDelay(0.5f); logoImage.DOFade(1, 1).SetDelay(0.5f); logoImage.rectTransform.DOAnchorPos(new Vector2(220, -20), 1).SetEase(Ease.OutQuad).SetDelay(2); bottomImage.DOFade(1, 2).SetDelay(3); poetryImage.DOFade(1, 1).SetDelay(3); loadRecordsButton.gameObject.SetActive(true); loadRecordsButton.image.rectTransform.anchoredPosition = new Vector2(10 + 640, 45); loadRecordsButton.image.rectTransform.DOAnchorPos(new Vector2(10, 45), 0.5f).SetEase(Ease.OutQuad).SetDelay(3); settingButton.gameObject.SetActive(true); settingButton.image.rectTransform.anchoredPosition = new Vector2(134 + 640, 45); settingButton.image.rectTransform.DOAnchorPos(new Vector2(134, 45), 0.5f).SetEase(Ease.OutQuad).SetDelay(3.25f); enterButton.gameObject.SetActive(true); enterButton.image.rectTransform.anchoredPosition = new Vector2(430 + 640, 45); enterButton.image.rectTransform.DOAnchorPos(new Vector2(430, 45), 0.5f).SetEase(Ease.OutQuad).SetDelay(3.5f); versionText.text = string.Format("版本:{0}", version); versionText.DOFade(0, 0); versionText.DOFade(1, 1).SetDelay(4); progressImage.rectTransform.localScale = new Vector3(0, 1, 1); }
/// <summary> /// 工坊相关消息 /// </summary> public static void WorkshopNotifyInit() { Messenger.AddListener <string>(NotifyTypes.ShowWorkshopPanel, (cityId) => { WorkshopPanelCtrl.Show(cityId); }); Messenger.AddListener(NotifyTypes.GetWorkshopPanelData, () => { DbManager.Instance.GetWorkshopPanelData(); }); Messenger.AddListener <JArray>(NotifyTypes.GetWorkshopPanelDataEcho, (data) => { Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); WorkshopPanelCtrl.MakeGetWorkshopPanelDataEcho(data); }); Messenger.AddListener <ResourceType, int>(NotifyTypes.ChangeResourceWorkerNum, (type, num) => { DbManager.Instance.ChangeResourceWorkerNum(type, num); }); Messenger.AddListener <JArray>(NotifyTypes.ChangeResourceWorkerNumEcho, (data) => { WorkshopPanelCtrl.MakeChangeResourceWorkerNumEcho(data); }); Messenger.AddListener(NotifyTypes.ModifyResources, () => { DbManager.Instance.ModifyResources(); }); Messenger.AddListener <JArray>(NotifyTypes.ModifyResourcesEcho, (data) => { WorkshopPanelCtrl.MakeModifyResourcesEcho(data); }); Messenger.AddListener(NotifyTypes.GetWorkshopWeaponBuildingTableData, () => { DbManager.Instance.GetWorkshopWeaponBuildingTableData(); }); Messenger.AddListener <JArray>(NotifyTypes.GetWorkshopWeaponBuildingTableDataEcho, (data) => { WorkshopPanelCtrl.MakeGetWorkshopWeaponBuildingTableDataEcho(data); }); Messenger.AddListener <string>(NotifyTypes.CreateNewWeaponOfWorkshop, (weaponId) => { DbManager.Instance.CreateNewWeaponOfWorkshop(weaponId); }); Messenger.AddListener(NotifyTypes.GetWorkshopWeaponBreakingTableData, () => { DbManager.Instance.GetWorkshopWeaponBreakingTableData(); }); Messenger.AddListener <List <WeaponData> >(NotifyTypes.GetWorkshopWeaponBreakingTableDataEcho, (weapons) => { WorkshopPanelCtrl.MakeGetWorkshopWeaponBreakingTableDataEcho(weapons); }); Messenger.AddListener <int>(NotifyTypes.BreakWeapon, (primaryKeyId) => { DbManager.Instance.BreakWeapon(primaryKeyId); }); Messenger.AddListener <int>(NotifyTypes.BreakWeaponEcho, (primaryKeyId) => { WorkshopPanelCtrl.MakeBreakWeaponEcho(primaryKeyId); Statics.CreatePopMsg(Vector3.zero, "兵器被扔进熔炼炉内瞬间化为乌有", Color.white, 30); SoundManager.GetInstance().PushSound("ui0008"); }); }
/// <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="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 (!e.GetComponent <Button>().enabled) { return; } switch (e.name) { case "Block": case "CloseBtn": Back(); break; case "BGMOpenBtn": SoundManager.GetInstance().EnableBGM(); // Messenger.Broadcast(NotifyTypes.PlayBgm); refreshBGMAndSoundView(); break; case "BGMCloseBtn": SoundManager.GetInstance().DisableBGM(); refreshBGMAndSoundView(); break; case "SoundOpenBtn": SoundManager.GetInstance().EnableSound(); refreshBGMAndSoundView(); break; case "SoundCloseBtn": SoundManager.GetInstance().DisableSound(); refreshBGMAndSoundView(); break; case "LoadRecordListBtn": Messenger.Broadcast(NotifyTypes.GetRecordListData); break; case "BackToMainMenuBtn": Messenger.Broadcast(NotifyTypes.ShowMainPanel); break; default: break; } }
/// <summary> /// 替换兵器(不允许侠客不拿兵器) /// </summary> /// <param name="id">Identifier.</param> /// <param name="beUsingByRoleId">Be using by role identifier.</param> public void ReplaceWeapon(int id, string beUsingByRoleId) { db = OpenDb(); //查询角色信息 SqliteDataReader sqReader = db.ExecuteQuery("select RoleId, RoleData from RolesTable where RoleId = '" + beUsingByRoleId + "' and BelongToRoleId = '" + 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); sqReader = db.ExecuteQuery("select * from WeaponsTable where BeUsingByRoleId = '" + beUsingByRoleId + "' and BelongToRoleId ='" + currentRoleId + "'"); while (sqReader.Read()) { //将兵器先卸下 int dataId = sqReader.GetInt32(sqReader.GetOrdinal("Id")); db.ExecuteQuery("update WeaponsTable set BeUsingByRoleId = '' where Id = " + dataId); } sqReader = db.ExecuteQuery("select Id, WeaponId from WeaponsTable where Id = " + id); if (sqReader.Read()) { string weaponId = sqReader.GetString(sqReader.GetOrdinal("WeaponId")); WeaponData weapon = JsonManager.GetInstance().GetMapping <WeaponData>("Weapons", weaponId); if (weapon.BelongToRoleId == "") { if (weapon.Occupation == OccupationType.None || weapon.Occupation == HostData.Occupation) { //装备新兵器 db.ExecuteQuery("update WeaponsTable set BeUsingByRoleId = '" + beUsingByRoleId + "' where Id = " + id); //更新角色的武器信息 role.ResourceWeaponDataId = weaponId; //查询下新武器替换上后秘籍需不需要卸下 sqReader = db.ExecuteQuery("select Id, BookId from BooksTable where BeUsingByRoleId = '" + currentRoleId + "' and BelongToRoleId = '" + currentRoleId + "'"); BookData book; string unuseBookMsg = ""; while (sqReader.Read()) { book = JsonManager.GetInstance().GetMapping <BookData>("Books", sqReader.GetString(sqReader.GetOrdinal("BookId"))); if (book.LimitWeaponType != WeaponType.None && (book.LimitWeaponType != weapon.Type)) { db.ExecuteQuery("update BooksTable set SeatNo = 888, BeUsingByRoleId = '' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); int index = role.ResourceBookDataIds.FindIndex(item => item == book.Id); if (index >= 0) { //更新角色的秘籍信息 role.ResourceBookDataIds.RemoveAt(index); } unuseBookMsg += " " + book.Name; } } //更新主角关联数据 db.ExecuteQuery("update RolesTable set RoleData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(role)) + "' where RoleId = '" + beUsingByRoleId + "'"); if (unuseBookMsg != "") { Statics.CreatePopMsg(Vector3.zero, string.Format("拿上<color=\"{0}\">{1}</color>后不可能再习练{2}", Statics.GetQualityColorString(weapon.Quality), weapon.Name, unuseBookMsg), Color.white, 30); } SoundManager.GetInstance().PushSound("ui0011"); } else { AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>只有 {2} 才能使用!", Statics.GetQualityColorString(weapon.Quality), weapon.Name, Statics.GetOccupationDesc(weapon.Occupation))); } } else { AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>只有 {2} 才能使用!", Statics.GetQualityColorString(weapon.Quality), weapon.Name, JsonManager.GetInstance().GetMapping <RoleData>("RoleDatas", weapon.BelongToRoleId).Name)); } } } db.CloseSqlConnection(); GetWeaponsListPanelData(); //刷新兵器匣列表 CallRoleInfoPanelData(false); //刷新队伍数据 }
/// <summary> /// 播放背景音乐 /// </summary> public void PlayBgm() { SoundManager.GetInstance().PlayBGM(sceneData.BgmSoundId); }
/// <summary> /// 直接用工坊资源结交侠客 /// </summary> /// <param name="id">Identifier.</param> public void InviteRoleWithResources(int id) { ModifyResources(); 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) { //兵器匣里并没有需要的兵器 WeaponData weapon = JsonManager.GetInstance().GetMapping <WeaponData>("Weapons", role.ResourceWeaponDataId); 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; } } sqReader = db.ExecuteQuery("select Id, ResourcesData from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'"); List <ResourceData> resources = null; int resourceId = 0; if (sqReader.Read()) { resourceId = 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) { db = OpenDb(); db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "' where Id = " + resourceId); //结交侠客 db.ExecuteQuery("update RolesTable set State = " + ((int)RoleStateType.OutTeam) + ", SeatNo = 888 where Id = " + id); invited = true; db.CloseSqlConnection(); } else { AlertCtrl.Show(msg, 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); SoundManager.GetInstance().PushSound("ui0010"); } }
/// <summary> /// 兵器强化 /// </summary> /// <param name="weapon">Weapon.</param> public void WeaponLVUpgrade(WeaponData weapon) { db = OpenDb(); List <ResourceData> needs = new List <ResourceData>(); ResourceData need; ResourceData find; double needRate = DbManager.Instance.GetWeaponNeedRate(weapon.LV + 1); 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 * needRate)); } else { find.Num += (need.Num * needRate); } } 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) { db = OpenDb(); sqReader = db.ExecuteQuery("select Id, Data from WeaponLVsTable where WeaponId = '" + weapon.Id + "' and BelongToRoleId = '" + currentRoleId + "'"); WeaponLVData lvData; if (sqReader.Read()) { //获取角色数据 lvData = JsonManager.GetInstance().DeserializeObject <WeaponLVData>(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("Data")))); if (weapon.LV >= lvData.MaxLV) { AlertCtrl.Show("兵器强化度已满"); db.CloseSqlConnection(); return; } lvData.LV = weapon.LV + 1; db.ExecuteQuery("update WeaponLVsTable set Data = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(lvData)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } else { lvData = new WeaponLVData(weapon.LV + 1); db.ExecuteQuery("insert into WeaponLVsTable (WeaponId, Data, BelongToRoleId) values('" + weapon.Id + "', '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(lvData)) + "', '" + currentRoleId + "')"); } 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"); Messenger.Broadcast <WeaponLVData>(NotifyTypes.WeaponLVUpgradeEcho, lvData); } else { AlertCtrl.Show(msg, null); } } }
void Update() { if (paused) { return; } switch (state) { case ready: if (Time.fixedTime - readyDate > 1) { state = fight; } break; case fight: if (BattleLogic.Instance.CurrentEnemyRole != null && BattleLogic.Instance.CurrentEnemyRole.GetCurrentBook() != null) { enemyCDProgress.fillAmount = BattleLogic.Instance.CurrentEnemyRole.GetCurrentBook().GetCurrentSkill().GetCDProgress(BattleLogic.Instance.Frame); } BattleLogic.Instance.Action(); BattleProcess process = BattleLogic.Instance.PopProcess(); if (process != null) { dealBattleProcess(process); } if (BattleLogic.Instance.GetProcessCount() == 0) { if (BattleLogic.Instance.IsFail()) //判负 { state = fail; break; } if (BattleLogic.Instance.IsWin()) //判胜 { state = win; break; } } break; case delayDoing: if (Time.fixedTime - delayDate > delayTimeout) { state = fight; } break; case win: state = waiting; isWin = true; alphaGroup.gameObject.SetActive(true); winSprite.gameObject.SetActive(true); alphaGroup.DOFade(1, 1).SetDelay(1).OnComplete(endSend); SoundManager.GetInstance().StopBGM(); refreshTeamBlood(); refreshEnemyBlood(); break; case fail: state = waiting; isWin = false; alphaGroup.gameObject.SetActive(true); failSprite.gameObject.SetActive(true); alphaGroup.DOFade(1, 1).SetDelay(1).OnComplete(endSend); SoundManager.GetInstance().StopBGM(); refreshTeamBlood(); refreshEnemyBlood(); break; case waiting: break; } }
/// <summary> /// Battles the notify init. /// </summary> public static void BattleNotifyInit() { Messenger.AddListener <string>(NotifyTypes.CreateBattle, (fightId) => { if (BattleFightPanelCtrl.Ctrl != null) { Statics.CreatePopMsg(Vector3.zero, "已在战斗中", Color.white, 30); return; } //获取队伍角色列表 // RoleData currentRoleData = RoleInfoPanelCtrl.GetCurrentRoleData(); RoleData currentRoleData = DbManager.Instance.GetHostRoleData(); if (currentRoleData == null) { return; } currentRoleData.MakeJsonToModel(); if (currentRoleData.Injury == InjuryType.Moribund) { AlertCtrl.Show("你已奄奄一息无法再战!", () => { Messenger.Broadcast(NotifyTypes.BackToCity); }); 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 // }; // List<RoleData> teams = RoleInfoPanelCtrl.GetRoleDatas(); List <RoleData> teams = DbManager.Instance.GetRolesInTeam(); List <List <SecretData> > secrets = new List <List <SecretData> >(); for (int i = 0, len = teams.Count; i < len; i++) { if (teams[i].IsHost) { WeaponLVData weaponLvData = DbManager.Instance.GetWeaponLV(teams[i].ResourceWeaponDataId); teams[i].CurrentWeaponLV = weaponLvData.LV; } teams[i].MakeJsonToModel(); secrets.Add(DbManager.Instance.GetSecretsBelongBooks(teams[i].ResourceBookDataIds)); } FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); fightData.MakeJsonToModel(); Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); SoundManager.GetInstance().PauseBGM(); SoundManager.GetInstance().PushSound("ui0003"); Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => { // BattleMainPanelCtrl.Show(currentRoleData, fightData); List <ItemData> drugs = new List <ItemData>(); // drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100001")); // drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100002")); // drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100003")); List <ItemData> allVulnerary = DbManager.Instance.GetItems(ItemType.Drug); for (int i = 0; i < 3; i++) { if (allVulnerary.Count > i) { drugs.Add(allVulnerary[i]); } else { break; } } //处理通天塔量子强度影响的敌人成长率 if (UserModel.CurrentUserData.CurrentAreaSceneName == "Area31") { int difficulty = PlayerPrefs.GetInt("TowerDifficulty"); float growUp; switch (difficulty) { case 0: default: growUp = 1; break; case 1: growUp = 2; break; case 2: growUp = 4; break; } for (int i = 0, len = fightData.Enemys.Count; i < len; i++) { fightData.Enemys[i].SetGrowUp(growUp); } } BattleFightPanelCtrl.Show(fightData, teams, secrets, fightData.Enemys, drugs, DbManager.Instance.GetProp(PropType.LimePowder)); PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, fightId); }, () => { // Messenger.Broadcast<bool>(NotifyTypes.CallRoleInfoPanelData, true); }); }); Messenger.AddListener <List <RoleData>, string>(NotifyTypes.CreateTestBattle, (roles, fightId) => { // List<List<SecretData>> secrets = new List<List<SecretData>>(); // for (int i = 0, len = roles.Count; i < len; i++) { // secrets.Add(DbManager.Instance.GetSecretsBelongBooks(roles[i].ResourceBookDataIds)); // } TextAsset asset = Resources.Load <TextAsset>("Data/Json/TestSecrets"); List <List <SecretData> > secrets = PlayerPrefs.GetString("FightEditorUseSecret") == "true" ? JsonManager.GetInstance().DeserializeObject <List <List <SecretData> > >(asset.text) : new List <List <SecretData> >(); FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); fightData.MakeJsonToModel(); // BattleMainPanelCtrl.Show(currentRoleData, fightData); List <ItemData> drugs = new List <ItemData>(); drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100001")); drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100002")); drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100003")); for (int i = 0, len = fightData.Enemys.Count; i < len; i++) { fightData.Enemys[i].SetGrowUp(PlayerPrefs.GetFloat("FightEditorTestGroupUp")); } BattleFightPanelCtrl.Show(fightData, roles, secrets, fightData.Enemys, drugs, DbManager.Instance.GetProp(PropType.LimePowder)); }); Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, (win, drops, fightData) => { if (!win) { MaiHandler.SendEvent("FightFail", DbManager.Instance.HostData.Lv.ToString(), fightData.Id); } // Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => { //如果普通战斗失败则回之前到过的城镇去疗伤 if (fightData.Type == FightType.Normal && !win) { AlertCtrl.Show("江湖凶险, 稍事休息后再出发!", () => { Messenger.Broadcast(NotifyTypes.BackToCity); PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, ""); }); } else { PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, ""); } // BattleMainPanelCtrl.Hide(); BattleFightPanelCtrl.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, List <BookData> >(NotifyTypes.SendFightResult, (data, books) => { DbManager.Instance.SendFightResult((bool)data[0], data[1].ToString(), (int)data[2], (int)data[5], books, (float)data[6]); 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> /// <param name="id">Identifier.</param> public void ReadBook(int id) { bool read = false; BookData book = null; db = OpenDb(); SqliteDataReader sqReader = db.ExecuteQuery("select BookId from BooksTable where Id = " + id); if (sqReader.Read()) { book = JsonManager.GetInstance().GetMapping <BookData>("Books", sqReader.GetString(sqReader.GetOrdinal("BookId"))); if (book.Occupation == OccupationType.None || book.Occupation == HostData.Occupation) { bool enough = true; string msg = ""; CostData cost; ItemData item; //计算需要的物品是否足够 for (int i = 0; i < book.Needs.Count; i++) { cost = book.Needs[i]; item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", cost.Id); sqReader = db.ExecuteQuery("select Num from BagTable where ItemId = '" + cost.Id + "' and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { if (sqReader.GetInt32(sqReader.GetOrdinal("Num")) < cost.Num) { enough = false; msg = string.Format("行囊里的{0}不够", item.Name); break; } } else { enough = false; msg = string.Format("行囊里并不曾见过有{0}", item.Name); break; } } if (enough) { int num; //扣除物品 for (int i = 0; i < book.Needs.Count; i++) { cost = book.Needs[i]; sqReader = db.ExecuteQuery("select Id, Num from BagTable where ItemId = '" + cost.Id + "' and BelongToRoleId = '" + currentRoleId + "'"); if (sqReader.Read()) { num = sqReader.GetInt32(sqReader.GetOrdinal("Num")) - cost.Num; num = num < 0 ? 0 : num; if (num > 0) { db.ExecuteQuery("update BagTable set Num = " + num + " where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } else { db.ExecuteQuery("delete from BagTable where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id"))); } } } //研读秘籍 db.ExecuteQuery("update BooksTable set State = " + ((int)BookStateType.Read) + ", SeatNo = 888 where Id = " + id); read = true; } else { AlertCtrl.Show(msg, null); } } else { AlertCtrl.Show(string.Format("非{0}弟子不得研习<color=\"{1}\">{2}</color>!", Statics.GetOccupationName(book.Occupation), Statics.GetQualityColorString(book.Quality), book.Name)); } } db.CloseSqlConnection(); if (read && book != null) { Statics.CreatePopMsg(Vector3.zero, string.Format("研读<color=\"{0}\">{1}</color>后使你武功精进!", Statics.GetQualityColorString(book.Quality), book.Name), Color.white, 30); GetBooksOfForbiddenAreaPanelData(book.BelongToCityId); PlayerPrefs.SetString("AddedNewBookFlag", "true"); Messenger.Broadcast(NotifyTypes.MakeRoleInfoPanelRedPointRefresh); SoundManager.GetInstance().PushSound("ui0010"); } }
/// <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(); }); }
void onClick(GameObject e) { if (!e.GetComponent <Button>().enabled) { return; } switch (e.name) { case "Block": case "CloseBtn": Back(); break; case "BGMOpenBtn": SoundManager.GetInstance().EnableBGM(); // Messenger.Broadcast(NotifyTypes.PlayBgm); refreshBGMAndSoundView(); break; case "BGMCloseBtn": SoundManager.GetInstance().DisableBGM(); refreshBGMAndSoundView(); break; case "SoundOpenBtn": SoundManager.GetInstance().EnableSound(); refreshBGMAndSoundView(); break; case "SoundCloseBtn": SoundManager.GetInstance().DisableSound(); refreshBGMAndSoundView(); break; case "LoadRecordListBtn": Messenger.Broadcast(NotifyTypes.GetRecordListData); break; case "BackToMainMenuBtn": Messenger.Broadcast(NotifyTypes.ShowMainPanel); break; case "CameraBtn": MaiHandler.ShowInterstitial(); MaiHandler.SendEvent("StartInterstitialForHelp", DbManager.Instance.HostData.Lv.ToString()); break; case "HelpBtn": HelpPanelCtrl.Show(); break; case "PraiseBtn": const string APP_ID = "1274001919"; var url = string.Format( "https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id={0}&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8", APP_ID); Application.OpenURL(url); break; case "raidersBtn": Application.OpenURL("http://mywuxia.lofter.com"); break; default: break; } }
/// <summary> /// Scenes the notify init. /// </summary> public static void SceneNotifyInit() { Messenger.AddListener <string>(NotifyTypes.GoToScene, (sceneName) => { SceneManagerController.GetInstance().ChangeScene(sceneName); }); Messenger.AddListener <string>(NotifyTypes.DealSceneEvent, (eventId) => { // EventData eventData = JsonManager.GetInstance().GetMapping<EventData>("AreaEventDatas", eventId); EventData eventData = null; if (AreaMain.StaticAreaEventsMapping.ContainsKey(eventId)) { //判断静态事件是否禁用 if (!AreaMain.DisableEventIdMapping.ContainsKey(eventId)) { eventData = AreaMain.StaticAreaEventsMapping[eventId]; } } else if (AreaMain.ActiveAreaEventsMapping.ContainsKey(eventId)) { eventData = AreaMain.ActiveAreaEventsMapping[eventId]; } if (eventData != null) { string[] fen; switch (eventData.Type) { case SceneEventType.EnterArea: fen = eventData.EventId.Split(new char[] { '_' }); if (fen.Length >= 3) { string areaName = fen[0]; int x = int.Parse(fen[1]); int y = int.Parse(fen[2]); Messenger.Broadcast <string, Vector2, System.Action <UserData> >(NotifyTypes.UpdateUserDataAreaInfo, areaName, new Vector2(x, y), (userData) => { Messenger.Broadcast <string>(NotifyTypes.GoToScene, userData.CurrentAreaSceneName); //清空临时事件 Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, new List <SceneEventType>() { SceneEventType.DisablePagoda }); }); } break; case SceneEventType.Battle: case SceneEventType.Pagoda: Messenger.Broadcast <string>(NotifyTypes.CreateBattle, eventData.EventId); break; case SceneEventType.EnterCity: Messenger.Broadcast <string>(NotifyTypes.UpdateUserDataCityInfo, eventData.EventId); Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, (userData) => { // Messenger.Broadcast<string>(NotifyTypes.EnterCityScene, userData.CurrentCitySceneId); Messenger.Broadcast <string>(NotifyTypes.EnterCityScene, eventData.EventId); }); break; case SceneEventType.Task: Messenger.Broadcast <string>(NotifyTypes.GetTaslDetailInfoData, eventData.EventId); break; case SceneEventType.EatFood: Messenger.Broadcast <int>(NotifyTypes.EatFood, eventData.IntValue); fen = eventData.Id.Split(new char[] { '_' }); if (fen.Length >= 3) { string areaName = fen[0]; int x = int.Parse(fen[1]); int y = int.Parse(fen[2]); //处理静态事件的预禁用操作 EventData disableEvent = new EventData(); disableEvent.Id = eventData.Id; disableEvent.Type = SceneEventType.DisableEvent; disableEvent.X = x; disableEvent.Y = y; Messenger.Broadcast <string, EventData>(NotifyTypes.PushDisableEvent, disableEvent.Id, disableEvent); } break; case SceneEventType.Dialog: switch (eventData.EventId) { case "dialog0001": Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel); break; default: break; } break; case SceneEventType.Store: DbManager.Instance.GetStoreData(eventData.EventId); break; default: break; } } }); Messenger.AddListener(NotifyTypes.FromCitySceneBackToArea, () => { if (UserModel.CurrentUserData != null) { Messenger.Broadcast <string, Vector2, System.Action <UserData> >(NotifyTypes.UpdateUserDataAreaInfo, UserModel.CurrentUserData.CurrentAreaSceneName, new Vector2(UserModel.CurrentUserData.CurrentAreaX, UserModel.CurrentUserData.CurrentAreaY), (userData) => { UserModel.CurrentFoodNums = userData.AreaFood.MaxNum; UserModel.CurrentRebornTimes = 0; //播放大地图背景音乐 Messenger.Broadcast(NotifyTypes.PlayBgm); } ); } //清空临时事件 Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, new List <SceneEventType>() { SceneEventType.DisablePagoda }); }); Messenger.AddListener <string>(NotifyTypes.EnterCityScene, (cityId) => { DbManager.Instance.CheckEnterCity(cityId); DbManager.Instance.GetCitySceneMenuData(cityId); Messenger.Broadcast(NotifyTypes.GetTasksInCityScene); Messenger.Broadcast(NotifyTypes.MakeTaskListHide); }); Messenger.AddListener(NotifyTypes.GetTasksInCityScene, () => { CityScenePanelCtrl.GetTasksInCityScene(); }); Messenger.AddListener(NotifyTypes.HideCityScenePanel, () => { CityScenePanelCtrl.MakeFadeOut(); }); Messenger.AddListener <string>(NotifyTypes.GetStorePanelData, (cityId) => { DbManager.Instance.GetStorePanelData(cityId); }); Messenger.AddListener <List <ItemData>, double>(NotifyTypes.GetStorePanelDataEcho, (items, silver) => { StorePanelCtrl.Show(items, silver); }); Messenger.AddListener <string>(NotifyTypes.BuyItem, (itemId) => { DbManager.Instance.BuyItem(itemId); }); Messenger.AddListener <string, double>(NotifyTypes.BuyItemEcho, (msg, silver) => { StorePanelCtrl.MakeBuyItemEcho(msg, silver); SoundManager.GetInstance().PushSound("ui0006"); }); Messenger.AddListener(NotifyTypes.MakeCheckNewFlags, () => { CityScenePanelCtrl.MakeCheckNewFlags(); }); }
/// <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: if (UserModel.CurrentUserData.PositionStatu == UserPositionStatusType.InArea) { Eat(id, num); SoundManager.GetInstance().PushSound("ui0004"); } else { AlertCtrl.Show("野外闯荡江湖时才能吃干粮"); } 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(); SoundManager.GetInstance().PushSound("ui0004"); } 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(); SoundManager.GetInstance().PushSound("ui0004"); } else { AlertCtrl.Show(string.Format("你已经习得<color=\"{0}\">{1}</color>, 无需再研读", Statics.GetQualityColorString(book.Quality), book.Name)); } break; case ItemType.RandomSecre: //打开随机诀要锦囊 item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId); db = OpenDb(); sqReader = db.ExecuteQuery("select count(*) as num from BookSecretsTable where BelongToRoleId = '" + currentRoleId + "'"); bool isSecretsFull = false; if (sqReader.Read()) { isSecretsFull = sqReader.GetInt32(sqReader.GetOrdinal("num")) >= MaxSecretNumOfBag; } if (!isSecretsFull) { //添加新的诀要 SecretData secret = Statics.CreateNewSecret(Statics.GetRandomSecretType(item.StringValue), QualityType.White); db.ExecuteQuery("insert into BookSecretsTable (SecretData, T, Q, BelongToBookId, BelongToRoleId) values('" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(secret)) + "', " + ((short)secret.Type) + ", " + ((short)secret.Quality) + ", '', '" + currentRoleId + "')"); PlayerPrefs.SetString("AddedNewBookFlag", "true"); PlayerPrefs.SetString("AddedNewSecretFlag", "true"); Messenger.Broadcast(NotifyTypes.MakeRoleInfoPanelRedPointRefresh); Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(secret.Quality), secret.Name), Color.white, 30); db.ExecuteQuery("delete from BagTable where Id = " + id); db.CloseSqlConnection(); //重新加载背包数据 GetBagPanelData(); SoundManager.GetInstance().PushSound("ui0004"); } else { AlertCtrl.Show(string.Format("诀要背包上限为{0},请先清理背包", MaxSecretNumOfBag)); } break; default: AlertCtrl.Show("该物品不可使用!"); break; } } }
/// <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); } } }
/// <summary> /// 装备秘籍 /// </summary> /// <param name="id">Identifier.</param> public void UseBook(int id) { //查询主角当前的兵器类型 WeaponType hostWeaponType = GetHostWeaponType(); db = OpenDb(); //查询角色信息 SqliteDataReader sqReader = db.ExecuteQuery("select RoleId, RoleData from RolesTable where RoleId = '" + currentRoleId + "' and BelongToRoleId = '" + currentRoleId + "'"); int addIndex = -1; if (sqReader.Read()) { string roleId = sqReader.GetString(sqReader.GetOrdinal("RoleId")); //获取角色数据 string roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData")); roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr); RoleData role = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr); sqReader = db.ExecuteQuery("select BookId, SeatNo from BooksTable where SeatNo >= 0 and State = " + ((int)BookStateType.Read) + " and BelongToRoleId = '" + currentRoleId + "'"); List <string> resourceBookDataIds = new List <string>(); List <int> seatNos = new List <int>() { -1, -1, -1 }; int seatNo; while (sqReader.Read()) { seatNo = sqReader.GetInt32(sqReader.GetOrdinal("SeatNo")); if (seatNos.Count > seatNo) { seatNos[seatNo] = seatNo; resourceBookDataIds.Add(sqReader.GetString(sqReader.GetOrdinal("BookId"))); } } addIndex = seatNos.FindIndex(item => item == -1); if (addIndex >= 0) { sqReader = db.ExecuteQuery("select BookId from BooksTable where Id = " + id); if (sqReader.Read()) { string bookId = sqReader.GetString(sqReader.GetOrdinal("BookId")); BookData bookData = JsonManager.GetInstance().GetMapping <BookData>("Books", bookId); if (bookData.LimitWeaponType == WeaponType.None || hostWeaponType == WeaponType.None || bookData.LimitWeaponType == hostWeaponType) { resourceBookDataIds.Add(bookId); db.ExecuteQuery("update BooksTable set SeatNo = " + addIndex + ", BeUsingByRoleId = '" + currentRoleId + "' where Id = " + id); //更新角色的秘籍信息 role.ResourceBookDataIds = resourceBookDataIds; db.ExecuteQuery("update RolesTable set RoleData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(role)) + "' where RoleId = '" + roleId + "'"); SoundManager.GetInstance().PushSound("ui0011"); } else { AlertCtrl.Show(string.Format("装备上[{0}]才能习练\n<color=\"{1}\">{2}</color>\n{3}", Statics.GetEnmuDesc <WeaponType>(bookData.LimitWeaponType), Statics.GetQualityColorString(bookData.Quality), bookData.Name, hostWeaponType != WeaponType.None ? ("你现在拿的是[" + Statics.GetEnmuDesc <WeaponType>(hostWeaponType) + "]") : "你现在手里没有任何兵器"), null); } } } } db.CloseSqlConnection(); if (addIndex >= 0) { GetBooksListPanelData(); CallRoleInfoPanelData(false); //刷新队伍数据 } else { AlertCtrl.Show("最多只能同时携带三本书!", null); } }