public new void PacketBytesToClass( byte[] data) { Type infotype = this.GetType(); FieldInfo headerinfo = null; int index = ParsePacketHeader( data); // nSkillBookCnt byte[] skillBookCnt = new byte[ sizeof( Int32)]; headerinfo = infotype.GetField( "nSkillBookCnt", BINDING_FLAGS_PIG); Buffer.BlockCopy( data, index, skillBookCnt, 0, sizeof( Int32)); headerinfo.SetValue( this, BitConverter.ToInt32( skillBookCnt, 0)); index += sizeof( Int32); AsUserInfo.Instance.resettedSkills.Clear(); // body body = new body2_SC_SKILLBOOK_LIST[ nSkillBookCnt]; for( int i = 0; i < nSkillBookCnt; i++) { body[i] = new body2_SC_SKILLBOOK_LIST(); byte[] tmpData = new byte[ body2_SC_SKILLBOOK_LIST.size]; Buffer.BlockCopy( data, index, tmpData, 0, tmpData.Length); body[i].ByteArrayToClass( tmpData); index += body2_SC_SKILLBOOK_LIST.size; AsUserInfo.Instance.resettedSkills.Add( body[i].nSkillBookTableIdx, body[i]); } }
public void AddLearnSkill(body_SC_SKILL_LEARN_RESULT _learn) { // eCLASS __class = AsUserInfo.Instance.GetCurrentUserEntity().GetProperty<eCLASS>(eComponentProperty.CLASS); SkillView view = new SkillView(_learn.sSkill.nSkillTableIdx, _learn.sSkill.nSkillLevel); // view.SetSkillBookRecordByClass(__class); Tbl_Skill_Record record = AsTableManager.Instance.GetTbl_Skill_Record(view.nSkillTableIdx); if(record.Skill_Type == eSKILL_TYPE.Base) return; if(m_dicCurSkill.ContainsKey(_learn.sSkill.nSkillTableIdx) == true) { m_dicCurSkill.Remove(_learn.sSkill.nSkillTableIdx); } m_dicCurSkill.Add(_learn.sSkill.nSkillTableIdx, view); SortCurSkill(); if(m_dicNotSetting.ContainsKey(_learn.sSkill.nSkillTableIdx) == true) { m_dicNotSetting.Remove(_learn.sSkill.nSkillTableIdx); } m_dicNotSetting.Add(_learn.sSkill.nSkillTableIdx, view); SortNotSetting(); // add resettedSkills if( AsUserInfo.Instance.resettedSkills.ContainsKey( _learn.nSkillBookIdx ) == false ) { body2_SC_SKILLBOOK_LIST _skillBookList = new body2_SC_SKILLBOOK_LIST(); _skillBookList.nSkillBookTableIdx = _learn.nSkillBookIdx; AsUserInfo.Instance.resettedSkills.Add( _learn.nSkillBookIdx , _skillBookList); } AddSkillByType(view, true); if( record.Skill_Type != eSKILL_TYPE.Command && record.Skill_Type != eSKILL_TYPE.Passive ) ItemMgr.HadItemManagement.QuickSlot.SetLearnSkill( _learn.sSkill.nSkillTableIdx, _learn.sSkill.nSkillLevel ); if(AsHudDlgMgr.Instance.IsOpenedSkillBook == true) { ResetDicNotSettingData(); AsHudDlgMgr.Instance.skillBookDlg.RefreshSkillBookDlg(); } }