2025-06-04 05:02:57 +08:00

226 lines
4.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--玩家資訊地圖ID性別屬性點數職業等級經驗等等
UserData = reusableClass("UserData")
UserData.PoolSize = 100
autoImport("ProtoCommon_pb")
local TableClear = TableUtility.TableClear
if(UserData.CacheEUSERkey==nil) then
UserData.CacheEUSERkey = {}
end
local GetKey = function (attribute)
local key = UserData.CacheEUSERkey[attribute]
if(key==nil) then
key = ProtoCommon_pb["EUSERDATATYPE_"..attribute]
UserData.CacheEUSERkey[attribute] = key
end
return key
end
function UserData:ctor()
UserData.super.ctor(self)
self.hasDirtyDatas = false
self.datas = {}
self.bytes = {}
self.dirtyIDs = {}
end
function UserData:Reset()
self.hasDirtyDatas = false
TableClear(self.dirtyIDs)
TableClear(self.datas)
TableClear(self.bytes)
end
-- etc, id=ProtoCommon_pb.EUSERDATATYPE_ACCESSORY
function UserData:GetById(id)
return self.datas[id]
end
function UserData:Get(attribute)
return self.datas[GetKey(attribute)]
end
function UserData:GetBytes(attribute)
return self.bytes[GetKey(attribute)]
end
function UserData:Set(attribute,value,bytes)
self:SetByID(GetKey(attribute),value,bytes)
end
-- etc, id=ProtoCommon_pb.EUSERDATATYPE_ACCESSORY
function UserData:SetByID(id,value,bytes)
-- print("set",id,value)
self.datas[id] = value
self.bytes[id] = bytes
end
function UserData:Update(attribute,value,bytes)
local id = GetKey(attribute)
self:UpdateByID(id,value,bytes)
end
function UserData:DirtyUpdateByID(id,value,bytes)
local old = self.datas[id]
if(old~=value) then
self.datas[id] = value
if(self.dirtyIDs[id]==nil) then
self.dirtyIDs[id] = old or value
end
self.hasDirtyDatas = true
end
end
-- etc, id=ProtoCommon_pb.EUSERDATATYPE_ACCESSORY
function UserData:UpdateByID(id,value,bytes)
-- print("update",id,value)
if(id == 53)then
printRed("Update Follow :"..tostring(value));
end
local old = self.datas[id]
self.datas[id] = value
self.bytes[id] = bytes
return old
end
-- override begin
function UserData:DoConstruct(asArray, parts)
end
function UserData:DoDeconstruct(asArray)
self:Reset()
end
-- override end
UDEnum = {
NAME = "NAME",
ADDICT = "ADDICT",
AGIPOINT = "AGIPOINT",
BODY = "BODY",
DEXPOINT = "DEXPOINT",
HAIR = "HAIR",
EYE = "EYE",
MOUNT = "MOUNT",
MOUTH = "MOUTH",
INTPOINT = "INTPOINT",
JOBEXP = "JOBEXP",
JOBLEVEL = "JOBLEVEL",
LUKPOINT = "LUKPOINT",
MAPID = "MAPID",
MAX = "MAX",
MIN = "MIN",
OFFLINETIME = "OFFLINETIME",
ONLINETIME = "ONLINETIME",
PACKAGE = "PACKAGE",
PROFESSION = "PROFESSION",
LEFTHAND = "LEFTHAND",
RIGHTHAND = "RIGHTHAND",
ROLEEXP = "ROLEEXP",
ROLELEVEL = "ROLELEVEL",
SEX = "SEX",
STRPOINT = "STRPOINT",
TOTALPOINT = "TOTALPOINT",
USERDATA = "USERDATA",
VITPOINT = "VITPOINT",
-- WING = "WING",
DIAMOND = "DIAMOND",
SILVER = "SILVER",
GOLD = "GOLD",
GARDEN = "GARDEN",
MORA = "MORA",
LABORATORY="LABORATORY",
SKILL_POINT ="SKILL_POINT",
NORMAL_SKILL = "NORMAL_SKILL",
COLLECT_SKILL = "COLLECT_SKILL",
TRANS_SKILL = "TRANS_SKILL",
STATUS = "STATUS",
DESTPROFESSION = "DESTPROFESSION",
BODYSCALE = "BODYSCALE",
EQUIPMASTER = "EQUIPMASTER",
REFINEMASTER = 'REFINEMASTER',
HAIRCOLOR = "HAIRCOLOR",
EYECOLOR = "EYECOLOR",
CLOTHCOLOR = "CLOTHCOLOR",
PORTRAIT = "PORTRAIT",
FRAME = "FRAME",
HEAD = "HEAD",
FACE = "FACE",
BACK = "BACK",
TAIL = "TAIL",
BATTLEPOINT = "BATTLEPOINT",
RAIDID = "RAIDID",
PET_PARTNER = "PET_PARTNER",
ANGLE = "ANGLE",
FOLLOWID = "FOLLOWID",
SAVEMAP = "SAVEMAP",
MUSIC_CURID = "MUSIC_CURID",
MUSIC_START = "MUSIC_START",
MUSIC_LOOP = "MUSIC_LOOP",
MUSIC_DEMAND = "MUSIC_DEMAND",
GIFTPOINT = "GIFTPOINT",
KILLERNAME = "KILLERNAME",
DROPBASEEXP = "DROPBASEEXP",
HANDID = "HANDID",
TWINS_ACTIONID = "TWINS_ACTIONID",
HASCHARGE = "HASCHARGE",
-- PRAY_LIFE = "PRAY_LIFE",
-- PRAY_FIGHT = "PRAY_FIGHT",
-- PRAY_HUNT = "PRAY_HUNT",
-- PRAY_INT = "PRAY_INT",
SHADERCOLOR = "SHADERCOLOR",
QUERYTYPE = "QUERYTYPE",
TREESTATUS = "TREESTATUS",
ZONEID = "ZONEID",
FRIENDSHIP = "FRIENDSHIP",
ALPHA = "ALPHA",
QUOTA = "QUOTA",
QUOTA_LOCK = "QUOTA_LOCK",
PVP_COLOR = "PVP_COLOR",
NORMALSKILL_OPTION = "NORMALSKILL_OPTION",
FASHIONHIDE = "FASHIONHIDE",
CONTRIBUTE = "CONTRIBUTE",
PVPCOIN = "PVPCOIN",
LOTTERY = "LOTTERY",
TUTOR_PROFIC = "TUTOR_PROFIC",
PEAK_EFFECT = "PEAK_EFFECT",
-- Food
COOKER_EXP = "COOKER_EXP",
COOKER_LV = "COOKER_LV",
TASTER_EXP = "TASTER_EXP",
TASTER_LV = "TASTER_LV",
SATIETY = "SATIETY",
OPTION = "OPTION",
GUILDHONOR = "GUILDHONOR",
EQUIP_OFF = "EQUIP_OFF",
EQUIP_BREAK = "EQUIP_BREAK",
CUR_MAXJOB = "CUR_MAXJOB",
JOY = "JOY",
MARITAL = "MARITAL",
QUERYWEDDINGTYPE = "QUERYWEDDINGTYPE",
DIVORCE_ROLLERCOASTER = "DIVORCE_ROLLERCOASTER",
EQUIPED_WEAPON = "EQUIPED_WEAPON",
-- servant
SERVANTID = "SERVANTID",
FAVORABILITY = "FAVORABILITY",
DRESSUP = "DRESSUP",
BOOTH_SCORE = "BOOTH_SCORE",
SELLDISCOUNT = "SELLDISCOUNT",
DEADCOIN = "DEADCOIN",
DEADLV = "DEADLV",
DEADEXP = "DEADEXP",
}