public static SkillDatabase InitSetting() { string path = Application.persistentDataPath + "/Xml/Skill.Xml"; if (!System.IO.File.Exists(path)) { string folderPath; folderPath = Application.persistentDataPath + "/Xml"; DirectoryInfo di = new DirectoryInfo(folderPath); if (di.Exists == false) { di.Create(); } TextAsset _xml = Resources.Load <TextAsset>("XmlData/Skill"); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(_xml.text); if (_xml != null) { XmlSerializer serializer = new XmlSerializer(typeof(SkillDatabase)); var reader = new StringReader(_xml.text); SkillDatabase skillDB = serializer.Deserialize(reader) as SkillDatabase; reader.Close(); CreateXml(skillDB.skills[0], path); Debugging.Log("SkillDatabase 최초 생성 성공"); return(skillDB); } } Debugging.Log("SkillDatabase 최초 생성 실패"); return(null); }
public void SetIcon(SkillDatabase db) { SkillData = db; string iconName = string.Empty; if (db != null) { iconName = db.iconPath; } Transform iconTrans = transform.Find("skillIcon"); if (iconTrans == null) { iconTrans = transform.Find("icon"); } if (iconTrans != null) { iconTrans.gameObject.SetActive(true); UITexture spr = iconTrans.GetComponent <UITexture>(); if (spr != null) { UIManager.GetTextureAsyn(iconName, ref m_curIconAsynSeed, () => { if (null != spr) { spr.mainTexture = null; } }, spr, false); } } }
void ExecutePublicCD(uint skillID) { SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>(skillID, 1); if (db != null) { uint group = db.dwCommonCDGroup; if (group == 0) { return; } for (int i = 0; i < m_lstSkillBtns.Count; i++) //foreach (var usebtn in m_lstSkillBtns) { var usebtn = m_lstSkillBtns[i]; if (usebtn.SkillId != 0) { SkillDatabase gdb = GameTableManager.Instance.GetTableItem <SkillDatabase>(usebtn.SkillId, 1); if (gdb != null && gdb.dwCommonCDGroup == group) { usebtn.ShowPublicCd(); } } } } }
/// <summary> /// 通过[编号]二分快速查表 /// </summary> /// <param name="wdID">编号</param> /// <returns></returns> public static IEnumerable <SkillDatabase> Query(this List <SkillDatabase> sorted, ushort wdID) { var key = new SkillDatabase() { wdID = wdID }; var comparer = new Comparer1(); var from = sorted.BinarySearch(key, comparer); if (from < 0) { yield break; } var to = from + 1; while (from > 0 && comparer.Compare(key, sorted[from - 1]) == 0) { from--; } while (to < sorted.Count && comparer.Compare(key, sorted[to]) == 0) { to++; } for (var i = from; i < to; i++) { yield return(sorted[i]); } }
public SkillResult(EachSkillResultServerMessage message, EntityTracker entityRegistry, PlayerTracker playerTracker, SkillDatabase skillDatabase) { Time = message.Time; Amount = message.Amount; IsCritical = message.IsCritical; IsHeal = message.IsHeal; SkillId = message.SkillId; Source = entityRegistry.GetOrPlaceholder(message.Source); Target = entityRegistry.GetOrPlaceholder(message.Target); var userNpc = UserEntity.ForEntity(Source); var npc = (NpcEntity)userNpc["source"]; var sourceUser = userNpc["root_source"] as UserEntity; // Attribute damage dealt by owned entities to the owner var targetUser = Target as UserEntity; // But don't attribute damage received by owned entities to the owner if (sourceUser != null) { Skill = skillDatabase.Get(sourceUser, message); if (Skill == null && npc != null) { Skill = new UserSkill(message.SkillId, sourceUser.RaceGenderClass, npc.Info.Name); } SourcePlayer = playerTracker.Get(sourceUser.PlayerId); if (Skill == null) { Skill = new UserSkill(message.SkillId, sourceUser.RaceGenderClass, "Unknown"); } } if (targetUser != null) { TargetPlayer = playerTracker.Get(targetUser.PlayerId); } }
/// <summary> /// Triggers the use of the Skill</summary> /// <param name=skillId>The Skill to use</param> public void UseCombatSkill(int skillId) { var combatSkill = SkillDatabase.GetCombatSkillById(skillId); combatSkill.Use(this); EmitOnCombatSkillUsed(skillId); }
// 退出状态 public override void Leave() { Engine.Utility.EventEngine.Instance().RemoveEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent); Engine.Utility.EventEngine.Instance().RemoveEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYBEGINMOVE, OnEvent); if (IsMainPlayer()) { Engine.Utility.EventEngine.Instance().RemoveEventListener((int)Client.GameEventID.SKLL_LONGPRESS, OnEvent); } PlayerSkillPart playerSkill = skillPart as PlayerSkillPart; if (skillPart.GetSkillPartType() == SkillPartType.SKILL_PLAYERPART) { SkillDatabase database = playerSkill.GetCurSkillDataBase(); if (database == null) { return; } if (database.dwUseMethod == (int)UseMethod.ContinueLock) { playerSkill.Master.SendMessage(EntityMessage.EntityCommand_SetVisible, true); } } // playerSkill.SkillStiffTime = 0; //if (SkillSystem.GetClientGlobal().IsMainPlayer(playerSkill.GetMaster())) //{ // Log.Trace("Leave ..." + this.GetType().Name); //} //Log.Trace("skill attack state leave"); }
void ShowTips(SkillDatabase db, Transform item, Vector2 offset) { LongPress lp = item.GetComponent <LongPress>(); if (lp == null) { lp = item.gameObject.AddComponent <LongPress>(); } lp.InitLongPress(() => { DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.PlayerSkillTipsPanel, panelShowAction: (pb) => { if (null != pb && pb is PlayerSkillTipsPanel) { PlayerSkillTipsPanel panel = pb as PlayerSkillTipsPanel; if (panel != null) { panel.InitParentTransform(item, offset); panel.ShowUI(PlayerSkillTipsPanel.SkillTipsType.Pet, db); } } }); }, () => { DataManager.Manager <UIPanelManager>().HidePanel(PanelID.PlayerSkillTipsPanel); }); }
//싱글 톤 생성 void Start() { if (instance == null) { instance = this; } }
private void OnEnable() { // Reload skills database SkillDatabase.LoadSkills(); skillNames = SkillDatabase.FindSkills(string.Empty); PlayerSkills playerSkills = target as PlayerSkills; List <string> invalidSkillNames = new List <string>(); if (playerSkills.skillNames == null) { playerSkills.skillNames = new string[0]; } foreach (string skillName in playerSkills.skillNames) { if (skillNames.Contains(skillName)) { skillNames.Remove(skillName); } else { invalidSkillNames.Add(skillName); } } List <string> newSkillNames = new List <string>(); newSkillNames.AddRange(playerSkills.skillNames); foreach (string invalidSkillName in invalidSkillNames) { newSkillNames.Remove(invalidSkillName); } playerSkills.skillNames = newSkillNames.ToArray(); }
bool CheckItem() { SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>((uint)m_skillid, 1); if (db == null) { return(false); } string needstr = db.skillPlayCostItem; string[] itemArray = needstr.Split('_'); if (itemArray.Length > 1) { uint itemID = 0, itemCount = 0; if (uint.TryParse(itemArray[0], out itemID)) { if (uint.TryParse(itemArray[1], out itemCount)) { int count = DataManager.Manager <ItemManager>().GetItemNumByBaseId(itemID); if (count < itemCount) { ItemDataBase idb = GameTableManager.Instance.GetTableItem <ItemDataBase>(itemID); if (idb != null) { TipsManager.Instance.ShowTips(idb.itemName + CommonData.GetLocalString("不足")); } return(false); } } } } return(true); }
public static SkillDatabase LoadUser() { string path = Application.persistentDataPath + "/Xml/Skill.Xml"; if (System.IO.File.Exists(path)) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(System.IO.File.ReadAllText(path)); //복호화//// XmlElement elmRoot = xmlDoc.DocumentElement; var decrpytData = DataSecurityManager.DecryptData(elmRoot.InnerText); elmRoot.InnerXml = decrpytData; ////////// string _xml; using (var stringWriter = new StringWriter()) using (var xmlTextWriter = XmlWriter.Create(stringWriter)) { xmlDoc.WriteTo(xmlTextWriter); xmlTextWriter.Flush(); _xml = stringWriter.GetStringBuilder().ToString(); } if (_xml != null) { XmlSerializer serializer = new XmlSerializer(typeof(SkillDatabase)); var reader = new StringReader(_xml); SkillDatabase skillDB = serializer.Deserialize(reader) as SkillDatabase; reader.Close(); Debugging.Log("SkillDatabase 기존 파일 로드"); return(skillDB); } } Debugging.LogSystemWarning("SkillDatabase wasn't loaded. >> " + path + " is null. >>"); return(null); }
void skilldataManager_ValueUpdateEvent(object sender, ValueUpdateEventArgs e) { if (e != null) { if (e.key == LearnSkillDispatchEvents.SkillLevelUP.ToString()) { SkillInfo newInfo = (SkillInfo)e.newValue; SortedDictionary <uint, LeftSkillItem> .Enumerator itemIter = m_dicLeftItem.GetEnumerator(); while (itemIter.MoveNext()) { if (itemIter.Current.Key == newInfo.skillID) { LeftSkillItem skillItem = itemIter.Current.Value; SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>(newInfo.skillID, (int)newInfo.level); if (db != null) { skillItem.InitItem(db); skillItem.AddEffectInSkillPanel(); } } } //页签红点提示 UpdateRedPoint(); } } }
// Start is called before the first frame update void Start() { instance = this; skillDataFile = new SkillDataFile(); skillDataFile.skillDatas = new List <Skill>(); spritePath = "Images/UI/Spell"; //saveSkillData(); loadSkillData(); //GameManager.instance.playerData.addSkill(skillDB[0]); GameManager.instance.playerData.addSkill(skillDB[0]); GameManager.instance.playerData.addSkill(skillDB[1]); GameManager.instance.playerData.addSkill(skillDB[2]); GameManager.instance.playerData.addSkill(skillDB[3]); GameManager.instance.playerData.addSkill(skillDB[4]); GameManager.instance.playerData.addSkill(skillDB[5]); GameManager.instance.playerData.addSkill(skillDB[6]); GameManager.instance.playerData.addSkill(skillDB[7]); GameManager.instance.playerData.addSkill(skillDB[8]); GameManager.instance.playerData.addSkill(skillDB[9]); GameManager.instance.playerData.addSkill(skillDB[10]); GameManager.instance.playerData.addSkill(skillDB[11]); GameManager.instance.playerData.addSkill(skillDB[12]); GameManager.instance.playerData.addSkill(skillDB[13]); GameManager.instance.playerData.addSkill(skillDB[14]); GameManager.instance.playerData.addSkill(skillDB[15]); }
public void InitItem(SkillDatabase db) { m_dataBase = db; ResetState(); }
//void SetItemLocation(UnityEngine.GameObject go , string parentName) //{ // if ( string.IsNullOrEmpty( parentName ) ) // return; // Transform trans = m_widget_SkillContainer.transform.Find( parentName ); // if ( trans != null ) // { // NGUITools.DestroyChildren( trans ); // if ( go != null ) // { // go.transform.parent = trans; // go.transform.localPosition = Vector3.zero; // go.transform.localScale = Vector3.one; // go.transform.localRotation = Quaternion.identity; // } // } //} void ClearSettingItem() { int count = m_widget_SkillContainer.transform.childCount; for (int i = 0; i < count; i++) { string parentName = "skill_" + i; Transform trans = m_widget_SkillContainer.transform.Find(parentName); if (trans != null) { RightSkillItem item = trans.GetComponent <RightSkillItem>(); if (item == null) { item = trans.gameObject.AddComponent <RightSkillItem>(); } if (i == 0) { uint common = skilldataManager.GetCommonSkillIDByJob(); SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>(common, 1); item.InitItem(db); } else { item.ResetState(); // item.InitItem(null); } if (!m_dicRightItem.ContainsKey(i)) { m_dicRightItem.Add(i, item); } //NGUITools.DestroyChildren( trans ); } } }
List <SkillDatabase> GetStateListByState(int state) { List <SkillDatabase> list = new List <SkillDatabase>(); foreach (var id in unLockSkillList) { if (id.dwSkillSatus == state) { list.Add(id); } } foreach (var id in lockSkillList) { if (id.dwSkillSatus == state) { list.Add(id); } } list.Sort((x1, x2) => { SkillDatabase temp1 = GameTableManager.Instance.GetTableItem <SkillDatabase>(x1.wdID, 1); SkillDatabase temp2 = GameTableManager.Instance.GetTableItem <SkillDatabase>(x2.wdID, 1); if (temp1 != null && temp2 != null) { if (temp1.dwNeedLevel > temp2.dwNeedLevel) { return(1); } else if (temp1.dwNeedLevel < temp2.dwNeedLevel) { return(-1); } else { return(0); } } else { return(0); } }); for (int i = 0; i < list.Count; i++) { SkillDatabase db = list[i]; foreach (var dic in userSkilldic) { if (db.wdID == dic.Key) { SkillInfo info = dic.Value; SkillDatabase data = GameTableManager.Instance.GetTableItem <SkillDatabase>(info.skillID, (int)info.level); list[i] = data; break; } } } return(list); }
public TeraData(string version) { SkillDatabase = new SkillDatabase($"{Directory.GetCurrentDirectory()}\\Resources\\"); NpcDatabase = new NpcDatabase(npcList.ToList()); OpCodeNamer = new OpCodeNamer($"{Directory.GetCurrentDirectory()}\\Resources\\{version}.txt"); SysMessageNamer = new OpCodeNamer($"{Directory.GetCurrentDirectory()}\\Resources\\smt_{version}.txt"); }
void AddUnLockSkill(SkillDatabase skillid) { if (!unLockSkillList.Contains(skillid)) { unLockSkillList.Add(skillid); } }
void AddLockSkill(SkillDatabase skillid) { if (!lockSkillList.Contains(skillid)) { lockSkillList.Add(skillid); } }
public HeartSkillDataBase GetHeartSkillData(uint skillID) { string des = ""; SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>(skillID, 1); bool hasLearn = false; uint heartID = db.heartID; uint heartLevel = 0; if (db != null) { List <GameCmd.HeartSkill> heartList = DataManager.Manager <HeartSkillManager>().OwnedHeartSkillList; for (int i = 0; i < heartList.Count; i++) { HeartSkill hs = heartList[i]; if (hs.skill_id == heartID) { hasLearn = true; heartLevel = hs.level; break; } } } if (hasLearn) { HeartSkillDataBase hdb = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartID, (int)heartLevel); if (hdb != null) { return(hdb); } } return(null); }
void SetSkillItemInfo(GameObject go, SkillDatabase db) { LeftSkillItem item = go.GetComponent <LeftSkillItem>(); if (item == null) { item = go.AddComponent <LeftSkillItem>(); } if (!m_dicLeftItem.ContainsKey(db.wdID)) { m_dicLeftItem.Add(db.wdID, item); } item.InitItem(db); #region drag code //if(go.GetComponent<LearnSkillItem>() == null) //{ // go.AddComponent<LearnSkillItem>().InitItem( db ); //} //else //{ // LearnSkillItem item = go.GetComponent<LearnSkillItem>(); // item.InitItem( db ); //} //if(go.GetComponent<SkillDragDropItem>() == null) //{ // SkillDragDropItem item = go.AddComponent<SkillDragDropItem>(); // item.cloneOnDrag = true; //} #endregion }
public void TestBasicFight() { var attackerCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(2) .Special(0) .Speed(13) .Strength(7) .Build()) .Weapons("Shortsword") .Build(); var defenderCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(2) .Special(0) .Speed(13) .Strength(3) .Build()) .Weapons("Shortsword") .Build(); var attacker = new BaseCombatant(attackerCharacter, ArmyType.Friendly); var defender = new BaseCombatant(defenderCharacter, ArmyType.Friendly); attacker.Position = new Vector2(0, 1); defender.Position = new Vector2(0, 0); var map = new Map(); map.AddCombatant(attacker); map.AddCombatant(defender); var skillDatabase = new SkillDatabase(map); var forecaster = new FightForecaster(map, skillDatabase); var forecast = forecaster.Forecast(attacker, defender, SkillType.Melee); var finalizer = new FightFinalizer(skillDatabase); var final = finalizer.Finalize(forecast, new ConstantRandomizer(100)); var initialPhase = final.InitialPhase; Assert.NotNull(initialPhase); var initialDamage = initialPhase.Effects.GetDefenderDamage(); Assert.AreEqual(5, initialDamage); var counterPhase = final.CounterPhase; Assert.NotNull(counterPhase); var counterDamage = counterPhase.Effects.GetDefenderDamage(); Assert.AreEqual(1, counterDamage); }
/// <summary> /// 设置右边的设置面板 /// </summary> public void SetAllSkillSettingItem() { ClearSettingItem(); SortedDictionary <int, uint> stateDic = skilldataManager.GetSkillSettingState(); if (stateDic != null) { foreach (var dic in stateDic) { int location = dic.Key; uint skillID = dic.Value; if (skillID == 0) { continue; } string name = skilldataManager.GetParentNameByLocation(location); Transform trans = m_widget_SkillContainer.transform.Find(name); if (trans != null) { SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>(skillID, 1); RightSkillItem item = trans.GetComponent <RightSkillItem>(); if (item != null) { item.InitItem(db); } } } } UpdateCurStateLabel(); //ShowAutoAttack(); #region drag code //ClearSettingItem(); //SortedDictionary<int , uint> stateDic = skilldataManager.GetSkillSettingState(); //if ( stateDic != null ) //{ // foreach ( var dic in stateDic ) // { // int location = dic.Key; // uint skillID = dic.Value; // if ( skillID == 0 ) // continue; // string name = skilldataManager.GetParentNameByLocation( location ); // GameObject go = GetSelectPrefab( skillID ); // if ( go != null ) // { // if ( go.GetComponent<SkillDragDropItem>() == null ) // { // SkillDragDropItem item = go.AddComponent<SkillDragDropItem>(); // item.cloneOnDrag = false; // } // } // SetItemLocation( go , name ); // } //} //UpdateCurStateLabel(); //ShowAutoAttack(); #endregion }
/// <summary> /// 设置宠物技能 /// </summary> void SetPetSkill() { LearnSkillDataManager data = DataManager.Manager <LearnSkillDataManager>(); gameObject.SetActive(data.bShowPetSkill); PetDataManager petData = DataManager.Manager <PetDataManager>(); if (petData != null) { IPet pet = petData.GetPetByThisID(petData.CurFightingPet); if (pet != null) { List <PetSkillObj> list = pet.GetPetSkillList(); if (list.Count == 0) { skillIcon.mainTexture = null; SetLongPressEvent(false); ShowAdd(true); return; } for (int i = 0; i < list.Count; i++) { var skill = list[i]; uint skillID = (uint)skill.id; SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>(skillID, skill.lv); if (db != null) { if (db.petType == (int)PetSkillType.Initiative) { m_skillid = skillID; UIManager.GetTextureAsyn(DataManager.Manager <UIManager>().GetResIDByFileName(false, db.iconPath, true), ref iuiIconAtlas, () => { if (null != skillIcon) { skillIcon.mainTexture = null; } }, skillIcon, false); ShowAdd(false); SetLongPressEvent(true); break; } else { SetLongPressEvent(false); ShowAdd(true); skillIcon.mainTexture = null; } } } } } if (data.bShowPetSkill) { RunCD(); } }
/// <summary> /// 判断技能升级是否有足够的钱 /// </summary> /// <returns></returns> public SkillLevelUpCode HaveEnoughMoney() { var iter = userSkilldic.GetEnumerator(); uint skillID = 0; uint minLevel = 1000; uint skillLv = 0; while (iter.MoveNext()) { SkillDatabase temp = GameTableManager.Instance.GetTableItem <SkillDatabase>(iter.Current.Value.skillID, (int)iter.Current.Value.level + 1); if (temp != null) { if (temp.IsBasic) { continue; } if (temp.dwNeedLevel <= minLevel) { minLevel = temp.dwNeedLevel; skillID = iter.Current.Value.skillID; skillLv = iter.Current.Value.level; } } } SkillDatabase sdb = GameTableManager.Instance.GetTableItem <SkillDatabase>(skillID, (int)skillLv); if (sdb == null) { return(SkillLevelUpCode.NoneData); } if (!UserSkilldic.ContainsKey(sdb.wdID)) { return(SkillLevelUpCode.NoSkill); } IPlayer player = Client.ClientGlobal.Instance().MainPlayer; if (player != null) { //需要等级 int playerLv = player.GetProp((int)CreatureProp.Level); uint nextLevel = sdb.wdLevel + 1; SkillDatabase nextDataBase = GameTableManager.Instance.GetTableItem <SkillDatabase>(sdb.wdID, (int)nextLevel); if (nextDataBase != null) { if (playerLv < nextDataBase.dwNeedLevel) { return(SkillLevelUpCode.LevelNotEnough); } //消耗金币 if (player.GetProp((int)Client.PlayerProp.Coupon) < nextDataBase.dwMoney) { return(SkillLevelUpCode.NoMoney); } } } return(SkillLevelUpCode.Ok); }
private void MagicSkillLearned(IMagicUser sender, int skillId) { if (skillId > -1) { BaseSkill skill = SkillDatabase.GetMagicSkillById(skillId); AddSkillPanel(skill); } }
public void Init(Creature caster, SkillDatabase tabledata) { _caster = caster; tablebase = tabledata; InitTimeLine(); _skillCD = new SkillCD(); _skillCD.maxCD = tablebase.CD; }
public DamageTracker(EntityTracker entityRegistry, PlayerTracker playerTracker, SkillDatabase skillDatabase) { _entityTracker = entityRegistry; _skillDatabase = skillDatabase; _playerTracker = playerTracker; TotalDealt = new SkillStats(); TotalReceived = new SkillStats(); }
internal TeraData(BasicTeraData basicData, string region) { Region = basicData.Regions.Single(x => x.Key == region); SkillDatabase = new SkillDatabase(Path.Combine(basicData.ResourceDirectory, "user_skills.txt")); OpCodeNamer = new OpCodeNamer(Path.Combine(basicData.ResourceDirectory, string.Format("opcodes-{0}.txt", Region.Version))); }
protected void Awake() { if (_skillDatabase == null) { DontDestroyOnLoad(gameObject); _skillDatabase = this; } else if(_skillDatabase != null) { Destroy(gameObject); } }