client_Hale
2019-02-21 a04e77430cf4eb1432abf61a99e3dcb745ca0f66
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
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()
    {
    }
}