|
|
-
- GamePlatform = GamePlatform or BaseClass()
- local GamePlatform = GamePlatform
- function GamePlatform:__init()
-
- --是否自定义用户中心
- self.custom_user_center = false
-
- --是否自定义退出界面
- self.custom_exit_game = ClientConfig.plat_custom_exit
-
- --是否支持切换账号
- self.custom_change_account = false
-
- --登陆请求参数
- self.login_param = nil
-
- --充值请求参数
- self.pay_param = {}
-
- --平台用户ID
- self.uid = 0
-
- --外部登陆回调函数
- self.login_callback = nil
-
- --外部充值回调函数
- self.pay_callback = nil
-
- --上次调用登陆时间
- self.last_login_time = 0
-
- --平台标识
- self.plat_name = ClientConfig.plat_name
-
- --登陆状态
- self.login_state = false
-
- --上次请求充值时间
- self.last_pay_request_time = 0
-
- --上次发送角色等级时间
- self.last_sent_role_level_time = os.time()
- --SDK登陆服务器验证函数
- self.login_method_name = "check_login_" .. string.gsub(self.plat_name, "_alpha", "")
-
- ClientConfig.source_plat_name = ClientConfig.plat_name
-
- self.can_send_voice = false --语音权限
-
- self:InitOperTypeValue()
- end
-
- function GamePlatform:SDKCallBack( func_name, func_data)
- if func_name == "LoginRequest" then
- self.wait_login_call_back = false
- GlobalEventSystem:Fire(EventName.HIDE_LOADING_VIEW)
- self:LoginCallBack(func_data)
- elseif func_name == "PayRequest" then
- self:PayCallBack(func_data)
- elseif func_name == "LoginOut" then
- ClientConfig.login_token = nil
- self:LoginOutCallBack(func_data)
- elseif func_name == "RequestAudioPermission" then
- self:OnRequestAudioPermission(func_data)
- elseif func_name == "ScreenShot" then
- self:ScreenShotBack(func_data)
- end
- end
-
- function GamePlatform:ScreenShotBack(data)
- if data then
- local out_data = data
- if type(data) == "string" then
- out_data = JsonToTable(data)
- end
- if out_data and out_data.name then
- local png_path = "phone/"..out_data.name..".png"
- local save_path = Util.DataPath..png_path
- if SystemRuntimePlatform.IsAndroid() then
- local game_path = "luaFramework/"
- save_path = game_path..png_path
- end
-
- if UnityEngine and UnityEngine.ScreenCapture then
- UnityEngine.ScreenCapture.CaptureScreenshot(save_path)
- end
- self:CallStringFunc("ScreenShotPath", {path = save_path})
- end
- end
- end
-
- function GamePlatform:CallStringFunc(func,value)
- return SDKUtil.CallStringFunc( "SDKPlatform", func, value)
- end
-
- function GamePlatform:InitWindow()
- PlatformSetting:getInstance():Init(self)
- end
-
- function GamePlatform:InitSDK()
- end
-
- function GamePlatform:LoginRequest(login_back)
- ClientConfig.login_token = nil
-
- local cur_time = os.time()
- if cur_time - self.last_login_time < 3 then
- return
- end
- self.last_login_time = cur_time
-
- self.login_callback = login_back
- local login_data = {}
-
- local login_func = function()
- self:CallSDKMethod("LoginRequest",login_data)
-
- GlobalEventSystem:Fire(EventName.SHOW_LOADING_VIEW)
- self.wait_login_call_back = true
- local hide_func = function()
- if self.wait_login_call_back then
- GlobalEventSystem:Fire(EventName.HIDE_LOADING_VIEW)
- end
- end
- setTimeout(hide_func,3)
- end
-
- if self.login_state then
- self.login_state = false
- self:CallSDKMethod("LoginOut",login_data)
-
- setTimeout(login_func, 0.5)
- else
- login_func()
- end
- end
-
- function GamePlatform:SetLoginCallBack(login_back)
- self.login_callback = login_back
- end
-
- function GamePlatform:LoginCallBack( data )
- if data then
- local login_data = data
- if type(data) == "string" then
- login_data = JsonToTable(data)
- end
-
- if login_data then
- if login_data.paramstr then
- login_data.paramstr = UrlEncode(login_data.paramstr) --阻止非法字符问题
- end
- if login_data.uid then
- if login_data.token then
- ClientConfig.login_token = login_data.token
- end
-
- self.uid = login_data.uid or 0
- if login_data.sdk_channel and login_data.sdk_channel ~= "" then
- self.checkChannel = login_data.sdk_channel
- ClientConfig.source_plat_name = ClientConfig.plat_name .. "_" .. self.checkChannel
- Debugger.Log("source_plat_name " .. ClientConfig.source_plat_name)
- else
- self.channel_id = (login_data.sdk_channel or login_data.channel) or login_data.login_channel
- if self.channel_id then
- self.channel_id = ClientConfig.plat_name .. "_" .. self.channel_id
- end
- end
-
- local server_check = function( state, error, data )
- if state then
- local login_data = JsonToTable(data)
- if login_data and tonumber(login_data["ret"]) == 0 then
- if login_data.token then
- ClientConfig.login_token = login_data.token
- end
- if login_data.uid then --覆盖掉上面的赋值
- self.uid = login_data.uid
- end
- if login_data.sdk_channel and login_data.sdk_channel ~= "" then
- self.checkChannel = login_data.sdk_channel
- ClientConfig.source_plat_name = ClientConfig.plat_name .. "_" .. self.checkChannel
- Debugger.Log("source_plat_name " .. ClientConfig.source_plat_name)
- end
- if self.login_callback then
- self.login_callback( self.uid )
- self.login_callback = nil
- LoginModel:getInstance().no_login_state = false
- end
- self.login_state = true
- return
- end
- end
- local function ok()
- Application.Quit()
- end
- Alert.show("登陆验证失败,请退出游戏再次进入",Alert.Type.One,ok)
- end
-
- self.login_param = {
- paramstr = login_data.paramstr or "{}",
- }
-
- self:TryCheckLogin( server_check )
-
- if login_data.get_pay_state and tonumber(login_data.get_pay_state) == 1 then
- self:GetServerPayState()
- end
- return
- else
- local server_check = function(state, error, data)
- if state then
- local login_data = JsonToTable(data)
- if login_data and tonumber(login_data["ret"]) == 0 then
- self.uid = login_data.uid or "0"
- if login_data.token then
- ClientConfig.login_token = login_data.token
- end
-
- if login_data.sdk_channel and login_data.sdk_channel ~= "" then
- self.checkChannel = login_data.sdk_channel
- ClientConfig.source_plat_name = ClientConfig.plat_name .. "_" .. self.checkChannel
- Debugger.Log("source_plat_name " .. ClientConfig.source_plat_name)
- end
-
- if self.login_callback then
- self.login_callback( self.uid )
- self.login_callback = nil
- LoginModel:getInstance().no_login_state = false
- end
- self.login_state = true
- return
- end
- end
- local function ok()
- Application.Quit()
- end
- Alert.show("登陆验证失败,请退出游戏再次进入",Alert.Type.One,ok)
- end
- self.check_login = nil
- self.login_param = nil
- if login_data.checkLogin and tonumber(login_data.checkLogin) == 1 then
- self.login_param = {
- paramstr = login_data.paramstr or "{}",
- }
- self:TryCheckLogin( server_check )
- end
-
- if login_data.get_pay_state and tonumber(login_data.get_pay_state) == 1 then
- self:GetServerPayState()
- end
- return
- end
- end
- end
-
- Message.show("登陆失败,请重新尝试")
- end
-
- function GamePlatform:TryCheckLogin(check_back)
-
- if not self.login_param then
- check_back()
- else
- local callback = function(state, error, data)
- self.wait_checklogin_call_back = false
- GlobalEventSystem:Fire(EventName.HIDE_LOADING_VIEW)
- check_back(state, error, data)
- end
-
- local now_time = os.time()
- local now_method = self.login_method_name
- local now_sign = string.lower(Util.md5(ClientConfig.login_key .. now_time .. now_method))
-
- self.login_param["method"] = now_method
- self.login_param["time"] = now_time
- self.login_param["sign"] = now_sign
- self.login_param["site"] = ClientConfig.plat_name
-
- HttpUtil.HttpGetRequest(ClientConfig.login_php, self.login_param, callback)
- GlobalEventSystem:Fire(EventName.SHOW_LOADING_VIEW)
-
- self.wait_checklogin_call_back = true
- local hide_func = function()
- if self.wait_checklogin_call_back then
- GlobalEventSystem:Fire(EventName.HIDE_LOADING_VIEW)
- end
- end
- setTimeout(hide_func,3)
- end
- end
-
- function GamePlatform:LoginOut()
- self.login_state = false --避免多次调用登出接口
- self:CallSDKMethod("LoginOut","")
- end
-
- function GamePlatform:PayRequest( custom_money, custom_info, custom_callpack )
- local cur_time = os.time()
- if cur_time - self.last_pay_request_time < 2 then
- return
- end
- self.last_pay_request_time = cur_time
-
- self:PayStart(custom_money * 10, custom_info, custom_callpack)
-
- --TA订单请求打点
- local product_id = custom_info.id
- local product_cfg = product_id and Config.Rechargeproduct[product_id]
- if product_cfg then
- local data = {
- event_name = "order_init",
- currency = "RMB",
- pay_amount = tonumber(custom_money) or 0,
- pay_item_type = tostring(product_cfg.product_type) or "",
- pay_sub_type = tostring(product_cfg.product_subtype) or "",
- pay_item_id = tostring(product_id) or "",
- pay_item = custom_info.pay_title or "",
- is_quick = custom_info.recharge_type and custom_info.recharge_type == 1 or false
- }
- self:TATrack(data)
- end
-
- end
-
- function GamePlatform:PayStart(custom_money, custom_info, custom_callpack)
- local server_role = self:ServerRole(custom_info.id or 0)
- local random = math.random(100,999)
-
- local role_info = RoleManager.Instance.mainRoleInfo
- local playerInfo = LoginController.Instance:GetPlatUserInfo()
- local real_plat = string.gsub(self.plat_name, "_alpha", "")
- local pay_callback_url = ClientConfig.url_account_path .. "api/pay.php?plat=suyou&platname=".. real_plat
- local notify_url_str = ClientConfig.url_account_path .. "api/pay.php?plat=".. real_plat
- local notify_url_post_str = ClientConfig.url_account_path .. "api/pay/".. real_plat .. ".php"
- local now_order_num = server_role .. "-" .. self.uid .. "-" .. os.time() .. random .. "-" .. self.plat_name
-
- local pay_data = {
- pay_money = tostring(custom_money) or 0,
- product_id = tostring(custom_info.id),
- product_name = custom_info.pay_title or "",
- user_id = self.uid,
- order_num = now_order_num,
- pay_suyou_notify_url = pay_callback_url,
- notify_url = notify_url_str,
- notify_url_post = notify_url_post_str,
- role_id = tostring(role_info.role_id),
- role_name = role_info.name,
- role_level = tostring(role_info.level),
- real_server = tostring(playerInfo.server_id),
- server_name = playerInfo.server_name,
- pay_state = self.use_web_pay_state or 0,
- balance = tostring(role_info.jin),
- vip = tostring(role_info.vip_flag),
- }
- local plat_name = ClientConfig.product_plat or string.gsub(ClientConfig.plat_name, "_alpha", "")
- local index = plat_name .. "@" .. pay_data["product_id"]
- if Config.Appstroeproduct then
- local product_info = Config.Appstroeproduct[index]
- if product_info then
- pay_data["appstore_product_id"] = Trim(product_info.product) or 0
- else
- pay_data["appstore_product_id"] = ""
- pay_data["appstore_product_id_1"] = plat_name .. (pay_data["pay_money"]/10)
- pay_data["appstore_product_id_2"] = plat_name .. (pay_data["pay_money"]*10)
- pay_data["appstore_product_id_3"] = plat_name .. (pay_data["pay_money"])
- end
- end
-
- self:CallSDKMethod("PayRequest",pay_data)
- self.pay_callback = custom_callpack
- end
-
- function GamePlatform:GetServerPayState()
- --向后台获取充值方式
- local func_callback = function(state, error, data)
- if state then
- local login_data = JsonToTable(data)
- if login_data and tonumber(login_data["ret"]) == 0 then
- local pay_code = tonumber(login_data["data"])
- if pay_code ~= 0 and pay_code ~= -1 then
- self.use_web_pay_state = pay_code
- end
- end
- end
- end
-
- local now_time = os.time()
- local now_method = "check_webpay_status"
- local now_sign = string.lower(Util.md5(ClientConfig.login_key .. now_time .. now_method))
-
- local get_param = {
- method = now_method,
- time = now_time,
- sign = now_sign,
- platform = ClientConfig.plat_name,
- lv = 0,
- }
- HttpUtil.HttpGetRequest(ClientConfig.login_php, get_param, func_callback)
- end
-
- function GamePlatform:ServerRole(product_id)
- local playerInfo = LoginController.Instance:GetPlatUserInfo()
- local role_info = RoleManager.Instance.mainRoleInfo
-
- if not playerInfo or not role_info then
- return ""
- end
-
- local server_role = playerInfo.server_id .. "gzsy" .. role_info.role_id .. "gzsy" .. product_id
- return server_role
- end
-
- function GamePlatform:PayCallBack( data )
- if self.pay_callback then
- self.pay_callback(true)
- self.pay_callback = nil
- end
- end
-
- function GamePlatform:LoginOutCallBack(data)
- if data then
- local out_data = data
- if type(data) == "string" then
- out_data = JsonToTable(data)
- end
- if out_data and out_data.noLogin and tonumber(out_data.noLogin) == 1 then
- LoginModel:getInstance().no_login_state = tonumber(out_data.noLogin)
- end
- end
-
- GlobalEventSystem:Fire(EventName.CHANGE_ACCOUNT)
- end
-
- function GamePlatform:CallSDKMethod(func_name, info)
- SDKUtil.CallSDKFunc( "SDKPlatform", func_name, info )
- end
-
- function GamePlatform:CallBoolFunc(value_name)
- return SDKUtil.CallBoolFunc( "SDKPlatform", value_name, "" )
- end
-
- function GamePlatform:CallIntFunc(value_name, func_data)
- if func_data == nil then
- func_data = ""
- end
- return SDKUtil.CallIntFunc("SDKPlatform", value_name, func_data)
- end
-
- function GamePlatform:ShowUserCenter()
- self:CallSDKMethod("ShowUserCenter","")
- end
-
- function GamePlatform:ExitPlatform()
- if self:NeedCustomExitGame() then
- self:CallSDKMethod("SDKExit","")
- end
- self:SubmitExtendData(self.exit_game_type)
- end
-
- function GamePlatform:CustonPayParam()
- end
-
- function GamePlatform:NeedCustomExitGame()
- return self.custom_exit_game
- end
-
- function GamePlatform:SubmitCreateRoleInfo(role_id)
- self:SubmitExtendData(self.create_role_type,tostring(role_id),"1")
- end
-
- function GamePlatform:RoleLevelChange(new_level)
- if os.time() - self.last_sent_role_level_time < 30 then
- return
- end
-
- self.last_sent_role_level_time = os.time()
- self:SubmitExtendData(self.role_levelup_type)
- end
-
- function GamePlatform:SubmitEnterGame()
- self:SubmitExtendData(self.gointo_game_type)
- end
-
- function GamePlatform:SubmitSelectServer()
- self:SubmitExtendData(self.select_server_type)
- end
-
- function GamePlatform:SubmitExtendData( now_type,role_id,role_lv )
- if not RoleManager or not RoleManager.Instance then
- return
- end
-
- local playerInfo = LoginController.Instance:GetPlatUserInfo()
- local role_info = RoleManager.Instance.mainRoleInfo
- local cur_role_name = role_info.name
- if cur_role_name == "" or now_type == self.create_role_type then
- cur_role_name = playerInfo.role_name or "无"
- end
- local extend_data = {
- type = now_type,
- role_id = role_id or tostring(role_info.role_id),
- role_name = cur_role_name,
- role_level = role_lv or tostring(role_info.level),
- real_server = tostring(playerInfo.server_id),
- server_name = playerInfo.server_name,
- balance = tostring(role_info.jin),
- vip = tostring(role_info.vip_flag),
- reg_time = tostring(playerInfo.create_time or os.time()),
- user_id = self.uid,
-
- --兼容老版本
- uid = self.uid,
- server = tostring(playerInfo.server_id),
- roleCTime = tostring(playerInfo.create_time or os.time()),
- serverNanme = playerInfo.server_name,
- time = os.time(),
- }
- self:CallSDKMethod("SubmitExtendData",extend_data)
- end
-
- function GamePlatform:InitOperTypeValue()
- self.select_server_type = 101
- self.create_role_type = 102
- self.gointo_game_type = 103
- self.role_levelup_type = 104
- self.exit_game_type = 105
- end
-
- function GamePlatform:GetUserID()
- return self.uid
- end
-
- function GamePlatform:ShareBySDK()
- local share_data = {}
- self:CallSDKMethod("ShareBySDK", share_data)
- end
-
- function GamePlatform:SuyouEventRecord( event_id )
- -- local url = "http://mqapi.suyougame.com/point/mrzj"
- -- local secretKey = "9A22E32CA2CFF5282F614F84138437F6"
- -- local cur_time = tostring(os.time())
- -- local post_param = {
- -- type = event_id,
- -- source = ClientConfig.plat_name,
- -- deviceId = LoginModel:getInstance().devece_id,
- -- startTime = LoginModel:getInstance().first_setup_time,
- -- time = cur_time,
- -- sign = "",
- -- }
- -- post_param.sign = string.lower(Util.md5("deviceId="..post_param.deviceId.."source="..post_param.source.."startTime="..post_param.startTime.."time="..post_param.time.."type="..post_param.type..secretKey))
- -- local call_func = function(ret,error_msg,data)
- -- end
- -- HttpUtil.HttpPostRequest(url, post_param, call_func)
- end
-
-
- function GamePlatform:RequestAudioPermission( )
- local share_data = {}
- self:CallSDKMethod("RequestAudioPermission", share_data)
- end
-
- function GamePlatform:IsNeedRequestAudioPermission( )
- -- local is_need_permission = self:CallIntFunc("RequestAudioPermission")
- -- return is_need_permission
- end
-
- function GamePlatform:OnRequestAudioPermission( data )
- if data then
- local out_data = data
- self.can_send_voice = false
- -- Debugger.Log("OnRequestAudioPermission out_data:" .. out_data)
- if out_data and tonumber(out_data) == 1 then
- self.can_send_voice = true
- end
- GlobalEventSystem:Bind(EventName.UPDATE_VOICE_AUTH, self.can_send_voice)
- end
- end
-
- function GamePlatform:CanSendVoice( )
- return self.can_send_voice
- end
-
- function GamePlatform:DeleteMe()
- end
-
- --ta打点额外数据
- function GamePlatform:SubmitSpecialData( parm_type, parm_value )
- local share_data = {type = parm_type, value = parm_value}
- self:CallSDKMethod("SubmitSpecialData", share_data)
- end
-
- --ta打点数据上报,参数{event_name = str, key1 = value1, key2 = value2 ...}
- function GamePlatform:TATrack( data )
- self:CallSDKMethod("TATrack", data)
- end
|