package com.secondworld.univeralsdk; import android.app.Activity; import android.os.Bundle; import com.sp.sdk.core.SPGameController; import com.sp.sdk.core.callback.CallbackCode; import com.sp.sdk.core.callback.SPInitCallback; import com.sp.sdk.core.callback.SPLoginCallback; import com.sp.sdk.core.callback.SPLogoutCallback; import com.sp.sdk.core.callback.SPPayCallback; import com.sp.sdk.service.GameData; import com.sp.sdk.service.LoginResponse; import com.sp.sdk.service.PayOrder; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2018/9/18 0018. */ public class SpPlatformUtil { private static final String TAG = "SpPlatformUtil"; private static SpPlatformUtil m_Instance; public static SpPlatformUtil getInstance() { if (m_Instance == null) { m_Instance = new SpPlatformUtil(); } return m_Instance; } private Map m_Message = new HashMap<>(); public boolean payProcessing = false; public void onCreate(Activity activity, Bundle savedInstanceState) { //初始化SDK // 参数1:上下文对象 // 参数2:Bundle对象 // 参数3:SDK的横竖屏管理 (ORIENTATION_HORIZONTAL 代表横屏,ORIENTATION_VERTICAL 代表竖屏) // 参数4:初始化回调 SPGameController.getInstance(). onCreate(activity, savedInstanceState, SPGameController.ORIENTATION_HORIZONTAL, new SPInitCallback() { @Override public void onResult(int code, String msg) { m_Message.clear(); LogUtil.i(TAG, "SPGameController :" + msg); switch (code) { case CallbackCode.SUCCESS://初始化成功 m_Message.put("code", CodeA2U.FreePlatformInitOk); UniversalUtil.sendMessageToUnity(m_Message); break; case CallbackCode.FAIL://初始化失败 m_Message.put("code", CodeA2U.FreePlatformInitFail); UniversalUtil.sendMessageToUnity(m_Message); break; } } }); //设置登出监听 SPGameController.getInstance().setLogoutListener(new SPLogoutCallback() { @Override public void onResult(int status, String msg) { m_Message.clear(); switch (status) { case CallbackCode.SUCCESS://注销成功 //需要把游戏切换回登陆前的场景,并重新弹出登录框等操作 m_Message.put("code", CodeA2U.FreePlatformLogoutOk); UniversalUtil.sendMessageToUnity(m_Message); break; case CallbackCode.FAIL://注销失败 //注销失败也可以执行注销成功的操作 LogUtil.i(TAG,"!!!!!!! 登出失败 !!!!!!!"); m_Message.put("code", CodeA2U.FreePlatformLogoutOk); UniversalUtil.sendMessageToUnity(m_Message); break; } } }); } public void login(final Activity activity) { SPGameController.getInstance().login(new SPLoginCallback() { @Override public void onResult(LoginResponse response) { m_Message.clear(); switch (response.getStatus()) { case CallbackCode.SUCCESS://登陆成功 //根据回调获取用户信息 String userName = response.getUsername(); String sessionId = response.getSession_id(); String timestamp = response.getTimestamp() + ""; String token = response.getToken(); try { JSONObject _info = new JSONObject(); _info.put("account", userName); _info.put("token", token); _info.put("session_id", sessionId); _info.put("timeStamp", timestamp); m_Message.put("code", CodeA2U.FreePlatformLoginOk); m_Message.put("info", _info); UniversalUtil.sendMessageToUnity(m_Message); } catch (JSONException e) { e.printStackTrace(); } LogUtil.i(TAG, "登陆的账号为: " + userName); break; case CallbackCode.FAIL://登陆失败 m_Message.put("code", CodeA2U.FreePlatformLoginFail); UniversalUtil.sendMessageToUnity(m_Message); LogUtil.i(TAG, "登陆失败 - " + response.getMsg()); break; } } }); } public void logout() { SPGameController.getInstance().logout(); } public void pay(final Activity activity, String productName, String productID, float price, String extData) { SPGameController.getInstance().pay(String.valueOf(price), extData, productID, productName, new SPPayCallback() { @Override public void onResult(PayOrder payOrder) { m_Message.clear(); switch (payOrder.getStatus()) { case 7://支付中 break; case 1://支付成功 //根据回调获取支付订单信息 String s = payOrder.toString(); LogUtil.i(TAG, payOrder.getStatus() + " " + s); m_Message.put("code", CodeA2U.FreePlatformPayOk); UniversalUtil.sendMessageToUnity( m_Message); payProcessing = false; break; case 404://支付失败 m_Message.put("code", CodeA2U.FreePlatformPayFail); UniversalUtil.sendMessageToUnity( m_Message); LogUtil.i(TAG, "STATUS: " + payOrder.getStatus()); payProcessing = false; break; } } }); payProcessing = true; } public void createRole(String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String GameName, String Job, String vipLevel, String surplusMoney) { GameData gamedata = createGameData(serverID, serverName, roleID, roleName, roleLevel, FamilyName, GameName, Job, vipLevel, surplusMoney); SPGameController.getInstance().setGameData(gamedata, 1); } public void enterWorld(String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String GameName, String Job, String vipLevel, String surplusMoney) { // long roleCTime GameData gamedata = createGameData(serverID, serverName, roleID, roleName, roleLevel, FamilyName, GameName, Job, vipLevel, surplusMoney); SPGameController.getInstance().setGameData(gamedata, 2); } public void levelUp(String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String GameName, String Job, String vipLevel, String surplusMoney) { GameData gamedata = createGameData(serverID, serverName, roleID, roleName, roleLevel, FamilyName, GameName, Job, vipLevel, surplusMoney); SPGameController.getInstance().setGameData(gamedata, 3); } private GameData createGameData(String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String GameName, String Job, String vipLevel, String surplusMoney) { GameData gamedata = new GameData(); gamedata.setServerid(serverID); gamedata.setServerName(serverName); gamedata.setRoleId(roleID); gamedata.setRoleName(roleName); gamedata.setLevel(roleLevel); gamedata.setPartyName(FamilyName); gamedata.setGameName(GameName); gamedata.setRoleType(Job); gamedata.setVip(vipLevel); gamedata.setGamemoney(surplusMoney); return gamedata; } public void SendRegisterEvent() { } }