情节
来源:互联网 发布:淘宝网的对象 编辑:程序博客网 时间: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
- 情节
- 南京情节
- JAVA情节
- Delphi情节
- 植物情节
- 兄弟情节
- 养老情节
- 足球情节
- 我的刘德华情节
- TOMCAT 的.16情节
- 我的文学情节
- 我的IT情节
- 三国情节(占位:)
- 情节链设计3
- 我的羽毛球情节
- 电影里的情节
- 程序员:放下技术情节
- C#的一些情节!
- 精妙的SQL语句
- 深刻理解Oracle数据库的启动和关闭
- Android深入浅出学习笔记之多线程及异步处理
- 查询txt文本信息行数(C和C++分别实现)
- OutOfMemoryError: bitmap size exceeds VM (onConfigurationChanged this.setContentView(R.layout.xxx))
- 情节
- 提问的智慧
- 控制程序运行一次
- 资源文件使用总结二
- FAQ_10_EditText与parseInt方法
- 不常见的matlab常用技巧
- EHCache入门系列(一)–简介及配置
- 状态压缩DP poj 1170 Shopping Offers 经典题目
- HDU 1241 油田