赞 0
VIP 0
好人卡 0
积分 1
经验 7498
最后登录 2021-3-31
在线时间 124 小时
Lv1.梦旅人
梦石 0
星屑 82
在线时间 124 小时
注册时间 2011-10-6
帖子 26
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
def passable?( x, y, d, self_event = nil )
# 被给予的坐标地图外的情况下
unless valid?( x, y)
# 不能通行
return false
end
# 方向 (0,2,4,6,8,10) 与障碍物接触 (0,1,2,4,8,0) 后变换
bit = ( 1 << ( d / 2 - 1 ) ) & 0x0f
# 循环全部的事件
for event in events.values
# 自己以外的元件与坐标相同的情况
if event.tile_id >= 0 and event != self_event and
event.x == x and event.y == y and not event.through
# 如果障碍物的接触被设置的情况下
if @passages [ event.tile_id ] & bit != 0
# 不能通行
return false
# 如果全方向的障碍物的接触被设置的情况下
elsif @passages [ event.tile_id ] & 0x0f == 0x0f
# 不能通行
return false
# 这以外的优先度为 0 的情况下
elsif @priorities [ event.tile_id ] == 0
# 可以通行
return true
end
end
end
# 从层按从上到下的顺序调查循环
for i in [ 2 , 1 , 0 ]
# 取得元件 ID
tile_id = data[ x, y, i]
# 取得元件 ID 失败
if tile_id == nil
# 不能通行
return false
# 如果障碍物的接触被设置的情况下
elsif @passages [ tile_id] & bit != 0
# 不能通行
return false
# 如果全方向的障碍物的接触被设置的情况下
elsif @passages [ tile_id] & 0x0f == 0x0f
# 不能通行
return false
# 这以外的优先度为 0 的情况下
elsif @priorities [ tile_id] == 0
# 可以通行
return true
end
end
# 可以通行
return true
end
def passable?( x, y, d, self_event = nil )
# 被给予的坐标地图外的情况下
unless valid?( x, y)
# 不能通行
return false
end
# 方向 (0,2,4,6,8,10) 与障碍物接触 (0,1,2,4,8,0) 后变换
bit = ( 1 << ( d / 2 - 1 ) ) & 0x0f
# 循环全部的事件
for event in events.values
# 自己以外的元件与坐标相同的情况
if event.tile_id >= 0 and event != self_event and
event.x == x and event.y == y and not event.through
# 如果障碍物的接触被设置的情况下
if @passages [ event.tile_id ] & bit != 0
# 不能通行
return false
# 如果全方向的障碍物的接触被设置的情况下
elsif @passages [ event.tile_id ] & 0x0f == 0x0f
# 不能通行
return false
# 这以外的优先度为 0 的情况下
elsif @priorities [ event.tile_id ] == 0
# 可以通行
return true
end
end
end
# 从层按从上到下的顺序调查循环
for i in [ 2 , 1 , 0 ]
# 取得元件 ID
tile_id = data[ x, y, i]
# 取得元件 ID 失败
if tile_id == nil
# 不能通行
return false
# 如果障碍物的接触被设置的情况下
elsif @passages [ tile_id] & bit != 0
# 不能通行
return false
# 如果全方向的障碍物的接触被设置的情况下
elsif @passages [ tile_id] & 0x0f == 0x0f
# 不能通行
return false
# 这以外的优先度为 0 的情况下
elsif @priorities [ tile_id] == 0
# 可以通行
return true
end
end
# 可以通行
return true
end
上面的”# 方向 (0,2,4,6,8,10) 与障碍物接触 (0,1,2,4,8,0) 后变换
bit = (1 << (d / 2 - 1)) & 0x0f“这一句是什么意思