情节

来源:互联网 发布:淘宝网的对象 编辑:程序博客网 时间:2024/04/30 04:22
--[[ file name .    GameList.lua author  .      Clark/陈泽丹 created .      8.13.2011 purpose .      双向队列--]]--module("GameList", package.seeall)--双向队列function list_newList()    local first = 1    local last = 0    local list = {}local listManager = {}    function listManager.pushFront(_tempObj)        first = first - 1        list[first] = _tempObj    end    function listManager.pushBack(_tempObj)        last = last + 1        list[last] = _tempObj    end    function listManager.temp_getFront()        if listManager.bool_isEmpty() then            return nil        else            local val = list[first]            return val        end    end    function listManager.temp_getBack()        if listManager.bool_isEmpty() then            return nil        else            local val = list[last]            return val        end    end    function listManager.popFront()if listManager.bool_isEmpty() then            returnend        list[first] = nil        first = first + 1    end    function listManager.popBack()if listManager.bool_isEmpty() then            returnend        list[last] = nil        last = last - 1    end    function listManager.clear()        while false == listManager.bool_isEmpty() do        listManager.popFront()    end    end    function listManager.bool_isEmpty()        if first > last thenfirst = 1last = 0            return true        else            return false        end    end    function listManager.d_getSize()        if  listManager.bool_isEmpty() then            return 0        else            return last - first + 1        end    end    return listManagerend


 

 

--[[ file name :    GameEvents.lua author  :      Clark/陈泽丹 created :      8:13:2011 purpose :      故事情节线--]]--module("GameEvents", package.seeall)--pakList = require "GameList"function manager_newEventManager()--事件流function events_newEvents(_ID)local ID = _ID or os.time()local cmdpars = list_newList()          --隐藏数据local events = {}                               --公开数据function events.id_getID()return IDend--添加事件function events.push(_trigger, _tTgrPar, _fun, _tFunPar, _szName)local t = { szName = _szName or "", trigger = _trigger, tTgrPar = _tTgrPar or {}, fun = _fun, tFunPar = _tFunPar or {}}cmdpars.pushBack(t)end--清空事件function events.clear()cmdpars.clear()end--创建事件function events.setEvent()local tVal = cmdpars.temp_getFront()if nil ~= tVal thenif nil ~= tVal.trigger thenAPI_TraceError(tVal.szName .. " setEvent")tVal.trigger(events.id_getID(), tVal.tTgrPar)endendend--处理事件function events.onEvent(tEventPar)local tEventPar = tEventPar or {}local tVal = cmdpars.temp_getFront()cmdpars.popFront()if nil ~= tVal thenif nil ~= tVal.fun thentVal.fun(events.id_getID(), tVal.tFunPar, tEventPar)API_TraceError(tVal.szName .. " onEvent")endendend--是否还有事件function events.bool_isEmpty()local val = cmdpars.bool_isEmpty()return valendreturn events                   --返回公开数据end--事件流的管理local et = {}local manager = {}function manager.events_newEvents(_ID)et[_ID] = events_newEvents(_ID)return et[_ID]endfunction manager.events_getEvents(_ID)return et[_ID]endfunction manager.deleteEvents(_ID)if nil ~= et[_ID] thenet[_ID].clear()endet[_ID] = nilendreturn managerend


 

EVENT_MANAGER = manager_newEventManager()--API_TraceError--API_Trace--监视器基类(语法所限, 未把相关函数实现为虚函数)local function trigger_newGTrigger(_eventID)local triggerThis ={pTrigger = nil,--监视器指针为空m_eventID = _eventID}--API_TraceError("-> ------------------- newTrigger ------------------ " .. triggerThis.m_eventID)--删除全局触发器function triggerThis.nil_deleteTrigger()API_DestroyTriggerG(triggerThis.pTrigger)--API_TraceError("<- ----------------- deleteTrigger ----------------- " .. triggerThis.m_eventID)return nilendreturn triggerThisend--死亡回调函数function onDieCallBack(_tEventPar, param2, Type, FastID, KillerType, KillerID, MonsterID, MapID, PosX, PosY)API_TraceError("onDieCallBack " .. _tEventPar .. " Kill: " .. MonsterID)local et = EVENT_MANAGER.events_getEvents(_tEventPar)if nil ~= et thenet.onEvent()et.setEvent()endend--时间的全局触发函数function onTimeCallBack(_tEventPar)API_TraceError("onTimeCallBack " .. _tEventPar)local et = EVENT_MANAGER.events_getEvents(_tEventPar)if nil ~= et thenet.onEvent()et.setEvent()endend--区域监听生物的全局触发器个人角色版function onAreaCallBack(_dTeamID, _tEventPar, _param3, _param4)API_TraceError("onAreaCallBack " .. _tEventPar)local et = EVENT_MANAGER.events_getEvents(_tEventPar)if nil ~= et thenet.onEvent()et.setEvent()endendTestEventID = 0function onAreaSigleCallBack(_dTeamID, _tEventPar, _param3, _param4)API_TraceError("onAreaSigleCallBack " .. _dTeamID)local et = EVENT_MANAGER.events_getEvents(TestEventID)if nil ~= et thenet.onEvent()et.setEvent()endend--生成死亡的全局触发器function trigger_newGDieTrigger(_tEventPar, _pSomething)local triggerThis = trigger_newGTrigger(_tEventPar)triggerThis.pTrigger = API_CreateDieTriggerG(_tEventPar, 0, 0, _pSomething, "onDieCallBack")if 0 == triggerThis.pTrigger thenAPI_TraceError("Failed in trigger_newGDieTrigger:  API_CreateDieTriggerG ")endreturn triggerThisend--生成时间的全局触发器function trigger_newGTimerTrigger(_tEventPar, _timeStep)local triggerThis = trigger_newGTrigger(_tEventPar)triggerThis.pTrigger = API_CreateTimerTriggerG(_tEventPar, os.time(), _timeStep, 1, "onTimeCallBack")if 0 == triggerThis.pTrigger thenAPI_TraceError("Failed in trigger_newGTimerTrigger:  API_CreateTimerTriggerG ")endreturn triggerThisend--生成监听生物的全局触发器function trigger_newGSigleAreaTrigger(_tEventPar, _dTeamID, _dMapObj, _dPosX, _dPosY, _dRadius)local triggerThis = trigger_newGTrigger(_tEventPar)triggerThis.pTrigger = API_CreateAreaCreatureTriggerG(0, _dTeamID, _dMapObj, _dPosX, _dPosY, _dRadius, "onAreaSigleCallBack")if 0 == triggerThis.pTrigger thenAPI_TraceError("Failed in trigger_newGAreaTrigger:  API_CreateAreaCreatureTriggerG ")endreturn triggerThisend


 

原创粉丝点击