当前位置: 首页 > news >正文

Lua 事件触发机制(注册,触发)

日常工作中经常会用到触发机制,这里就提供一个注册触发机制,在代码中在也不用专门去调用各个模块的接口;只需要触发即可,触发后会自动调用接口

直接上代码


local _EventHandle = {};
_EventHandle.listenerHandleIndex = 0
_EventHandle.listenersList = {}function _EventHandle:AddEventListener(eventName, listener)eventName = string.upper(eventName);if self.listenersList[eventName] == nil thenself.listenersList[eventName] = {};endself.listenerHandleIndex = self.listenerHandleIndex + 1;self.listenersList[eventName][self.listenerHandleIndex] = listener;return self.listenerHandleIndex;
endfunction _EventHandle:dispatchEvent(event)event.name = string.upper(event.name);local _eventName = event.name;if self.listenersList[_eventName] == nil then return; endfor _index, _listener in pairs(self.listenersList[_eventName]) dolocal ok, _ret = Try(_listener, event)if not ok thenG_logger:warn_format("[_EventHandle:dispatchEvent] Failed, event:%s, err:%s", _eventName, tostring(_ret))elseif _ret == "__REMOVE__" thenself.listenersList[_eventName][_index] = nil;endend
endfunction _EventHandle:removeEventListener(eventName, key)eventName = string.upper(eventName);if self.listenersList[eventName] == nil then return; endfor _index, _listener in pairs(self.listenersList[eventName]) doif key == _index or key == _listener thenself.listenersList[eventName][_index] = nil;break;endend
endfunction _EventHandle:removeAllEventListenersForEvent(eventName)self.listenersList[string.upper(eventName)] = nil;
endfunction _EventHandle:removeAllEventListeners()self.listenersList = {};
endreturn _EventHandle;

AddEventListener:注册接口

dispatchEvent:触发接口

其他的接口都是移除接口

调用

注册:Event:AddEventListener("Event:try_unlock_idcard", __on_event_try_unlock_idcard),__on_event_try_unlock_idcard是回调函数

触发:Event:dispatchEvent({name = "Event:try_unlock_idcard", player = avatar_part.owner, data_type = HotPot_Type.flash_avatar_part_count, value = avatar_part.flash_count})

相关文章:

Lua 事件触发机制(注册,触发)

日常工作中经常会用到触发机制,这里就提供一个注册触发机制,在代码中在也不用专门去调用各个模块的接口;只需要触发即可,触发后会自动调用接口 直接上代码 local _EventHandle {}; _EventHandle.listenerHandleIndex 0 _EventH…...

c++ 并发与多线程(12)线程安全的单例模式-1

一、什么是线程安全 在拥有共享数据的多条数据并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。 二、如何保证线程安全 法1、给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用; 法2、让线…...

Python学习笔记--迭代

一、迭代 什么叫做迭代? 比如在 Java 中,我们通过 List 集合的下标来遍历 List 集合中的元素,在 Python 中,给定一个 list 或 tuple,我们可以通过 for 循环来遍历这个 list 或 tuple ,这种遍历就是迭代。…...

idea免费插件分享

分享一些在开发中常用到的idea插件,都是一些我自己常用的,希望对各位程序员有帮助吧。 1、Chinese Language 汉化插件:中文语言包将为您的 IntelliJ IDEA, AppCode, CLion, DataGrip, GoLand, PyCharm, PhpStorm, RubyMine, WebStorm, 和Rid…...

Pytorch使用torch.utils.data.random_split拆分数据集,拆分后的数据集状况

