288 lines
8.1 KiB
TypeScript
288 lines
8.1 KiB
TypeScript
import { HttpConfig } from "../config/HttpConfig";
|
|
import { ServerConfig } from "../config/ServerConfig";
|
|
import { HttpManager } from "../network/http/HttpManager";
|
|
import { NetManager } from "../network/socket/NetManager";
|
|
import { Tools } from "../utils/Tools";
|
|
import LoginProxy from "./LoginProxy";
|
|
import { NetEvent } from "../network/socket/NetInterface";
|
|
import MapCommand from "../map/MapCommand";
|
|
import { LocalCache } from "../utils/LocalCache";
|
|
import DateUtil from "../utils/DateUtil";
|
|
import { EventMgr } from "../utils/EventMgr";
|
|
import { Md5 } from "../libs/crypto/md5";
|
|
|
|
export default class LoginCommand {
|
|
//单例
|
|
protected static _instance: LoginCommand;
|
|
public static getInstance(): LoginCommand {
|
|
if (this._instance == null) {
|
|
this._instance = new LoginCommand();
|
|
}
|
|
return this._instance;
|
|
}
|
|
|
|
public static destory(): boolean {
|
|
if (this._instance) {
|
|
this._instance.onDestory();
|
|
this._instance = null;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//数据model
|
|
protected _proxy: LoginProxy = new LoginProxy();
|
|
|
|
constructor() {
|
|
EventMgr.on(NetEvent.ServerCheckLogin, this.onServerConneted, this);
|
|
EventMgr.on(HttpConfig.register.name, this.onRegister, this);
|
|
EventMgr.on(ServerConfig.account_login, this.onAccountLogin, this);
|
|
EventMgr.on(ServerConfig.role_enterServer, this.onEnterServer, this);
|
|
EventMgr.on(ServerConfig.account_reLogin, this.onAccountRelogin, this);
|
|
EventMgr.on(ServerConfig.role_create, this.onRoleCreate, this);
|
|
EventMgr.on(ServerConfig.account_logout, this.onAccountLogout, this);
|
|
EventMgr.on(ServerConfig.account_robLogin, this.onAccountRobLogin, this)
|
|
EventMgr.on(ServerConfig.chat_login, this.onChatLogin, this)
|
|
|
|
}
|
|
|
|
public onDestory(): void {
|
|
EventMgr.targetOff(this);
|
|
}
|
|
|
|
//抢登录
|
|
private onAccountRobLogin(): void{
|
|
console.log("onAccountRobLogin")
|
|
EventMgr.emit("robLoginUI");
|
|
}
|
|
|
|
/**注册回调*/
|
|
private onRegister(data: any, otherData: any): void {
|
|
console.log("LoginProxy register:", data, otherData);
|
|
if (data.code == 0) {
|
|
this.accountLogin(otherData.username, otherData.password);
|
|
LocalCache.setLoginValidation(otherData);
|
|
}
|
|
}
|
|
|
|
/**登录回调*/
|
|
private onAccountLogin(data: any, otherData:any): void {
|
|
console.log("LoginProxy login:", data , otherData);
|
|
if (data.code == 0) {
|
|
// this._proxy.loginData = data.msg;
|
|
this._proxy.saveLoginData(data.msg);
|
|
LocalCache.setLoginValidation(otherData);
|
|
|
|
|
|
this.role_enterServer(this._proxy.getSession());
|
|
EventMgr.emit("loginComplete", data.code);
|
|
}
|
|
|
|
}
|
|
|
|
/**进入服务器回调*/
|
|
private onEnterServer(data: any,isLoadMap:boolean): void {
|
|
console.log("LoginProxy enter:", data,isLoadMap);
|
|
//没有创建打开创建
|
|
if (data.code == 9) {
|
|
EventMgr.emit("CreateRole");
|
|
DateUtil.setServerTime(data.msg.time);
|
|
} else {
|
|
if(data.code == 0){
|
|
this._proxy.saveEnterData(data.msg);
|
|
DateUtil.setServerTime(data.msg.time);
|
|
|
|
// var roleData = this._proxy.getRoleData();
|
|
// this.chatLogin(roleData.rid, data.msg.token, roleData.nickName);
|
|
|
|
//进入游戏
|
|
if(isLoadMap == true){
|
|
console.log("enterServerComplete");
|
|
MapCommand.getInstance().enterMap();
|
|
EventMgr.emit("enterServerComplete");
|
|
}else{
|
|
EventMgr.emit(NetEvent.ServerHandShake);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
/**重连回调*/
|
|
private onServerConneted(): void {
|
|
//重新连接成功 重新登录
|
|
var loginData = this._proxy.getLoginData();
|
|
var roleData = this._proxy.getRoleData();
|
|
console.log("LoginProxy conneted:", loginData,roleData);
|
|
|
|
if (loginData) {
|
|
this.account_reLogin(loginData.session);
|
|
}else{
|
|
EventMgr.emit(NetEvent.ServerHandShake);
|
|
}
|
|
}
|
|
|
|
/**重新登录回调回调*/
|
|
private onAccountRelogin(data: any): void {
|
|
//断线重新登录
|
|
console.log("LoginProxy relogin:", data);
|
|
if(data.code == 0){
|
|
// EventMgr.emit(NetEvent.ServerHandShake);
|
|
this.role_enterServer(this._proxy.getSession(),false);
|
|
}
|
|
}
|
|
|
|
/**创建角色回调*/
|
|
private onRoleCreate(data: any): void {
|
|
//重换成功再次调用
|
|
if (data.code == 0) {
|
|
this.role_enterServer(this._proxy.getSession());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**登出回调*/
|
|
private onAccountLogout(data: any): void {
|
|
//重换成功再次调用
|
|
if (data.code == 0) {
|
|
this._proxy.clear();
|
|
EventMgr.emit("enter_login");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//聊天登录
|
|
private onChatLogin(data: any): void{
|
|
console.log("onChatLogin:",data);
|
|
}
|
|
|
|
public get proxy(): LoginProxy {
|
|
return this._proxy;
|
|
}
|
|
|
|
/**
|
|
* register
|
|
* @param data
|
|
*/
|
|
public register(name: string, password: string) {
|
|
|
|
var pwd = Md5.encrypt(password);
|
|
var params = "username=" + name
|
|
+ "&password=" + pwd
|
|
+ "&hardware=" + Tools.getUUID();
|
|
|
|
console.log("register:", params);
|
|
var otherData = { username: name, password: password };
|
|
HttpManager.getInstance().doGet(HttpConfig.register.name, HttpConfig.register.url, params, otherData);
|
|
}
|
|
|
|
/**
|
|
* login
|
|
* @param data
|
|
*/
|
|
public accountLogin(name: string, password: string) {
|
|
|
|
var api_name = ServerConfig.account_login;
|
|
var pwd = Md5.encrypt(password);
|
|
|
|
var send_data = {
|
|
name: api_name,
|
|
msg: {
|
|
username: name,
|
|
password: pwd,
|
|
hardware: Tools.getUUID()
|
|
}
|
|
};
|
|
|
|
console.log("accountLogin:", send_data);
|
|
var otherData = { username: name, password: password };
|
|
NetManager.getInstance().send(send_data,otherData);
|
|
}
|
|
|
|
|
|
/**
|
|
* create
|
|
* @param uid
|
|
* @param nickName
|
|
* @param sex
|
|
* @param sid
|
|
* @param headId
|
|
*/
|
|
public role_create(uid: string, nickName: string, sex: number = 0, sid: number = 0, headId: number = 0) {
|
|
var api_name = ServerConfig.role_create;
|
|
var send_data = {
|
|
name: api_name,
|
|
msg: {
|
|
uid: uid,
|
|
nickName: nickName,
|
|
sex: sex,
|
|
sid: sid,
|
|
headId: headId
|
|
}
|
|
};
|
|
NetManager.getInstance().send(send_data);
|
|
}
|
|
|
|
|
|
public role_enterServer(session: string,isLoadMap:boolean = true) {
|
|
var api_name = ServerConfig.role_enterServer;
|
|
var send_data = {
|
|
name: api_name,
|
|
msg: {
|
|
session: session,
|
|
}
|
|
};
|
|
NetManager.getInstance().send(send_data,isLoadMap);
|
|
}
|
|
|
|
/**
|
|
* 重新登录
|
|
* @param session
|
|
*/
|
|
public account_reLogin(session: string) {
|
|
var api_name = ServerConfig.account_reLogin;
|
|
var send_data = {
|
|
name: api_name,
|
|
msg: {
|
|
session: session,
|
|
hardware: Tools.getUUID()
|
|
}
|
|
};
|
|
NetManager.getInstance().send(send_data);
|
|
}
|
|
|
|
|
|
/**
|
|
* logout
|
|
*/
|
|
public account_logout():void{
|
|
var api_name = ServerConfig.account_logout;
|
|
var send_data = {
|
|
name: api_name,
|
|
msg: {
|
|
|
|
}
|
|
};
|
|
NetManager.getInstance().send(send_data);
|
|
}
|
|
|
|
|
|
public chatLogin(rid:number, token: string, nick_name:string = ''):void{
|
|
var api_name = ServerConfig.chat_login;
|
|
var send_data = {
|
|
name: api_name,
|
|
msg: {
|
|
rid:rid,
|
|
token:token,
|
|
nickName:nick_name
|
|
}
|
|
};
|
|
|
|
console.log("send_data:", send_data);
|
|
NetManager.getInstance().send(send_data);
|
|
}
|
|
}
|