first commit

This commit is contained in:
ytc1012
2025-11-18 18:38:53 +08:00
commit bea9db4488
1582 changed files with 335346 additions and 0 deletions

View File

@@ -0,0 +1,287 @@
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);
}
}