您的位置:首页 > 其它

状态机--状态机3,关于战斗中兵种状态的状态的结束

2015-04-02 20:43 387 查看
战斗中的角色有多种状态,根据不同的事件切换到不同的状态,进入一个状态,

当然也会退出状态,如冰冻状态,战斗中的角色中了冰冻buff后进入冰冻状态,

那么当这个冰冻buff时间到了之后自然就失效了,角色要解除冰冻状态,那么

解除了冰冻状态后要进入哪个状态呢,这个具体看需求,一般情况下是进入到

待机状态,通俗地说,当冰冻buff生效时调用onFrozen(),当冰冻buff失效时

调用onFrozenEnd(),代码如下:

local StateId = require("app.edition4.StateId")

local Soldier = class("Soldier")

function Soldier:ctor()
self.iStateId = StateId.unKnown
end

--待机
function Soldier:onIdle()
self.iStateId = StateId.idle
print("切换到待机状态")
end

--行走
function Soldier:onWalk()
if self:isFrozen() then return end
self.iStateId = StateId.walk
print("切换到行走状态")
end

--攻击
function Soldier:onAttack()
if self:isFrozen() then return end
self.iStateId = StateId.attack
print("切换到攻击状态")
end

--冰冻
function Soldier:onFrozen()
if self:isFrozen() then return end
self.iStateId = StateId.frozen
print("切换到冰冻状态")
end

--冰冻结束,默认切换为待机状态
function Soldier:onFrozenEnd()
print("冰冻状态结束")
self:onIdle()
end

function Soldier:isFrozen()
return self.iStateId == StateId.frozen
end

return Soldier
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: