357 lines
8.6 KiB
Lua
357 lines
8.6 KiB
Lua
local LocalData ={}
|
|
|
|
local PlayerPrefs = CS.UnityEngine.PlayerPrefs
|
|
|
|
local LOCAL_DATA_KEY = {
|
|
SDK_UID = "SDK_UID",
|
|
AUDIO_MUSIC_VOLUME = "AUDIO_MUSIC_VOLUME",
|
|
AUDIO_EFFECT_VOLUME = "AUDIO_EFFECT_VOLUME",
|
|
SELECTED_LANGUAGE = "SELECTED_LANGUAGE",
|
|
GM_SHOW_FLOATING_ICON = "GM_SHOW_FLOATING_ICON",
|
|
MESSAGE_BOX_SHOW_TODAY = "MESSAGE_BOX_SHOW_TODAY",
|
|
GAME_QUALITY_LEVEL = "GAME_QUALITY_LEVEL", -- 游戏设置品质等级
|
|
LAST_LOGIN_URL = "LAST_LOGIN_URL",
|
|
LAST_LOGIN_NAME = "LAST_LOGIN_NAME",
|
|
LAST_LOGIN_IP = "LAST_LOGIN_IP",
|
|
ACCOUNT_INFO = "ACCOUNT_INFO",
|
|
SDK_LOGIN_TYPE = "SDK_LOGIN_TYPE",
|
|
|
|
NEED_UPDATE = "NEED_UPDATE", -- 需要更新
|
|
IOS_ORDER_ID = "IOS_ORDER_ID",
|
|
IOS_PAY_INFO = "IOS_PAY_INFO",
|
|
SHAKE_MODE = "SHAKE_MODE", -- 震动模式
|
|
SAVE_POWER_MODE = "SAVE_POWER_MODE", -- 省电模式
|
|
LAST_MAIL_ID = "LAST_MAIL_ID",
|
|
IS_NEW_PLAYER = "IS_NEW_PLAYER",
|
|
DISTINCT_ID = "DISTINCT_ID",
|
|
LAST_LOGIN_TIME = "LAST_LOGIN_TIME",
|
|
GATE = "GATE",
|
|
BOUNTY_POP_TIME = "BOUNTY_POP_TIME",
|
|
CHALLENGE_TASK_POP_TIME = "CHALLENGE_TASK_POP_TIME",
|
|
}
|
|
|
|
LocalData.KEYS = LOCAL_DATA_KEY
|
|
|
|
function LocalData:save()
|
|
if EDITOR_MODE then
|
|
Logger.logHighlight("save data")
|
|
end
|
|
if self.dirty then
|
|
self.dirty = false
|
|
PlayerPrefs.Save()
|
|
end
|
|
end
|
|
|
|
function LocalData:setString(key, value)
|
|
self.dirty = true
|
|
PlayerPrefs.SetString(key, value)
|
|
end
|
|
|
|
function LocalData:getString(key, defaultValue)
|
|
if defaultValue then
|
|
return PlayerPrefs.GetString(key, defaultValue)
|
|
else
|
|
return PlayerPrefs.GetString(key)
|
|
end
|
|
end
|
|
|
|
function LocalData:setInt(key, value)
|
|
self.dirty = true
|
|
PlayerPrefs.SetInt(key, value)
|
|
end
|
|
|
|
function LocalData:getInt(key, defaultValue)
|
|
if defaultValue then
|
|
return PlayerPrefs.GetInt(key, defaultValue)
|
|
else
|
|
return PlayerPrefs.GetInt(key)
|
|
end
|
|
end
|
|
|
|
function LocalData:setFloat(key, value)
|
|
self.dirty = true
|
|
PlayerPrefs.SetFloat(key, value)
|
|
end
|
|
|
|
function LocalData:getFloat(key, defaultValue)
|
|
if defaultValue then
|
|
return PlayerPrefs.GetFloat(key, defaultValue)
|
|
else
|
|
return PlayerPrefs.GetFloat(key)
|
|
end
|
|
end
|
|
|
|
function LocalData:hasKey(key)
|
|
return PlayerPrefs.HasKey(key)
|
|
end
|
|
|
|
function LocalData:delKey(key)
|
|
self.dirty = true
|
|
PlayerPrefs.DeleteKey(key)
|
|
end
|
|
|
|
-- 跟角色挂钩的唯一id
|
|
function LocalData:getRoleKey(key)
|
|
local uid = DataManager.PlayerData:getUid()
|
|
if uid == "" then
|
|
Logger.logError("check roleid error!")
|
|
end
|
|
return key .. uid
|
|
end
|
|
|
|
--------------Implement-----------------
|
|
function LocalData:getAudioMusicVolume()
|
|
return self:getFloat(LOCAL_DATA_KEY.AUDIO_MUSIC_VOLUME, 1)
|
|
end
|
|
|
|
function LocalData:setAudioMusicVolume(value)
|
|
self:setFloat(LOCAL_DATA_KEY.AUDIO_MUSIC_VOLUME, value)
|
|
end
|
|
|
|
function LocalData:getAudioEffectVolume()
|
|
return self:getFloat(LOCAL_DATA_KEY.AUDIO_EFFECT_VOLUME, 1)
|
|
end
|
|
|
|
function LocalData:setAudioEffectVolume(value)
|
|
self:setFloat(LOCAL_DATA_KEY.AUDIO_EFFECT_VOLUME, value)
|
|
end
|
|
|
|
function LocalData:getSelectedLanguage()
|
|
return self:getString(LOCAL_DATA_KEY.SELECTED_LANGUAGE, "")
|
|
end
|
|
|
|
function LocalData:setSelectedLanguage(value)
|
|
self:setString(LOCAL_DATA_KEY.SELECTED_LANGUAGE, value)
|
|
end
|
|
|
|
function LocalData:getGMShowFloatingIcon()
|
|
return self:getInt(LOCAL_DATA_KEY.GM_SHOW_FLOATING_ICON, 0) == 1
|
|
end
|
|
|
|
function LocalData:setGMShowFloatingIcon(value)
|
|
self:setInt(LOCAL_DATA_KEY.GM_SHOW_FLOATING_ICON, value)
|
|
end
|
|
|
|
function LocalData:getMessageBoxShowTodayTime(key)
|
|
return self:getInt(LOCAL_DATA_KEY.MESSAGE_BOX_SHOW_TODAY .. key, 0)
|
|
end
|
|
|
|
function LocalData:setMessageBoxShowTodayTime(key, value)
|
|
self:setInt(LOCAL_DATA_KEY.MESSAGE_BOX_SHOW_TODAY .. key, value)
|
|
end
|
|
|
|
function LocalData:getGameQualityLevel()
|
|
return self:getInt(LOCAL_DATA_KEY.GAME_QUALITY_LEVEL, 0)
|
|
end
|
|
|
|
function LocalData:setGameQualityLevel(level)
|
|
self:setInt(LOCAL_DATA_KEY.GAME_QUALITY_LEVEL, level)
|
|
end
|
|
|
|
function LocalData:setTodayFirst(new)
|
|
self.isTodayFirst = new
|
|
end
|
|
|
|
function LocalData:getTodayFirst()
|
|
return self.isTodayFirst or false
|
|
end
|
|
|
|
function LocalData:setNeedUpdate(value)
|
|
value = value or "0.0.0"
|
|
self:setString(LOCAL_DATA_KEY.NEED_UPDATE, value)
|
|
end
|
|
|
|
function LocalData:getNeedUpdate()
|
|
self:getString(LOCAL_DATA_KEY.NEED_UPDATE, "0.0.0")
|
|
end
|
|
|
|
function LocalData:setIosPayInfo(iosPayInfo)
|
|
iosPayInfo = iosPayInfo or {}
|
|
local str = json.encode(iosPayInfo)
|
|
self:setString(LOCAL_DATA_KEY.IOS_PAY_INFO, str)
|
|
end
|
|
|
|
function LocalData:getIosPayInfo()
|
|
local str = self:getString(LOCAL_DATA_KEY.IOS_PAY_INFO, "")
|
|
if str == nil or str == "" then
|
|
return {}
|
|
else
|
|
local iosPayInfo = json.decode(str)
|
|
if iosPayInfo then
|
|
return iosPayInfo
|
|
else
|
|
return {}
|
|
end
|
|
end
|
|
end
|
|
|
|
function LocalData:setIosOrders(iosOrders)
|
|
iosOrders = iosOrders or {}
|
|
local str = json.encode(iosOrders)
|
|
self:setString(LOCAL_DATA_KEY.IOS_ORDER_ID, str)
|
|
end
|
|
|
|
function LocalData:getIosOrders()
|
|
local str = self:getString(LOCAL_DATA_KEY.IOS_ORDER_ID, "")
|
|
if str == nil or str == "" then
|
|
return {}
|
|
else
|
|
local iosOrders = json.decode(str)
|
|
if iosOrders then
|
|
return iosOrders
|
|
else
|
|
return {}
|
|
end
|
|
end
|
|
end
|
|
|
|
function LocalData:setLastLoginInfo(loginType, id, token)
|
|
local str = json.encode({
|
|
type = loginType,
|
|
id = id,
|
|
token = token
|
|
})
|
|
if not loginType then
|
|
self:setString(LOCAL_DATA_KEY.LAST_LOGIN_TYPE, "")
|
|
elseif loginType ~= "token" then
|
|
self:setString(LOCAL_DATA_KEY.LAST_LOGIN_TYPE, loginType)
|
|
end
|
|
self:setString(LOCAL_DATA_KEY.LAST_LOGIN_INFO, str)
|
|
end
|
|
|
|
function LocalData:getLastLoginInfo()
|
|
local str = self:getString(LOCAL_DATA_KEY.LAST_LOGIN_INFO, "{}")
|
|
local info = json.decode(str)
|
|
info.type = info.type or NetManager.LOGIN_TYPE.ANONYMOUS
|
|
info.id = info.id or DeviceHelper:getDeviceId()
|
|
info.token = info.token
|
|
return info
|
|
end
|
|
|
|
function LocalData:getLastLoginType()
|
|
local str = self:getString(LOCAL_DATA_KEY.LAST_LOGIN_TYPE, "")
|
|
if str == "" then
|
|
str = NetManager.LOGIN_TYPE.ANONYMOUS
|
|
end
|
|
if str ~= NetManager.LOGIN_TYPE.ANONYMOUS and
|
|
str ~= NetManager.LOGIN_TYPE.APPLE and
|
|
str ~= NetManager.LOGIN_TYPE.GOOGLE and
|
|
str ~= NetManager.LOGIN_TYPE.FACEBOOK
|
|
then
|
|
str = NetManager.LOGIN_TYPE.ANONYMOUS
|
|
end
|
|
return str
|
|
end
|
|
|
|
function LocalData:setLastLoginName(name)
|
|
name = name or ""
|
|
self:setString(LOCAL_DATA_KEY.LAST_LOGIN_NAME, name)
|
|
end
|
|
|
|
function LocalData:getLastLoginName()
|
|
return self:getString(LOCAL_DATA_KEY.LAST_LOGIN_NAME, "")
|
|
end
|
|
|
|
function LocalData:saveSendQueue(sendQueue)
|
|
local str = json.encode(sendQueue)
|
|
self:setString(LOCAL_DATA_KEY.SEND_QUEUE, str)
|
|
end
|
|
|
|
function LocalData:saveEmptySendQueue()
|
|
if self.emptyTableJsonStr == nil then
|
|
self.emptyTableJsonStr = json.encode({})
|
|
end
|
|
self:setString(LOCAL_DATA_KEY.SEND_QUEUE, self.emptyTableJsonStr)
|
|
end
|
|
|
|
function LocalData:getSendQueue()
|
|
local sendQueue = json.decode(self:getString(LOCAL_DATA_KEY.SEND_QUEUE, "{}"))
|
|
return sendQueue
|
|
end
|
|
|
|
function LocalData:setShakeMode(value) -- 0-close 1-open
|
|
self:setInt(self:getString(LOCAL_DATA_KEY.SHAKE_MODE), value)
|
|
end
|
|
|
|
function LocalData:getShakeMode()
|
|
self:getInt(self:getString(LOCAL_DATA_KEY.SHAKE_MODE), 1)
|
|
end
|
|
|
|
function LocalData:setSavePowerMode(value) -- 0-close 1-open
|
|
self:setInt(self:getString(LOCAL_DATA_KEY.SAVE_POWER_MODE), value)
|
|
end
|
|
|
|
function LocalData:getSavePowerMode()
|
|
self:getInt(self:getString(LOCAL_DATA_KEY.SAVE_POWER_MODE), 1)
|
|
end
|
|
|
|
function LocalData:getLastMailId()
|
|
return self:getInt(LOCAL_DATA_KEY.LAST_MAIL_ID, 0)
|
|
end
|
|
|
|
function LocalData:setLastMailId(id)
|
|
if not id then
|
|
return
|
|
end
|
|
self:setInt(LOCAL_DATA_KEY.LAST_MAIL_ID, id)
|
|
end
|
|
|
|
function LocalData:getAccountInfo()
|
|
local info = json.decode(self:getString(LOCAL_DATA_KEY.ACCOUNT_INFO, "{}"))
|
|
return info
|
|
end
|
|
|
|
function LocalData:setAccountInfo(info)
|
|
if not info then
|
|
return
|
|
end
|
|
local str = json.encode(info)
|
|
self:setString(LOCAL_DATA_KEY.ACCOUNT_INFO, str)
|
|
end
|
|
|
|
function LocalData:setLastLoginIp(ip)
|
|
ip = ip or ""
|
|
self:setString(LOCAL_DATA_KEY.LAST_LOGIN_IP, ip)
|
|
end
|
|
|
|
function LocalData:getLastLoginIp()
|
|
return self:getString(LOCAL_DATA_KEY.LAST_LOGIN_IP, "")
|
|
end
|
|
|
|
function LocalData:getIsNewPlayer()
|
|
return self:getInt(LOCAL_DATA_KEY.IS_NEW_PLAYER, 0) == 0
|
|
end
|
|
|
|
function LocalData:setNotNewPlayer()
|
|
return self:setInt(LOCAL_DATA_KEY.IS_NEW_PLAYER, 1)
|
|
end
|
|
|
|
function LocalData:setDistinctId(id)
|
|
self:setString(LOCAL_DATA_KEY.DISTINCT_ID, id or "")
|
|
end
|
|
|
|
function LocalData:getDistinctId()
|
|
return self:getString(LOCAL_DATA_KEY.DISTINCT_ID, "")
|
|
end
|
|
|
|
function LocalData:setLastLoginTime()
|
|
|
|
end
|
|
|
|
function LocalData:setBountyPopTime(time)
|
|
self:setInt(LOCAL_DATA_KEY.BOUNTY_POP_TIME, time)
|
|
end
|
|
|
|
function LocalData:getBountyPopTime()
|
|
return self:getInt(LOCAL_DATA_KEY.BOUNTY_POP_TIME, 0)
|
|
end
|
|
|
|
function LocalData:setChallengeTaskPopTime(time)
|
|
self:setInt(LOCAL_DATA_KEY.CHALLENGE_TASK_POP_TIME, time)
|
|
end
|
|
|
|
function LocalData:getChallengeTaskPopTime()
|
|
return self:getInt(LOCAL_DATA_KEY.CHALLENGE_TASK_POP_TIME, 0)
|
|
end
|
|
|
|
return LocalData |