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

📄 personaction.java

📁 声色幻想webgame 多人联网webgame-javaRPG游戏 实现 买东西 仓库 聊天 打怪 交易 功能! 1.配置java环境
💻 JAVA
字号:
/**
 * @(#)PersonAction.java
 * 
 * @author soda E-mail:junaisy@163.com
 * @version 1.0
 * <br>Program Name: FlashNetGame
 * <br>Date: 2007-4-18
 */
package org.game.blue.role.people;

import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import org.blue.remote.Client;
import org.game.context.Context;

public class PersonAction 
{
	private Context context;
	
	public PersonAction()
	{
		context = Context.getContext();
	}
	/**
	 * 接受当前用户发生的动作请求,然后把该方法名广播给所在区的所有用户
	 * @param scene:当前用户所在的场景
	 * @param userName:当前用户名
	 * @param method:当前用户发生动作的方法名称
	 */
	public void userAction(String scene,String userName,String method)
	{
		System.out.println("PersonAction-> scene:" + scene);
		System.out.println("PersonAction-> userName:" + userName);
		System.out.println("PersonAction-> method:" + method);
		Client user = context.getClient(userName);
		Map<String,Client> temp = context.getsceneMap(scene);
		//call其他用户
		if(temp != null)
		{
			for(Iterator<Client> it = temp.values().iterator(); it.hasNext();)
			{
				Client client = it.next();
				//除去自己的其他用户
				if(user != client)
				{
					client.call("PersonAction","userAction");
					client.setParam(userName);
					client.setParam(method);
					client.send();
				}
			}
		}
	}
	/**
	 * 用户登陆成功,同时把信息反馈给当前的所有用户
	 * @param userName
	 */
	public void loginSuccess(String scene, String userName, String userSculpt)
	{
		System.out.println("loginSuccess-> scene:" + scene);
		System.out.println("loginSuccess-> userName:" + userName);
		//呼叫其他用户,通知该用户登陆事件
		System.out.println("通知成功!");
		Map<String,Client> tempMap = context.getsceneMap(scene);
		//向同个场景的用户发送当前登陆用户的信息
		if(tempMap.size() > 0)
		{
			for(Iterator<Client> it = tempMap.values().iterator(); it.hasNext();)
			{
				Client temp = it.next();
				System.out.println("loginSuccess-> client:" + temp);
				temp.call("PersonAction","userLogin");
				temp.setParam(userName);
				temp.setParam(userSculpt);
				temp.send();
			}
		}
		//把当前用户添进当前场景里
		Client client = context.getClient(userName);
		tempMap.put(userName, client);
	}
	
	public void userCome(String callName,String userName, String userSculpt, double x, double y)
	{
		Client client = context.getClient(callName);
		client.call("PersonAction", "userCome");
		client.setParam(userName);
		client.setParam(userSculpt);
		client.setParam(x);
		client.setParam(y);
		client.send();
	}
	
	/**
	 * 当有用户改变场景时调用该方法
	 * @param oldScene
	 * @param sceneName
	 * @param userName
	 * @param userSculpt
	 */
	public void changeScene(String oldScene,String sceneName,String userName, String userSculpt)
	{
		System.out.println("changeScene-> scene:" + oldScene);
		//在其他客户端退出该用户
		Map<String,Client> tempMap = context.getsceneMap(oldScene);
		//删除当前用户
		tempMap.remove(userName);
		if(tempMap.size() > 0)
		{
			for(Iterator<Client> it = tempMap.values().iterator(); it.hasNext();)
			{
				Client temp = it.next();
				System.out.println("changeScene-> client:" + temp);
				temp.call("PersonAction","userExit");
				temp.setParam(userName);
				temp.send();
			}
		}
		//呼叫同现在场景的玩家接受现在用户的信息
		loginSuccess(sceneName,userName,userSculpt);
	}
	/**
	 * 接受用户的聊天信息
	 * @param userName
	 * @param fiendName
	 * @param msg
	 */
	public void friendSpeak(String userName,String fiendName,String msg)
	{
		Client client = context.getClient(fiendName);
		client.call("PersonAction", "friendSpeak");
		client.setParam(userName);
		client.setParam(msg);
		client.send();
	}
	
	/**
	 * 接受客户的说话内容和参数
	 * @param sceneName
	 * @param userName
	 * @param msg
	 */
	public void userSpeak(String sceneName,String userName,String msg)
	{
		Map<String,Client> tempMap = context.getsceneMap(sceneName);
		if(tempMap.size() > 1)
		{
			Client client = context.getClient(userName);
			for(Iterator<Client> it = tempMap.values().iterator(); it.hasNext();)
			{
				Client temp = it.next();
				//防止发送给自己
				if(temp != client)
				{
					//System.out.println("changeScene-> client:" + temp);
					temp.call("PersonAction","userSpeak");
					temp.setParam(userName);
					temp.setParam(msg);
					temp.send();
				}
			}
		}
	}
	/**
	 * 当用户说话时,该方法被客户端呼叫
	 */
	public void userChat(String userName,String face,String toUser,String msg,boolean flag)
	{
		Map map = context.getUserMap();
		int len = map.size();
		if(len > 1)
		{
			if(flag)
			{
				msg = userName + "偷偷地对你说:" + msg;
				Client temp = (Client)map.get(toUser);
				//呼叫特定客户端更新聊天信息的方法
				temp.call("PersonAction","updateInfo");
				temp.setParam(msg);
				temp.send();
			}
			else
			{
				msg = userName + face + "地对" + toUser + "说:" + msg;
				Client client = context.getClient(userName);
				for(Iterator it = map.values().iterator(); it.hasNext();)
				{
					Client temp = (Client)it.next();
					//禁止给自己再次发信息
					if(client != temp)
					{
						//呼叫所有客户端更新聊天信息的方法
						temp.call("PersonAction","updateInfo");
						temp.setParam(msg);
						temp.send();
					}
				}
			}
		}
	}
}

⌨️ 快捷键说明

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