⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regmodel.java

📁 游戏说明
💻 JAVA
字号:
package com.tianxia.qipai.model.universal;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;
import com.tianxia.qipai.event.MainGameEvent;
import com.tianxia.qipai.model.socket.SocketInterface;
import com.tianxia.qipai.model.socket.SocketManager;
import com.tianxia.qipai.model.util.CommStructNode;
import com.tianxia.qipai.model.util.MudleDefine;
import com.tianxia.qipai.model.util.StringTokenizer;
import com.tianxia.qipai.view.universal.RegView;
import com.tianxia.qipai.event.UniGameEvent;
import com.tianxia.qipai.model.util.*;
public class RegModel implements SocketInterface{      //处理注册、登陆等的算法操作
	private boolean ifsave;     //是否保存cookies资料
	private static RegModel instance;
	private RegView regview;
	private SocketManager socketmanager = null;
	private CommStructNode commstructnode;   //通信结点
	private MainGameEvent maingameevent;
	private RecordStore recordstore = null;   //记录存储器
	private String version = "00-00";
	public RegModel() { 
		super();
		socketmanager = SocketManager.getInstance();
		//socketmanager = new SocketManager(true);
		maingameevent = new MainGameEvent();
		//服务器ADSL拨号环境测试,datagram://xiezhengyu.dynserv.com表示服务器域名,也可以以使用公网ip测试
		//http://www.dynserv.com/上可以申请域名,
		//socketmanager.init(this,"datagram://xiezhengyu.dynserv.com:5009");
		
		//模拟器本机测试环境
		socketmanager.init(this,"datagram://127.0.0.1:5009");
		
		// TODO 自动生成构造函数存根
	}
	
	public void init(RegView regview){
		this.regview = regview;
	}

	public static synchronized RegModel getInstance(){
		if(instance == null){
			instance = new RegModel();
		}
			return instance;
	}
	
	//接管socket返回的数据
	public void ToReciveSocketData(){
		socketmanager.resetSocInterface(this);
	}

	//游戏退出
	public void DoGameExit(CommStructNode commstructnode){
		this.commstructnode = commstructnode;
		StringBuffer packstring = new StringBuffer();
		packstring.append("000");
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(MudleDefine.UNIVERMUDLE);
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(UniOperateId.beexit);
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(commstructnode.getUserId());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPhonenum());
		socketmanager.sendpacket(packstring.toString(),false);
	}
	
	//登录处理方法 操作码为001
	public void DoLogin(CommStructNode commstructnode,boolean ifsave){
		this.commstructnode = commstructnode;
		this.ifsave = ifsave;
		StringBuffer packstring = new StringBuffer();
		packstring.append("000");
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(MudleDefine.UNIVERMUDLE);
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(UniOperateId.login );
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(commstructnode.getUserId());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPassWord());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(version);
		socketmanager.sendpacket(packstring.toString(),true);
	}
	
		
	//用户注册处理方法000
	public void DoReg(CommStructNode commstructnode){
		this.commstructnode = commstructnode;
		StringBuffer packstring = new StringBuffer();
		packstring.append("000");
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(MudleDefine.UNIVERMUDLE);
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(UniOperateId.reg );
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(commstructnode.getNickName());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPhonenum());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPassWord());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPicture());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getSex());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getAge());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getUserType());
		socketmanager.sendpacket(packstring.toString(),true);
	}
	
	//用户资料修改处理方法
	public void DoModify(CommStructNode commstructnode){
		this.commstructnode = commstructnode;
		StringBuffer packstring = new StringBuffer();
		packstring.append("000");
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(MudleDefine.UNIVERMUDLE);
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(UniOperateId.modify );
		packstring.append(UniversalDefine.DIVISION);
		packstring.append(commstructnode.getUserId());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getNickName());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPhonenum());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPassWord());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getPicture());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getSex());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getAge());
		packstring.append(UniversalDefine.SUBDIVISION);
		packstring.append(commstructnode.getUserType());
		socketmanager.sendpacket(packstring.toString(),true);
		
	}
	
	//处理服务器对用户登录请求的返回结果
	public void DoLoginResult(MainGameEvent e){
		
	}
	
