DDZ_INFO_TDCLS = tdcls(DBASE_TDCLS, ATTRIB_TDCLS)
DDZ_INFO_TDCLS.name = "DDZ_INFO_TDCLS"
function DDZ_INFO_TDCLS:create(owner, value)
self:init_with_data(owner, value)
end
function DDZ_INFO_TDCLS:init_with_data(owner, value)
self.owner = owner
if not value or is_empty_table(value) then
value = {
owner = self.owner,
pea_amount = 0,
score = 0,
win_amount = 0,
lose_amount = 0,
escape_amount = 0,
give_times = 0,
last_give_time = 0,
}
self:replace_dbase(value)
set_not_in_db(self)
else
self:replace_dbase(value)
end
self:freeze_dbase()
self:try_give_pea()
end
function DDZ_INFO_TDCLS:try_give_pea()
if self:query("pea_amount") < 1000 then
local ret= is_same_day(self:query("last_give_time"))
if ret ~= true then
self:set("give_times", 0)
self:set("last_give_time", os.time())
end
if self:query("give_times") < 4 then
self:add("give_times", 1)
self:set("last_give_time", os.time())
self:add("pea_amount", 1000)
return true
end
end
return false
end
function DDZ_INFO_TDCLS:calc_score(info)
if info.is_win == 1 then
self:add("score", 6)
self:add("win_amount", 1)
else
self:add("score", -3)
self:add("lose_amount", 1)
end
if info.is_escape == 1 then
self:add("escape_amount", 1)
end
local change_pea = DDZ_D.calc_pea_change(info.pea_amount_list, info.idx, info.lord_idx, info.multi_num, info.is_win)
self:add("pea_amount", change_pea)
if self:query("pea_amount") < 0 then
self:set("pea_amount", 0)
end
self:try_give_pea()
end
function DDZ_INFO_TDCLS:save_to_mapping()
local change_list = self:get_change_list()
local data = {}
local fields = DATA_D.get_table_fields("ddz_info") or {}
for key,_ in pairs(change_list) do
if fields[key] then
data[key] = self:query(key)
end
end
return data
end
function DDZ_INFO_TDCLS:get_save_path()
return "ddz_info", { owner = self.owner }
end
function DDZ_INFO_TDCLS:set_change_to_db(callback, arg)
local table_name, condition = self:get_save_path()
if is_not_in_db(self) then
local sql = SQL_D.insert_sql(table_name, self:query())
arg.sql_count = arg.sql_count + 1
DB_D.execute_db(table_name, sql, callback, arg)
del_not_in_db(self)
self:freeze_dbase()
return
end
local dbase = self:save_to_mapping()
if is_empty_table(dbase) then
callback(arg, 0, {})
return
end
local sql = SQL_D.update_sql(table_name, dbase, condition)
arg.sql_count = arg.sql_count + 1
DB_D.execute_db(table_name, sql, callback, arg)
self:freeze_dbase()
end