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<String, Object> 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()
|
{
|
}
|
}
|