From d955b0edaea8dadb8b92cae2406525877c660381 Mon Sep 17 00:00:00 2001 From: HexDolphin <327970128@qq.com> Date: Sun, 13 Mar 2022 21:54:31 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=8A=B5=E6=8A=BC=E7=89=A9=E5=93=81?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xLua/module/Item/Event/init.lua | 17 ++- xLua/module/Unit/event/init.lua | 6 +- xLua/module/Unit/event/pawnItem.lua | 164 ++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+), 13 deletions(-) create mode 100644 xLua/module/Unit/event/pawnItem.lua diff --git a/xLua/module/Item/Event/init.lua b/xLua/module/Item/Event/init.lua index 7e1448a..f6c2b9b 100644 --- a/xLua/module/Item/Event/init.lua +++ b/xLua/module/Item/Event/init.lua @@ -3,10 +3,8 @@ '物品-被使用', '物品-被获得', '物品-被丢弃', - - ---未完成 '物品-被抵押', + ]] ---@class item local cItem = item.cItem @@ -21,7 +19,7 @@ end -- 对[物品]自己注册事件 ----@param event_name string 事件名: 物品-被丢弃 物品-被获得 物品 详情查看module\item\event +---@param event_name string 事件名: 物品-被丢弃 物品-被获得 物品-被抵押 详情查看module\item\event ---@param func fun( event:event, params:table ) 回调函数 框架自带事件通常只有两个参数 1个event 一个table用于传参 ---@return event|nil 如果事件不存在返回nil function cItem:event( event_name, func ) @@ -44,7 +42,7 @@ end --注册[任意物品]事件 ----@param event_name string 事件名: 物品-初始化 物品-销毁数据 物品-被丢弃 物品-被获得 详情查看module\item\event +---@param event_name string 事件名: 物品-初始化 物品-销毁数据 物品-被丢弃 物品-被获得 物品-被抵押 详情查看module\item\event ---@param func fun( event:event, params:table ) 回调函数 框架自带事件通常只有两个参数 1个event 一个table用于传参 ---@return event function item:event_any( event_name, func ) @@ -63,7 +61,7 @@ function item:event_any( event_name, func ) return event end --注册[物品id]事件 ----@param event_name string 事件名: 物品-初始化 物品-销毁数据 物品-被丢弃 物品-被获得 详情查看module\item\event +---@param event_name string 事件名: 物品-初始化 物品-销毁数据 物品-被丢弃 物品-被获得 物品-被抵押 详情查看module\item\event ---@param id string afac ---@param func fun( event:event, params:table ) 回调函数 框架自带事件通常只有两个参数 1个event 一个table用于传参 ---@return event|nil @@ -89,6 +87,7 @@ end require 'xLua.module.unit.event.death' require 'xLua.module.unit.event.damaged' ---require 'xLua.module.unit.event.useItem' ---require 'xLua.module.unit.event.pickItem' -require 'xLua.module.unit.event.dropItem' \ No newline at end of file +require 'xLua.module.unit.event.useItem' +require 'xLua.module.unit.event.pickItem' +require 'xLua.module.unit.event.dropItem' +require 'xLua.module.unit.event.pawnItem' diff --git a/xLua/module/Unit/event/init.lua b/xLua/module/Unit/event/init.lua index 2510744..31f70b5 100644 --- a/xLua/module/Unit/event/init.lua +++ b/xLua/module/Unit/event/init.lua @@ -5,6 +5,7 @@ '单位-使用物品', '单位-获得物品', '单位-丢弃物品', + '单位-抵押物品', ----------------后面的咕咕咕当中-------------- '单位-出售单位', '单位-出售物品', @@ -13,10 +14,6 @@ '单位-学习技能', '单位-升级', - - '单位-抵押物品', - - '单位-发动技能', ]] ---@class unit @@ -113,5 +110,6 @@ require 'xLua.module.unit.event.damaged' require 'xLua.module.unit.event.useItem' require 'xLua.module.unit.event.pickItem' require 'xLua.module.unit.event.dropItem' +require 'xLua.module.unit.event.pawnItem' require 'xLua.module.unit.event.choose' \ No newline at end of file diff --git a/xLua/module/Unit/event/pawnItem.lua b/xLua/module/Unit/event/pawnItem.lua new file mode 100644 index 0000000..6b9bdb0 --- /dev/null +++ b/xLua/module/Unit/event/pawnItem.lua @@ -0,0 +1,164 @@ +local group = require "module.Unit.extends.group" +--事件名 一般顺序都是 任意单位事件 -> id事件 -> 单位事件 +-- 主动方事件 -> 被动方事件 +local eventName_active = '单位-抵押物品' --主动方 事件名 +local eventName_passive = '物品-被抵押' --被动方 事件名 + +--主要事件 也就是魔兽实际的事件 +local mainEvent = eventName_active + +local pawnItem = eventpool:new( eventName_active ) +local itemPawned = eventpool:new( eventName_passive ) + +local switchAny = 0 +local idListUnit = {} +local evtInit +local onInit + +local cj = cj +local unit = unit +local GetTriggerUnit = cj.GetTriggerUnit +local GetSoldItem = cj.GetSoldItem +local TriggerRegisterUnitEvent = cj.TriggerRegisterUnitEvent +local CONST_UNIT_EVENT = cj.EVENT_UNIT_PAWN_ITEM + +--------------------- +-- 触发事件分发 +--------------------- + +local action = function () + local u = unit:h2o( GetTriggerUnit() ) + local it = item:h2o( GetSoldItem() ) + + local params = { + + unit = u , + item = it , + + } + + unit:update( eventName_active, params ) --任意单位事件 + pawnItem:update( u.id, params ) --id事件 + pawnItem:update( u, params ) + + + item:update( eventName_passive, params ) + itemPawned:update( it.id, params ) + itemPawned:update( it, params ) + +end + +local trg = trigger:new( action ) + +--------------------- +-- 注册与排泄 +--------------------- + +---@param u unit +---@param Private_reReg bool 重新注册时跳过检测 强行注册 +local function regEvent(u,Private_reReg) + if Private_reReg then + goto reReg + end + --检测是否已注册 + if u.events[mainEvent] then + return + end + u.events[mainEvent] = true + ::reReg:: + TriggerRegisterUnitEvent( trg.handle, u.handle, CONST_UNIT_EVENT ) +end + +--- 重新注册:排泄事件 +local reReg = pawnItem:new( '重新注册事件' ) +reReg.on_update = function (event, params) + trg:del() --删除触发器重新创建:排泄所有事件 + trg = trigger:new(action) + --重新为单位注册事件 + group:enum(function (u) + if u.events[mainEvent] then + regEvent( u, true ) + end + end) +end + +--------------------- +-- 初始化事件 +--------------------- + +local enable +enable = function () + evtInit = unit:event_any( '单位-初始化', onInit ) + evtInit.on_update = onInit + enable = function () end + --注册已存在的所有单位 + group:enum(function (u) + regEvent( u ) + end) +end +onInit = function (event, params) + + --2仅 id事件 + if switchAny == 2 then + if not idListUnit[params.unit.id] then + return + end + end + local u = params.unit + regEvent( u ) + +end + +--------------------- +-- 接收器 +--------------------- + +--收到注册:单位-抵押物品 +local reg_unit = pawnItem:new( '注册事件' ) +reg_unit.on_update = function ( event, params ) + local type = params.type + if type == 'unit' then + local u = params.unit + --注册事件 + regEvent( u ) + --返回一个事件 + params.ret = pawnItem:new( u ) + --记录进单位对象中。单位销毁时方便销毁事件 + table_insert(u.events, params.ret) + elseif type == 'any' then + --注册id类别和任意单位时启用初始化事件捕捉 + switchAny = 1 + enable() + else--if type == 'id' then + if switchAny == 0 then + switchAny = 2 + end + enable() + idListUnit[params.id] = true + params.ret = pawnItem:new( params.id ) + end + +end + + + +--收到注册:物品-被抵押 +local reg_item = itemPawned:new( '注册事件' ) +reg_item.on_update = function (event, params ) + local type = params.type + + if type == 'item' then + local it = params.item + --返回一个事件 + params.ret = itemPawned:new( it ) + table_insert(it.events, params.ret) + elseif type == 'id' then + params.ret = itemPawned:new( params.id ) + end + + --要捕捉物品被抵押就得给所有单位上抵押事件 + switchAny = 1 + enable() +end + + -- Gitee From 79ff931123330b630822af8b7eb9e7f0edcfebd9 Mon Sep 17 00:00:00 2001 From: HexDolphin <327970128@qq.com> Date: Sun, 13 Mar 2022 22:48:28 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=8E=A9=E5=AE=B6?= =?UTF-8?q?=E9=BB=84=E9=87=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xLua/module/Player/init.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xLua/module/Player/init.lua b/xLua/module/Player/init.lua index 176c587..eb07d2f 100644 --- a/xLua/module/Player/init.lua +++ b/xLua/module/Player/init.lua @@ -143,6 +143,15 @@ function cPlayer:pressKey(key) end end +--增加玩家 黄金 +function cPlayer:addGold(gold) + cj.SetPlayerState( + self.handle, + cj.PLAYER_STATE_RESOURCE_GOLD, + cj.GetPlayerState(self.handle,cj.PLAYER_STATE_RESOURCE_GOLD) + gold + ) +end + --增加玩家 木材 function cPlayer:addLumber(lumber) cj.SetPlayerState( -- Gitee From 41a3baa514d682520f10e12826261ea5eb6082fd Mon Sep 17 00:00:00 2001 From: HexDolphin <327970128@qq.com> Date: Sun, 13 Mar 2022 22:50:28 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=8D=95=E4=BD=8D=E5=87=BA=E5=94=AE/?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E7=89=A9=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xLua/module/Item/init.lua | 1 + xLua/module/Unit/event/buy&sellItem.lua | 180 ++++++++++++++++++++++++ xLua/module/Unit/event/init.lua | 8 +- 3 files changed, 187 insertions(+), 2 deletions(-) create mode 100644 xLua/module/Unit/event/buy&sellItem.lua diff --git a/xLua/module/Item/init.lua b/xLua/module/Item/init.lua index 186d8f2..aaa35bc 100644 --- a/xLua/module/Item/init.lua +++ b/xLua/module/Item/init.lua @@ -144,6 +144,7 @@ function module:h2o( h ) local iid = cj.GetItemTypeId( h ) local obj = module:generate( { id = base.sid( iid ) } ) obj:bind_handle( h ) + obj:init() return obj end diff --git a/xLua/module/Unit/event/buy&sellItem.lua b/xLua/module/Unit/event/buy&sellItem.lua new file mode 100644 index 0000000..6875737 --- /dev/null +++ b/xLua/module/Unit/event/buy&sellItem.lua @@ -0,0 +1,180 @@ +local group = require "module.Unit.extends.group" +--事件名 一般顺序都是 任意单位事件 -> id事件 -> 单位事件 +-- 主动方事件 -> 被动方事件 +local eventName_active = '单位-出售物品' --主动方 事件名 +local eventName_passive = '单位-购买物品' --被动方 事件名 + +--主要事件 也就是魔兽实际的事件 +local mainEvent = eventName_active + +local sellItem = eventpool:new( eventName_active ) +local itemSold = eventpool:new( eventName_passive ) + +local switchAny = 0 +local idListUnit = {} +local evtInit +local onInit + +local cj = cj +local unit = unit +local GetBuyingUnit = cj.GetBuyingUnit +local GetSellingUnit = cj.GetSellingUnit +local GetSoldItem = cj.GetSoldItem +local TriggerRegisterUnitEvent = cj.TriggerRegisterUnitEvent +local CONST_UNIT_EVENT = cj.EVENT_UNIT_SELL_ITEM + +--------------------- +-- 触发事件分发 +--------------------- + +local action = function () + local u = unit:h2o( GetSellingUnit() ) + local it = item:h2o( GetSoldItem() ) + + local params = { + + unit = u , + item = it , + + } + + unit:update( eventName_active, params ) --任意单位事件 + sellItem:update( u.id, params ) --id事件 + sellItem:update( u, params ) + + u = unit:h2o( GetBuyingUnit() ) + + local params = { + + unit = u , + item = it , + + } + + unit:update( eventName_passive, params ) + itemSold:update( u.id, params ) + itemSold:update( u, params ) + +end + +local trg = trigger:new( action ) + +--------------------- +-- 注册与排泄 +--------------------- + +---@param u unit +---@param Private_reReg bool 重新注册时跳过检测 强行注册 +local function regEvent(u,Private_reReg) + if Private_reReg then + goto reReg + end + --检测是否已注册 + if u.events[mainEvent] then + return + end + u.events[mainEvent] = true + ::reReg:: + TriggerRegisterUnitEvent( trg.handle, u.handle, CONST_UNIT_EVENT ) +end + +--- 重新注册:排泄事件 +local reReg = sellItem:new( '重新注册事件' ) +reReg.on_update = function (event, params) + trg:del() --删除触发器重新创建:排泄所有事件 + trg = trigger:new(action) + --重新为单位注册事件 + group:enum(function (u) + if u.events[mainEvent] then + regEvent( u, true ) + end + end) +end + +--------------------- +-- 初始化事件 +--------------------- + +local enable +enable = function () + evtInit = unit:event_any( '单位-初始化', onInit ) + evtInit.on_update = onInit + enable = function () end + --注册已存在的所有单位 + group:enum(function (u) + regEvent( u ) + end) +end +onInit = function (event, params) + + --2仅 id事件 + if switchAny == 2 then + if not idListUnit[params.unit.id] then + return + end + end + local u = params.unit + regEvent( u ) + +end + +--------------------- +-- 接收器 +--------------------- + +--收到注册:单位-出售物品 +local reg_unit = sellItem:new( '注册事件' ) +reg_unit.on_update = function ( event, params ) + local type = params.type + if type == 'unit' then + local u = params.unit + --注册事件 + regEvent( u ) + --返回一个事件 + params.ret = sellItem:new( u ) + --记录进单位对象中。单位销毁时方便销毁事件 + table_insert(u.events, params.ret) + elseif type == 'any' then + --注册id类别和任意单位时启用初始化事件捕捉 + switchAny = 1 + enable() + else--if type == 'id' then + if switchAny == 0 then + switchAny = 2 + end + enable() + idListUnit[params.id] = true + params.ret = sellItem:new( params.id ) + end + +end + + + +--收到注册:单位-购买物品 +local reg_unit = itemSold:new( '注册事件' ) +reg_unit.on_update = function ( event, params ) + local type = params.type + if type == 'unit' then + local u = params.unit + --注册事件 + regEvent( u ) + --返回一个事件 + params.ret = itemSold:new( u ) + --记录进单位对象中。单位销毁时方便销毁事件 + table_insert(u.events, params.ret) + elseif type == 'any' then + --注册id类别和任意单位时启用初始化事件捕捉 + switchAny = 1 + enable() + else--if type == 'id' then + if switchAny == 0 then + switchAny = 2 + end + enable() + idListUnit[params.id] = true + params.ret = itemSold:new( params.id ) + end + +end + diff --git a/xLua/module/Unit/event/init.lua b/xLua/module/Unit/event/init.lua index 31f70b5..2bcb7b9 100644 --- a/xLua/module/Unit/event/init.lua +++ b/xLua/module/Unit/event/init.lua @@ -7,9 +7,12 @@ '单位-丢弃物品', '单位-抵押物品', + '单位-出售物品', + '单位-购买物品', + ----------------后面的咕咕咕当中-------------- - '单位-出售单位', '单位-出售物品', - '单位-购买单位', '单位-购买物品', + '单位-出售单位', + '单位-购买单位', '单位-学习技能', '单位-升级', @@ -111,5 +114,6 @@ require 'xLua.module.unit.event.useItem' require 'xLua.module.unit.event.pickItem' require 'xLua.module.unit.event.dropItem' require 'xLua.module.unit.event.pawnItem' +require 'xLua.module.unit.event.buy&sellItem' require 'xLua.module.unit.event.choose' \ No newline at end of file -- Gitee From 48bad20ba220cefbaa6e51ceb3d24b53aca3d3d0 Mon Sep 17 00:00:00 2001 From: HexDolphin <327970128@qq.com> Date: Mon, 14 Mar 2022 14:44:44 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=8D=95=E4=BD=8D-=E8=B4=AD=E4=B9=B0/?= =?UTF-8?q?=E5=87=BA=E5=94=AE=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xLua/module/Item/Event/init.lua | 13 +- xLua/module/Unit/event/buy&sellItem.lua | 63 +++++--- xLua/module/Unit/event/buy&sellUnit.lua | 207 ++++++++++++++++++++++++ xLua/module/Unit/event/init.lua | 5 +- 4 files changed, 263 insertions(+), 25 deletions(-) create mode 100644 xLua/module/Unit/event/buy&sellUnit.lua diff --git a/xLua/module/Item/Event/init.lua b/xLua/module/Item/Event/init.lua index f6c2b9b..7df15c7 100644 --- a/xLua/module/Item/Event/init.lua +++ b/xLua/module/Item/Event/init.lua @@ -4,6 +4,7 @@ '物品-被获得', '物品-被丢弃', '物品-被抵押', +'物品-被出售' ]] ---@class item @@ -84,10 +85,10 @@ function item:event_id( event_name, id, func ) return event end -require 'xLua.module.unit.event.death' -require 'xLua.module.unit.event.damaged' +-- require 'xLua.module.unit.event.death' +-- require 'xLua.module.unit.event.damaged' -require 'xLua.module.unit.event.useItem' -require 'xLua.module.unit.event.pickItem' -require 'xLua.module.unit.event.dropItem' -require 'xLua.module.unit.event.pawnItem' +-- require 'xLua.module.unit.event.useItem' +-- require 'xLua.module.unit.event.pickItem' +-- require 'xLua.module.unit.event.dropItem' +-- require 'xLua.module.unit.event.pawnItem' diff --git a/xLua/module/Unit/event/buy&sellItem.lua b/xLua/module/Unit/event/buy&sellItem.lua index 6875737..4dd4392 100644 --- a/xLua/module/Unit/event/buy&sellItem.lua +++ b/xLua/module/Unit/event/buy&sellItem.lua @@ -2,12 +2,14 @@ local group = require "module.Unit.extends.group" --事件名 一般顺序都是 任意单位事件 -> id事件 -> 单位事件 -- 主动方事件 -> 被动方事件 local eventName_active = '单位-出售物品' --主动方 事件名 -local eventName_passive = '单位-购买物品' --被动方 事件名 +local eventName_active2 = '单位-购买物品' --主动方 事件名 +local eventName_passive = '物品-被出售' --被动方 事件名 --主要事件 也就是魔兽实际的事件 local mainEvent = eventName_active local sellItem = eventpool:new( eventName_active ) +local buyItem = eventpool:new( eventName_active2 ) local itemSold = eventpool:new( eventName_passive ) local switchAny = 0 @@ -28,32 +30,30 @@ local CONST_UNIT_EVENT = cj.EVENT_UNIT_SELL_ITEM --------------------- local action = function () - local u = unit:h2o( GetSellingUnit() ) + local seller = unit:h2o( GetSellingUnit() ) + local buyer = unit:h2o( GetBuyingUnit() ) local it = item:h2o( GetSoldItem() ) local params = { - unit = u , + seller = seller , + buyer = buyer , + unit = buyer , item = it , } unit:update( eventName_active, params ) --任意单位事件 - sellItem:update( u.id, params ) --id事件 - sellItem:update( u, params ) + sellItem:update( seller.id, params ) --id事件 + sellItem:update( seller, params ) - u = unit:h2o( GetBuyingUnit() ) + unit:update( eventName_active2, params ) + buyItem:update( buyer.id, params ) + buyItem:update( buyer, params ) - local params = { - - unit = u , - item = it , - - } - - unit:update( eventName_passive, params ) - itemSold:update( u.id, params ) - itemSold:update( u, params ) + item:update( eventName_passive, params ) + itemSold:update( it.id, params ) + -- itemSold:update( it, params ) end @@ -150,12 +150,39 @@ reg_unit.on_update = function ( event, params ) end - --收到注册:单位-购买物品 -local reg_unit = itemSold:new( '注册事件' ) +local reg_unit = buyItem:new( '注册事件' ) reg_unit.on_update = function ( event, params ) local type = params.type if type == 'unit' then + local u = params.unit + --注册事件 + regEvent( u ) + --返回一个事件 + params.ret = buyItem:new( u ) + --记录进单位对象中。单位销毁时方便销毁事件 + table_insert(u.events, params.ret) + elseif type == 'any' then + --注册id类别和任意单位时启用初始化事件捕捉 + switchAny = 1 + enable() + else--if type == 'id' then + if switchAny == 0 then + switchAny = 2 + end + enable() + idListUnit[params.id] = true + params.ret = buyItem:new( params.id ) + end + +end + + +--收到注册:物品-被出售 +local reg_unit = itemSold:new( '注册事件' ) +reg_unit.on_update = function ( event, params ) + local type = params.type + if type == 'item' then local u = params.unit --注册事件 regEvent( u ) diff --git a/xLua/module/Unit/event/buy&sellUnit.lua b/xLua/module/Unit/event/buy&sellUnit.lua new file mode 100644 index 0000000..dd5650c --- /dev/null +++ b/xLua/module/Unit/event/buy&sellUnit.lua @@ -0,0 +1,207 @@ +local group = require "module.Unit.extends.group" +--事件名 一般顺序都是 任意单位事件 -> id事件 -> 单位事件 +-- 主动方事件 -> 被动方事件 +local eventName_active = '单位-出售单位' --主动方 事件名 +local eventName_active2 = '单位-购买单位' --主动方 事件名 +local eventName_passive = '单位-被出售' --被动方 事件名 + +--主要事件 也就是魔兽实际的事件 +local mainEvent = eventName_active + +local sellUnit = eventpool:new( eventName_active ) +local buyUnit = eventpool:new( eventName_active2 ) +local unitSold = eventpool:new( eventName_passive ) + +local switchAny = 0 +local idListUnit = {} +local evtInit +local onInit + +local cj = cj +local unit = unit +local GetBuyingUnit = cj.GetBuyingUnit +local GetSellingUnit = cj.GetSellingUnit +local GetSoldUnit = cj.GetSoldUnit +local TriggerRegisterUnitEvent = cj.TriggerRegisterUnitEvent +local CONST_UNIT_EVENT = cj.EVENT_UNIT_SELL + +--------------------- +-- 触发事件分发 +--------------------- + +local action = function () + local seller = unit:h2o( GetSellingUnit() ) + local buyer = unit:h2o( GetBuyingUnit() ) + local u = unit:h2o( GetSoldUnit() ) + + local params = { + + seller = seller , + buyer = buyer , + unit = u , + sold = u , + + } + + unit:update( eventName_active, params ) --任意单位事件 + sellUnit:update( seller.id, params ) --id事件 + sellUnit:update( seller, params ) + + unit:update( eventName_active2, params ) + buyUnit:update( buyer.id, params ) + buyUnit:update( buyer, params ) + + unit:update( eventName_passive, params ) + unitSold:update( u.id, params ) + -- unitSold:update( it, params ) + +end + +local trg = trigger:new( action ) + +--------------------- +-- 注册与排泄 +--------------------- + +---@param u unit +---@param Private_reReg bool 重新注册时跳过检测 强行注册 +local function regEvent(u,Private_reReg) + if Private_reReg then + goto reReg + end + --检测是否已注册 + if u.events[mainEvent] then + return + end + u.events[mainEvent] = true + ::reReg:: + TriggerRegisterUnitEvent( trg.handle, u.handle, CONST_UNIT_EVENT ) +end + +--- 重新注册:排泄事件 +local reReg = sellUnit:new( '重新注册事件' ) +reReg.on_update = function (event, params) + trg:del() --删除触发器重新创建:排泄所有事件 + trg = trigger:new(action) + --重新为单位注册事件 + group:enum(function (u) + if u.events[mainEvent] then + regEvent( u, true ) + end + end) +end + +--------------------- +-- 初始化事件 +--------------------- + +local enable +enable = function () + evtInit = unit:event_any( '单位-初始化', onInit ) + evtInit.on_update = onInit + enable = function () end + --注册已存在的所有单位 + group:enum(function (u) + regEvent( u ) + end) +end +onInit = function (event, params) + + --2仅 id事件 + if switchAny == 2 then + if not idListUnit[params.unit.id] then + return + end + end + local u = params.unit + regEvent( u ) + +end + +--------------------- +-- 接收器 +--------------------- + +--收到注册:单位-出售单位 +local reg_unit = sellUnit:new( '注册事件' ) +reg_unit.on_update = function ( event, params ) + local type = params.type + if type == 'unit' then + local u = params.unit + --注册事件 + regEvent( u ) + --返回一个事件 + params.ret = sellUnit:new( u ) + --记录进单位对象中。单位销毁时方便销毁事件 + table_insert(u.events, params.ret) + elseif type == 'any' then + --注册id类别和任意单位时启用初始化事件捕捉 + switchAny = 1 + enable() + else--if type == 'id' then + if switchAny == 0 then + switchAny = 2 + end + enable() + idListUnit[params.id] = true + params.ret = sellUnit:new( params.id ) + end + +end + + +--收到注册:单位-购买单位 +local reg_unit = buyUnit:new( '注册事件' ) +reg_unit.on_update = function ( event, params ) + local type = params.type + if type == 'unit' then + local u = params.unit + --注册事件 + regEvent( u ) + --返回一个事件 + params.ret = buyUnit:new( u ) + --记录进单位对象中。单位销毁时方便销毁事件 + table_insert(u.events, params.ret) + elseif type == 'any' then + --注册id类别和任意单位时启用初始化事件捕捉 + switchAny = 1 + enable() + else--if type == 'id' then + if switchAny == 0 then + switchAny = 2 + end + enable() + idListUnit[params.id] = true + params.ret = buyUnit:new( params.id ) + end + +end + + +--收到注册:单位-被出售 +local reg_unit = unitSold:new( '注册事件' ) +reg_unit.on_update = function ( event, params ) + local type = params.type + if type == 'unit' then + local u = params.unit + --注册事件 + regEvent( u ) + --返回一个事件 + params.ret = unitSold:new( u ) + --记录进单位对象中。单位销毁时方便销毁事件 + table_insert(u.events, params.ret) + elseif type == 'any' then + --注册id类别和任意单位时启用初始化事件捕捉 + switchAny = 1 + enable() + else--if type == 'id' then + if switchAny == 0 then + switchAny = 2 + end + enable() + idListUnit[params.id] = true + params.ret = unitSold:new( params.id ) + end + +end + diff --git a/xLua/module/Unit/event/init.lua b/xLua/module/Unit/event/init.lua index 2bcb7b9..0ad7f86 100644 --- a/xLua/module/Unit/event/init.lua +++ b/xLua/module/Unit/event/init.lua @@ -10,9 +10,11 @@ '单位-出售物品', '单位-购买物品', - ----------------后面的咕咕咕当中-------------- '单位-出售单位', '单位-购买单位', + '单位-被出售' + + ----------------后面的咕咕咕当中-------------- '单位-学习技能', '单位-升级', @@ -115,5 +117,6 @@ require 'xLua.module.unit.event.pickItem' require 'xLua.module.unit.event.dropItem' require 'xLua.module.unit.event.pawnItem' require 'xLua.module.unit.event.buy&sellItem' +require 'xLua.module.unit.event.buy&sellUnit' require 'xLua.module.unit.event.choose' \ No newline at end of file -- Gitee