对于这个API,我最开始的预想是从 猫1猫2猫3猫4狗1狗2狗3狗4 中分割出 猫1猫2狗4狗1 和 猫4猫3狗2狗3 ,但是打印结果和我预想的不一样 数据集文件的存放路径如下图 测试代码如下 import torch import torchvisiontransform torchvision.transforms.Compose([torchvision.tran…...

每日一练 | 华为认证真题练习Day122

1、路由器所有的接口属于同一个广播域。 A. 对 B. 错 2、下列配置默认路由的命令中,正确的是()。 A. [Huawei]ip route-static 0.0.0.0 0.0.0.0 192.168.1.1 B. [Huawei-Serial0]ip route-static 0.0.0.0 0.0.0.0 0.0.0.0 C. [Huawei]ip…...

SQL sever中函数(2)

目录 一、函数分类及应用 1.1标量函数(Scalar Functions): 1.1.1格式 1.1.2示例 1.1.3作用 1.2表值函数(Table-Valued Functions): 1.2.1内联表值函数(Inline Table-Valued Functions&am…...

win10专业版驱动开发

我使用的系统版本如何下: 使用的visual studio为VS2019,使用的SDK,WDK如下: 在visual studio单个组件里选择SDK10.0.018362.0 在WDK里面选择版本为: 下载链接如下: 以前的 WDK 版本和其他下载 - Windows drivers | Microsoft Le…...

【JavaEE】网络编程---TCP数据报套接字编程

一、TCP数据报套接字编程 1.1 ServerSocket API ServerSocket 是创建TCP服务端Socket的API ServerSocket 构造方法: ServerSocket 方法: 1.2 Socket API Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法&…...

用 Go 访问 MySql 数据库

所有代码样例 package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql" )var db *sql.DB// 初始化连接 func initDB() (err error) {db, err sql.Open("mysql", "root:mm..1213tcp(127.0.0.1:3306)/chapte…...

mac 升级node到指定版本

node版本14.15.1升级到最新稳定版18.18.2 mac系统 先查看一下自己的node版本 node -v开始升级 第一步 清除node的缓存 sudo npm cache clean -f第二步 安装n模块【管理模块 n是管理 nodejs版本】 sudo npm install -g n第三步升级node sudo n stable // 把当前系统的 Node…...

欢迎进QQ群讨论交流

...

C语言解决八皇后问题

八皇后问题是指在一个88的棋盘上&#xff0c;放置8个皇后&#xff0c;使得任意两个皇后都不能在同一行、同一列或同一斜线上。这是一个著名的递归问题。下面是一个C语言实现八皇后问题的代码&#xff0c;以及对代码的讲解。 #include <stdio.h>int board[8][8] {0}; //…...

springboot集成canal,将数据发送至接口

前置条件&#xff1a; mysql开启binlog日志部署canal服务 Springboot代码&#xff1a; 接口工具类&#xff1a; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; imp…...

Selenum八种常用定位(案例解析)

Selenium是一个备受推崇的工具。它有着丰富的功能&#xff0c;让我们能够与网页互动&#xff0c;执行各种任务&#xff0c;能为测试工程师和开发人员提供了很大的便利。 要充分利用Selenium&#xff0c;就需要了解如何正确定位网页上的元素。 接下来我将带大家共同探讨Seleni…...

Web前端接入Microsoft Azure AI文本翻译

Azure 文本翻译是 Azure AI 翻译服务的一项基于云的 REST API 功能。 文本翻译 API 支持实时快速准确地进行源到目标文本翻译。 文本翻译软件开发工具包 (SDK) 是一组库和工具&#xff0c;可用于轻松地将文本翻译 REST API 功能集成到应用程序中。 文本翻译 SDK 可跨 C#/.NET、…...

容联七陌助力鱼跃医疗升级智能联络中心,让客户服务更“鱼跃”

在当今高度竞争的市场环境中&#xff0c;企业的客户服务质量对于维护品牌形象和保持竞争优势至关重要。而随着人工智能、大数据等技术快速发展&#xff0c;智能化客户服务正在成为各行各业发展的重要部分。 鱼跃医疗是一家致力于“用科技律动生命"的国内知名医疗制造企业…...

【Redis系列】在Centos7上安装Redis5.0保姆级教程!

哈喽&#xff0c; 大家好&#xff0c;我是小浪。那么最近也是在忙秋招&#xff0c;很长一段时间没有更新文章啦&#xff0c;最近呢也是秋招闲下来&#xff0c;当然秋招结果也不是很理想&#xff0c;嗯……这里就不多说啦&#xff0c;回归正题&#xff0c;从今天开始我们就开始正…...

线性代数-Python-03:矩阵的变换 - 手写Matrix Transformation及numpy中的用法

文章目录 一、代码仓库二、旋转矩阵的推导及图形学中的矩阵变换2.1 让横坐标扩大a倍&#xff0c;纵坐标扩大b倍2.2 关于x轴翻转2.3 关于y轴翻转2.4 关于原点翻转&#xff08;x轴&#xff0c;y轴均翻转&#xff09;2.5 沿x方向错切2.6 沿y方向错切2.7 旋转2.8 单位矩阵2.9 矩阵的…...

【单片机基础】按键状态机实现短按、长按、双击、三击和N击

下载地址&#xff1a; 【CSDNNaiva】源码&#xff1a;HK32F030M-按键扫描-短按长按检测【CSDNNaiva】源码&#xff1a;HK32F030M-ADC-EXTI-TM1624-USART-EEPROM-TiMBase-按键长按(231024) 参考资料 [1] 【CSDNPillarPeng】【按键】[独立按键] - 1&#xff1a; 单击&#xff0c…...

VASP和QE能带图画不好?可能是你的Python数据处理踩了这些坑

VASP和QE能带图绘制中的Python数据处理陷阱与解决方案 在材料计算领域&#xff0c;能带结构图是理解电子性质的关键可视化工具。许多研究人员在使用VASP或Quantum ESPRESSO(QE)完成第一性原理计算后&#xff0c;往往会选择Python进行数据处理和绘图。然而&#xff0c;这个看似标…...

OpenWebUI智能管道:连接本地AI模型与高性能推理后端

1. 项目概述&#xff1a;一个连接OpenWebUI与本地AI模型的智能管道最近在折腾本地大语言模型&#xff08;LLM&#xff09;的朋友&#xff0c;估计都绕不开OpenWebUI&#xff08;原名Ollama WebUI&#xff09;这个项目。它提供了一个极其美观、功能强大的Web界面&#xff0c;让我…...

别再给Claude送钱了!7个硬核技巧让Token消耗爆降80%,我亲测有效

文章目录前言1. 杀鸡不用牛刀&#xff1a;根据任务复杂度切换模型&#xff0c;别用导弹打蚊子2. 把CLAUDE.md当“项目宪法”&#xff0c;别当“信息垃圾场”3. 把脏活累活交给Subagent&#xff0c;但别滥用4. 精准打击&#xff01;明确指定文件和行号&#xff0c;别让Claude大海…...

雷达接收机频谱稳定与纯度:核心指标、测试方法与设计实战

1. 项目概述&#xff1a;为什么频谱稳定性和纯度是雷达的“生命线”&#xff1f; 在雷达系统里&#xff0c;我们常把发射功率、天线增益、接收机灵敏度这些指标挂在嘴边&#xff0c;因为它们直接决定了雷达能“看”多远。但今天要聊的“接收机频谱稳定性和纯度”&#xff0c;就…...

高校图书馆未公开的Perplexity学术协议:解锁DOI深度解析、跨库引文追踪与灰色文献捕获权限

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;高校图书馆未公开的Perplexity学术协议全景解析 Perplexity学术协议并非官方发布的标准规范&#xff0c;而是国内部分高校图书馆在采购或对接Perplexity Pro教育版API服务时&#xff0c;经谈判形成的定制化协…...

从SystemTap到ftrace:为什么Linux内核‘原装’的追踪工具更适合日常调试?

从SystemTap到ftrace&#xff1a;为什么Linux内核原生追踪工具更适合日常调试&#xff1f; 在Linux内核开发与性能优化领域&#xff0c;追踪工具的选择往往决定了问题排查的效率与系统稳定性。当面对SystemTap、eBPF/BCC和ftrace等工具时&#xff0c;资深开发者常陷入选择困境—…...

体验Taotoken官方价折扣与活动价带来的实际成本节省

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 体验Taotoken官方价折扣与活动价带来的实际成本节省 对于开发者与团队而言&#xff0c;大模型API的调用成本是项目预算中不可忽视的…...

长期使用Taotoken聚合服务在模型路由与容灾方面的实际体感

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken聚合服务在模型路由与容灾方面的实际体感 在持续数月的项目开发过程中&#xff0c;我们团队将多个AI模型调用统一…...

Citra 3DS模拟器:在电脑上重温任天堂掌机经典的完整指南 [特殊字符]

Citra 3DS模拟器&#xff1a;在电脑上重温任天堂掌机经典的完整指南 &#x1f3ae; 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/GitHub_Trending/ci/citra 想要在Windows、macOS或Linux电脑上体验《精灵宝可梦XY》、《塞尔达传说&am…...

整合ssm框架,详细讲解

今天针对 SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架整合展开了学习&#xff0c;学习内容如下&#xff1a;我们在进行 JavaEE 开发时&#xff0c;为了实现解耦和提高开发效率&#xff0c;通常会采用 SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架整合的…...