妹妹你大胆地往前走 往前走 莫回呀头
通天的大路 九千九百 九千九百九呀
妹妹你大胆地往前走呀 往前走 莫回呀头
通天的大路 九千九百 九千九百九呀
妹妹你大胆地往前走呀 往前走 莫回呀头
从此后 你 搭起那红绣楼呀
抛洒着红绣球呀 正打中我的头呀
与你喝一壶呀 红红的高梁酒呀
红红的高梁酒呀嘿 妹妹你大胆地往前走呀
往前走 莫回呀头 通天的大路 九千九百
九千九百九呀 妹妹你大胆地往前走呀
往前走 莫回呀头 从此后
你 搭起那红绣楼呀 抛洒着红绣球呀
正打中我的头呀 与你喝一壶呀
红红的高梁酒呀 红红的高梁酒呀嘿
妹妹你大胆地往前走呀 往前走 莫回呀头
记得在London时,撞到一个旅行团
妹子指着我和基友们喊
“Korea!”
我和我的基友们一时没听清,我随口回了句
“What?”
妹纸瞪大眼睛又开心叫着
“欧巴?欧巴!欧巴!”
虽然同是黄种人,我还是很谨慎
“uh…Excuse me.r u is japanese?”
“No.I'm chinese.”
“你会中文早说啊,这就不更方便交流了吗?”
妹纸哽住了,到现在我还记得那表情
把buff机制做成一个图(graph)。
每个buff是一个节点,每个状态也是一个节点。
现在无敌状态受两种状态影响(A、C),那么A、C各有一条边指向无敌状态。
无敌状态判定时,遍历所有输入节点(也就是A、C),有一个buff生效就生效。A、C如果也有自己的状态依赖,那就进行深度遍历依次判定。
如果存在“覆盖”,比如例子中b buff覆盖a buff,那么B有一条边指向A,判定时B的优先级比A高。A取消了,B还在生效。
整个graph必须是个有向无圈图(DAG),有圈说明循环依赖,判定时会宕机(halting)。
DAG可以进行拓扑排序,排完序后就是个一维数组,每帧可以按照这个优先级进行判定,省去了深度遍历的消耗,实现更简单。
不建议手动给状态排优先级,维护起来费劲。