Наследование: MonoBehaviour
Пример #1
0
    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);
    }
Пример #2
0
    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);
            }
        }
    }
Пример #3
0
    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();
                    }
                }
            }
        }
    }
Пример #4
0
        /// <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]);
            }
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        // 退出状态
        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");
        }
Пример #8
0
    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);
        });
    }
Пример #9
0
 //싱글 톤 생성
 void Start()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Пример #10
0
    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();
    }
Пример #11
0
    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);
    }
Пример #12
0
    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);
    }
Пример #13
0
    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();
            }
        }
    }
Пример #14
0
    // 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]);
    }
Пример #15
0
    public void InitItem(SkillDatabase db)
    {
        m_dataBase = db;


        ResetState();
    }
Пример #16
0
    //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 );
            }
        }
    }
Пример #17
0
    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);
    }
Пример #18
0
 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");
 }
Пример #19
0
 void AddUnLockSkill(SkillDatabase skillid)
 {
     if (!unLockSkillList.Contains(skillid))
     {
         unLockSkillList.Add(skillid);
     }
 }
Пример #20
0
 void AddLockSkill(SkillDatabase skillid)
 {
     if (!lockSkillList.Contains(skillid))
     {
         lockSkillList.Add(skillid);
     }
 }
Пример #21
0
    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);
    }
Пример #22
0
    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
    }
Пример #23
0
        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);
        }
Пример #24
0
    /// <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
    }
Пример #25
0
    /// <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();
        }
    }
Пример #26
0
    /// <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);
    }
Пример #27
0
 private void MagicSkillLearned(IMagicUser sender, int skillId)
 {
     if (skillId > -1)
     {
         BaseSkill skill = SkillDatabase.GetMagicSkillById(skillId);
         AddSkillPanel(skill);
     }
 }
Пример #28
0
 public void Init(Creature caster, SkillDatabase tabledata)
 {
     _caster   = caster;
     tablebase = tabledata;
     InitTimeLine();
     _skillCD       = new SkillCD();
     _skillCD.maxCD = tablebase.CD;
 }
Пример #29
0
 public DamageTracker(EntityTracker entityRegistry, PlayerTracker playerTracker, SkillDatabase skillDatabase)
 {
     _entityTracker = entityRegistry;
     _skillDatabase = skillDatabase;
     _playerTracker = playerTracker;
     TotalDealt     = new SkillStats();
     TotalReceived  = new SkillStats();
 }
Пример #30
0
 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)));
 }
Пример #31
0
 protected void Awake()
 {
     if (_skillDatabase == null)
     {
         DontDestroyOnLoad(gameObject);
         _skillDatabase = this;
     }
     else if(_skillDatabase != null)
     {
         Destroy(gameObject);
     }
 }