//	处理服务器对用户注册请求的返回结果
	public void DoRegResult(MainGameEvent e){
		
	}
	
//	处理服务器对用户资料修改请求的返回结果
	public void DoModifyResult(MainGameEvent e){
		
	}
	
//	供socketmanager调用,表示连接线程已经启动
	public void BeginToConnect(){
		regview.handleEvent(UniGameEvent.BEGINTOCONNECT,maingameevent);
	}
	
	
	//供socketmanager调用,表示接收到数据
	public void RecvieData(String recpacket) {
		// TODO 自动生成方法存根
		StringTokenizer stringtokenizer = new StringTokenizer(recpacket, UniversalDefine.DIVISION);
		String errcode = "";
		String serviceid = "";
		String operateid = "";
		String body = "";
		try {
			if (stringtokenizer.hasMoreTokens()) {
				errcode = stringtokenizer.nextToken();   //取得错误号				
			}
			if (stringtokenizer.hasMoreTokens()) {
				serviceid = stringtokenizer.nextToken();   //取得业务号				
			}
			if (stringtokenizer.hasMoreTokens()) {
				operateid = stringtokenizer.nextToken();   //取得操作码
			}
			if (stringtokenizer.hasMoreTokens()) {
				body = stringtokenizer.nextToken();   //取得业务数据
			}
			if(serviceid.equals(SocketManager.ITORECONNECT)){//与服务器断开正准备重连
				regview.handleEvent(UniGameEvent.TORECONNECT,maingameevent);
			
			}else if(serviceid.equals(SocketManager.IRECONNECT)){//与服务器重连成功
				regview.handleEvent(UniGameEvent.RECONNECT,maingameevent);
				
			}else if(serviceid.equals(SocketManager.IDISCONNECT)){//无法重新连接的服务器
				regview.handleEvent(UniGameEvent.DISCONNECT,maingameevent);
			}
			if ( !serviceid.equals(MudleDefine.UNIVERMUDLE)){   //不是本模块需要处理的数据
				return;
			}
			
			if ( operateid.equals(UniOperateId.reg) ) {   //用户注册响应
				RegRespond(body);
			}else if( operateid.equals(UniOperateId.login ) ){   //用户登录响应
				LoginRespond(body);
			}else if( operateid.equals(UniOperateId.modify)){  //用户资料修改响应
				ModifyRespond(body);
			}else if( operateid.equals(UniOperateId.belogout)){  //用户被要求强迫注销
				BeLogoutRespond(body);
				
			}
	
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}
	

	//	用户注册响应
	public void RegRespond(String body){
		String succflag;
		StringTokenizer stringtokenizer = new StringTokenizer(body, ";");
		if (stringtokenizer.hasMoreTokens()) {
			succflag = stringtokenizer.nextToken();   //取得是否注册成功标志
			if ( succflag.equals("0")){  //用户注册成功
				if (stringtokenizer.hasMoreTokens()) {  
					commstructnode.setUserId(stringtokenizer.nextToken());
					maingameevent.setCommNode(commstructnode);
					regview.handleEvent(UniGameEvent.REGSUCCESSFUL,maingameevent);
				}
			}else{  //用户注册失败
				maingameevent.setByName("errinfo","系统忙,请稍后再试");
				regview.handleEvent(UniGameEvent.REGFAIL,maingameevent);
			}
			
		}
	}
	
//	用户登录响应
	public void LoginRespond(String body){
		String succflag="1";
		String vflag;
		StringTokenizer stringtokenizer = new StringTokenizer(body, ";");
		if (stringtokenizer.hasMoreTokens()) {
			succflag = stringtokenizer.nextToken();   //取得是否登录成功标志
			if ( succflag.compareTo("0")==0){  //用户登录成功
				if (stringtokenizer.hasMoreTokens()) {  
						vflag = stringtokenizer.nextToken();   //取得升级标志
						if( vflag.compareTo("2") == 0 ){   //必须升级
							regview.handleEvent(UniGameEvent.NEEDUPGRADE,maingameevent);
						}
						else{
							if (stringtokenizer.hasMoreTokens()) {   //取昵称
								commstructnode.setNickName(stringtokenizer.nextToken());
							}
							if (stringtokenizer.hasMoreTokens()) {  //取头像
								commstructnode.setPicture(stringtokenizer.nextToken());
							}
							if (stringtokenizer.hasMoreTokens()) {  //取性别
								commstructnode.setSex(Integer.parseInt(stringtokenizer.nextToken()));
							}
							if (stringtokenizer.hasMoreTokens()) {  //取用户类型
								commstructnode.setUserType(Integer.parseInt(stringtokenizer.nextToken()));
							}
							if (stringtokenizer.hasMoreTokens()) {  //取年龄
								commstructnode.setAge(Integer.parseInt(stringtokenizer.nextToken()));
							}
							if (stringtokenizer.hasMoreTokens()) {  //取游戏币
								commstructnode.setGameMoney(stringtokenizer.nextToken());
							}
						}
						if(ifsave){   //保存cookies
							try {
								if(recordstore == null){
									recordstore = RecordStore.openRecordStore("userdata",true);
								}
								ByteArrayOutputStream outputstream = new ByteArrayOutputStream();
								DataOutputStream outputdatastream = new DataOutputStream(outputstream);
								outputdatastream.writeUTF(commstructnode.getUserId());
								outputdatastream.writeUTF(commstructnode.getPassWord());
								outputdatastream.flush();
								byte [] outputrecord = outputstream.toByteArray();
								if(recordstore.getNumRecords() == 0){
									recordstore.addRecord(outputrecord,0,outputrecord.length);
								}
								else{
									recordstore.setRecord(1,outputrecord,0,outputrecord.length);   //第一条记录为用户的用户名和密码
								}
								
								
							} catch (RecordStoreFullException e) {
								// TODO 自动生成 catch 块
								e.printStackTrace();
							} catch (RecordStoreNotFoundException e) {
								// TODO 自动生成 catch 块
								e.printStackTrace();
							} catch (RecordStoreException e) {
								// TODO 自动生成 catch 块
								e.printStackTrace();
							}  catch (IOException e) {
								// TODO 自动生成 catch 块
								e.printStackTrace();
							}
						}
						maingameevent.setCommNode(commstructnode);
						regview.handleEvent(UniGameEvent.LOGINSUCCESSFUL,maingameevent);
					}
				}
				else{  //用户登录失败
					maingameevent.setCommNode(commstructnode);
					maingameevent.setByName("errinfo","系统忙,请稍后再试");
					regview.handleEvent(UniGameEvent.LOGINFAIL,maingameevent);
				}
		}
	
	}
	
//	用户资料修改响应
	public void ModifyRespond(String body){
		String succflag;
		StringTokenizer stringtokenizer = new StringTokenizer(body, ";");
		if (stringtokenizer.hasMoreTokens()) {
			succflag = stringtokenizer.nextToken();   //取得资料修改是否成功标志
			if ( succflag.equals("0") ){  //资料修改成功
				
					commstructnode.setUserId(stringtokenizer.nextToken());
					maingameevent.setCommNode(commstructnode);
					regview.handleEvent(UniGameEvent.MODIFYSUCCESSFUL,maingameevent);
				}
			}else{  //失败
				maingameevent.setByName("errinfo","系统忙,请稍后再试");
				regview.handleEvent(UniGameEvent.MODIFYFAIL,maingameevent);
			}
	}
	
	//用户被强行注销
	public void BeLogoutRespond(String body){
		String reasonstr = "";
		StringTokenizer stringtokenizer = new StringTokenizer(body, ";");
		if (stringtokenizer.hasMoreTokens()) {
			reasonstr = stringtokenizer.nextToken();  
		}
		if(reasonstr.equals("")){
			reasonstr = "此帐号已在别处登陆!";
		}
		maingameevent.setByName("reasonstr",reasonstr);
		regview.handleEvent(UniGameEvent.BELOGOUT,maingameevent);
	}
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -