using System; using System.Text; namespace Game { public class RofAchievementRow : IRofBase { public int ID { get; private set; } public string Key { get; private set; } public int State { get; private set; } public string Desc { get; private set; } public string Info { get; private set; } public int AchievementCode { get; private set; } public int Condition { get; private set; } public int TargetValue { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nKeyLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; Key = Encoding.UTF8.GetString(rData, nOffset, nKeyLen); nOffset += nKeyLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} State = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nDescLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; Desc = Encoding.UTF8.GetString(rData, nOffset, nDescLen); nOffset += nDescLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nInfoLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; Info = Encoding.UTF8.GetString(rData, nOffset, nInfoLen); nOffset += nInfoLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} AchievementCode = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} Condition = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} TargetValue = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofEchoCardRow : IRofBase { public int ID { get; private set; } public int quality { get; private set; } public string name { get; private set; } public int price { get; private set; } public int skillId { get; private set; } public string enemyType { get; private set; } public string spritePath { get; private set; } public int weight { get; private set; } public string maskId { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nnameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; name = Encoding.UTF8.GetString(rData, nOffset, nnameLen); nOffset += nnameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} price = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} skillId = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nenemyTypeLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; enemyType = Encoding.UTF8.GetString(rData, nOffset, nenemyTypeLen); nOffset += nenemyTypeLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nspritePathLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; spritePath = Encoding.UTF8.GetString(rData, nOffset, nspritePathLen); nOffset += nspritePathLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} weight = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nmaskIdLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; maskId = Encoding.UTF8.GetString(rData, nOffset, nmaskIdLen); nOffset += nmaskIdLen; return nOffset; } } public class RofEchoCardGroupRow : IRofBase { public int ID { get; private set; } public string name { get; private set; } public string echoCards { get; private set; } public int Nweight { get; private set; } public int Rweight { get; private set; } public int Srweight { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nnameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; name = Encoding.UTF8.GetString(rData, nOffset, nnameLen); nOffset += nnameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nechoCardsLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; echoCards = Encoding.UTF8.GetString(rData, nOffset, nechoCardsLen); nOffset += nechoCardsLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} Nweight = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} Rweight = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} Srweight = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofEnemyRow : IRofBase { public int ID { get; private set; } public long enemyHp { get; private set; } public int awardCoin { get; private set; } public string enemyName { get; private set; } public int quality { get; private set; } public int enemyGroup { get; private set; } public string echoIds { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 8);} enemyHp = (long)BitConverter.ToUInt64(rData, nOffset); nOffset += 8; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} awardCoin = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nenemyNameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; enemyName = Encoding.UTF8.GetString(rData, nOffset, nenemyNameLen); nOffset += nenemyNameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} enemyGroup = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nechoIdsLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; echoIds = Encoding.UTF8.GetString(rData, nOffset, nechoIdsLen); nOffset += nechoIdsLen; return nOffset; } } public class RofExchangeCardRow : IRofBase { public int ID { get; private set; } public int quality { get; private set; } public string name { get; private set; } public int price { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nnameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; name = Encoding.UTF8.GetString(rData, nOffset, nnameLen); nOffset += nnameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} price = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofGamePartConfigRow : IRofBase { public int ID { get; private set; } public long enemyHp { get; private set; } public float enemyHpOffset { get; private set; } public int awardCoin { get; private set; } public int quailty { get; private set; } public string sceneName { get; private set; } public string echoCardGroupID { get; private set; } public string fragmentRange { get; private set; } public int baseFragment { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 8);} enemyHp = (long)BitConverter.ToUInt64(rData, nOffset); nOffset += 8; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} enemyHpOffset = BitConverter.ToSingle(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} awardCoin = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quailty = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nsceneNameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; sceneName = Encoding.UTF8.GetString(rData, nOffset, nsceneNameLen); nOffset += nsceneNameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nechoCardGroupIDLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; echoCardGroupID = Encoding.UTF8.GetString(rData, nOffset, nechoCardGroupIDLen); nOffset += nechoCardGroupIDLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nfragmentRangeLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; fragmentRange = Encoding.UTF8.GetString(rData, nOffset, nfragmentRangeLen); nOffset += nfragmentRangeLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} baseFragment = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofMaskCardRow : IRofBase { public int ID { get; private set; } public int quality { get; private set; } public string name { get; private set; } public int price { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nnameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; name = Encoding.UTF8.GetString(rData, nOffset, nnameLen); nOffset += nnameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} price = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofReplenishCardRow : IRofBase { public int ID { get; private set; } public int quality { get; private set; } public string name { get; private set; } public string desc { get; private set; } public int price { get; private set; } public int humanWeight { get; private set; } public int earthWeight { get; private set; } public int heavenWeight { get; private set; } public int cardType { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nnameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; name = Encoding.UTF8.GetString(rData, nOffset, nnameLen); nOffset += nnameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int ndescLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; desc = Encoding.UTF8.GetString(rData, nOffset, ndescLen); nOffset += ndescLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} price = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} humanWeight = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} earthWeight = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} heavenWeight = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} cardType = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofSecretCardRow : IRofBase { public int ID { get; private set; } public int quality { get; private set; } public string name { get; private set; } public int price { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nnameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; name = Encoding.UTF8.GetString(rData, nOffset, nnameLen); nOffset += nnameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} price = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofSkillRow : IRofBase { public int ID { get; private set; } public string skillName { get; private set; } public string skillDesc { get; private set; } public int quality { get; private set; } public int price { get; private set; } public string condition { get; private set; } public float rate_add { get; private set; } public float rate_mun { get; private set; } public float atk_add { get; private set; } public string initSkillAction { get; private set; } public string actionTrigger { get; private set; } public string skillCondition { get; private set; } public float skillActiveRate { get; private set; } public string action { get; private set; } public string customSkill { get; private set; } public string comboSkill { get; private set; } public int comboModel { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nskillNameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; skillName = Encoding.UTF8.GetString(rData, nOffset, nskillNameLen); nOffset += nskillNameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nskillDescLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; skillDesc = Encoding.UTF8.GetString(rData, nOffset, nskillDescLen); nOffset += nskillDescLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} price = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nconditionLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; condition = Encoding.UTF8.GetString(rData, nOffset, nconditionLen); nOffset += nconditionLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} rate_add = BitConverter.ToSingle(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} rate_mun = BitConverter.ToSingle(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} atk_add = BitConverter.ToSingle(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int ninitSkillActionLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; initSkillAction = Encoding.UTF8.GetString(rData, nOffset, ninitSkillActionLen); nOffset += ninitSkillActionLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nactionTriggerLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; actionTrigger = Encoding.UTF8.GetString(rData, nOffset, nactionTriggerLen); nOffset += nactionTriggerLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nskillConditionLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; skillCondition = Encoding.UTF8.GetString(rData, nOffset, nskillConditionLen); nOffset += nskillConditionLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} skillActiveRate = BitConverter.ToSingle(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nactionLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; action = Encoding.UTF8.GetString(rData, nOffset, nactionLen); nOffset += nactionLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int ncustomSkillLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; customSkill = Encoding.UTF8.GetString(rData, nOffset, ncustomSkillLen); nOffset += ncustomSkillLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int ncomboSkillLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; comboSkill = Encoding.UTF8.GetString(rData, nOffset, ncomboSkillLen); nOffset += ncomboSkillLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} comboModel = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } public class RofWeaponCardRow : IRofBase { public int ID { get; private set; } public int quality { get; private set; } public string name { get; private set; } public string sprite { get; private set; } public int price { get; private set; } public int ReadBody(byte[] rData, int nOffset) { if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} ID = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} quality = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nnameLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; name = Encoding.UTF8.GetString(rData, nOffset, nnameLen); nOffset += nnameLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} int nspriteLen = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; sprite = Encoding.UTF8.GetString(rData, nOffset, nspriteLen); nOffset += nspriteLen; if (BitConverter.IsLittleEndian){Array.Reverse(rData, nOffset, 4);} price = (int)BitConverter.ToUInt32(rData, nOffset); nOffset += 4; return nOffset; } } }