游戏服务器---事件

本文探讨了游戏服务器中如何使用事件来关联不同模块,例如角色升级触发任务完成。通过定义事件名、事件接口和注解,扫描并管理事件,以及实现具体的事件类和抛出/执行事件的流程。
摘要由CSDN通过智能技术生成

  在游戏服务器上,不同模块之间会有关联,比如任务模块,等级的变化会触发不同任务的达成。此时,就要通过事件来关联两个模块。当角色升级的时候,抛出一个升级的事件,监听升级事件的模块就会被触发。

先定义事件名

public class EventNames {
   
	/** 玩家升级事件 */
	final static public String EVENT_ROLE_LEVEL_UP = "role_level_up";
}

定义事件接口,所有的事件集成统一一个接口。

public interface IEvent<T extends IEventArg> {
   
//事件要执行的方法
    void onEvent(T arg) throws Exception;
}

定义事件的注解,在开启服务的时候,扫描包下的所有事件注解,然后将注解中的事件名当做key值,对应的事件名下的所有事件集合,因为多个类监听了同一个事件,放入一个map中。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Event {
   

    String name() default "";

    int priority() default 0;

    String desc() default "";
}

对应的事件集合

//可以根据事件名,获取所有监听改事件的类,然后进行业务操作
private static Map<String, List<IEvent>> eventMap = new HashMap<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值