Interpreter 1

Publié le par chindan

#============================================
# ¡ Interpreter (•ªŠ„’è‹` 1)
#----------------------------------------------
# @ƒCƒxƒ“ƒgƒRƒ}ƒ“ƒh‚ðŽÀs‚·‚éƒCƒ“ƒ^ƒvƒŠƒ^‚Å‚·B‚±‚̃Nƒ‰ƒX‚Í Game_System ƒNƒ‰
# ƒX‚â Game_Event ƒNƒ‰ƒX‚Ì“à•”‚Ŏg—p‚³‚ê‚Ü‚·B
#============================================

class Interpreter
#------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
# depth : ƒlƒXƒg‚̐[‚³
# main : ƒƒCƒ“ƒtƒ‰ƒO
#------------------------------------------
def initialize(depth = 0, main = false)
@depth = depth
@main = main
# [‚³‚Í 100 ƒŒƒxƒ‹‚Ü‚Å
if depth > 100
print("The common event call exceeded the upper boundary.")
exit
end
# ƒCƒ“ƒ^ƒvƒŠƒ^‚Ì“à•”ó‘Ô‚ðƒNƒŠƒA
clear
end
#------------------------------------------
# œ ƒNƒŠƒA
#------------------------------------------
def clear
@map_id = 0 # ‹N“®Žž‚̃}ƒbƒv ID
@event_id = 0 # ƒCƒxƒ“ƒg ID
@message_waiting = false # ƒƒbƒZ[ƒWI—¹‘Ò‹@’†
@move_route_waiting = false # ˆÚ“®Š®—¹‘Ò‹@’†
@button_input_variable_id = 0 # ƒ{ƒ^ƒ““ü—Í •Ï” ID
@wait_count = 0 # ƒEƒFƒCƒgƒJƒEƒ“ƒg
@child_interpreter = nil # ŽqƒCƒ“ƒ^ƒvƒŠƒ^
@branch = {} # •ªŠòƒf[ƒ^
end
#------------------------------------------
# œ ƒCƒxƒ“ƒg‚̃ZƒbƒgƒAƒbƒv
# list : ŽÀs“à—e
# event_id : ƒCƒxƒ“ƒg ID
#------------------------------------------
def setup(list, event_id)
# ƒCƒ“ƒ^ƒvƒŠƒ^‚Ì“à•”ó‘Ô‚ðƒNƒŠƒA
clear
# ƒ}ƒbƒv ID ‚ð‹L‰¯
@map_id = $game_map.map_id
# ƒCƒxƒ“ƒg ID ‚ð‹L‰¯
@event_id = event_id
# ŽÀs“à—e‚ð‹L‰¯
@list = list
# ƒCƒ“ƒfƒbƒNƒX‚ð‰Šú‰»
@index = 0
# •ªŠòƒf[ƒ^—p‚̃nƒbƒVƒ…‚ðƒNƒŠƒA
@branch.clear
end
#------------------------------------------
# œ ŽÀs’†”»’è
#------------------------------------------
def running?
return @list != nil
end
#------------------------------------------
# œ ‹N“®’†ƒCƒxƒ“ƒg‚̃ZƒbƒgƒAƒbƒv
#------------------------------------------
def setup_starting_event
# •K—v‚È‚çƒ}ƒbƒv‚ðƒŠƒtƒŒƒbƒVƒ…
if $game_map.need_refresh
$game_map.refresh
end
# ƒRƒ‚ƒ“ƒCƒxƒ“ƒg‚̌Ăяo‚µ‚ª—–ñ‚³‚ê‚Ä‚¢‚éê‡
if $game_temp.common_event_id > 0
# ƒCƒxƒ“ƒg‚ðƒZƒbƒgƒAƒbƒv
setup($data_common_events[$game_temp.common_event_id].list, 0)
# —–ñ‚ð‰ðœ
$game_temp.common_event_id = 0
return
end
# ƒ‹[ƒv (ƒ}ƒbƒvƒCƒxƒ“ƒg)
for event in $game_map.events.values
# ‹N“®’†‚̃Cƒxƒ“ƒg‚ªŒ©‚‚©‚Á‚½ê‡
if event.starting
# Ž©“®ŽÀs‚Å‚È‚¯‚ê‚Î
if event.trigger < 3
# ‹N“®’†ƒtƒ‰ƒO‚ðƒNƒŠƒA
event.clear_starting
# ƒƒbƒN
event.lock
end
# ƒCƒxƒ“ƒg‚ðƒZƒbƒgƒAƒbƒv
setup(event.list, event.id)
return
end
end
# ƒ‹[ƒv (ƒRƒ‚ƒ“ƒCƒxƒ“ƒg)
for common_event in $data_common_events.compact
# ƒgƒŠƒK[‚ªŽ©“®ŽÀs‚©‚ÂðŒƒXƒCƒbƒ`‚ª ON ‚̏ꍇ
if common_event.trigger == 1 and
$game_switches[common_event.switch_id] == true
# ƒCƒxƒ“ƒg‚ðƒZƒbƒgƒAƒbƒv
setup(common_event.list, 0)
return
end
end
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV
#------------------------------------------
def update
# ƒ‹[ƒvƒJƒEƒ“ƒg‚ð‰Šú‰»
@loop_count = 0
# ƒ‹[ƒv
loop do
# ƒ‹[ƒvƒJƒEƒ“ƒg‚É 1 ‰ÁŽZ
@loop_count += 1
# ƒCƒxƒ“ƒgƒRƒ}ƒ“ƒh 100 ŒÂ‚ðŽÀs‚µ‚½ê‡
if @loop_count > 100
# ƒtƒŠ[ƒY–hŽ~‚Ì‚½‚߁AGraphics.update ‚ðŒÄ‚Ô
Graphics.update
@loop_count = 0
end
# ƒ}ƒbƒv‚ªƒCƒxƒ“ƒg‹N“®Žž‚ƈقȂéê‡
if $game_map.map_id != @map_id
# ƒCƒxƒ“ƒg ID ‚ð 0 ‚É‚·‚é
@event_id = 0
end
# ŽqƒCƒ“ƒ^ƒvƒŠƒ^‚ª‘¶Ý‚·‚éê‡
if @child_interpreter != nil
# ŽqƒCƒ“ƒ^ƒvƒŠƒ^‚ðXV
@child_interpreter.update
# ŽqƒCƒ“ƒ^ƒvƒŠƒ^‚̎Às‚ªI‚í‚Á‚½ê‡
unless @child_interpreter.running?
# ŽqƒCƒ“ƒ^ƒvƒŠƒ^‚ðÁ‹Ž
@child_interpreter = nil
end
# ŽqƒCƒ“ƒ^ƒvƒŠƒ^‚ª‚Ü‚¾‘¶Ý‚·‚éê‡
if @child_interpreter != nil
return
end
end
# ƒƒbƒZ[ƒWI—¹‘Ò‹@’†‚̏ꍇ
if @message_waiting
return
end
# ˆÚ“®Š®—¹‘Ò‹@’†‚̏ꍇ
if @move_route_waiting
# ƒvƒŒƒCƒ„[‚ªˆÚ“®ƒ‹[ƒg‹­§’†‚̏ꍇ
if $game_player.move_route_forcing
return
end
# ƒ‹[ƒv (ƒ}ƒbƒvƒCƒxƒ“ƒg)
for event in $game_map.events.values
# ‚±‚̃Cƒxƒ“ƒg‚ªˆÚ“®ƒ‹[ƒg‹­§’†‚̏ꍇ
if event.move_route_forcing
return
end
end
# ˆÚ“®Š®—¹‘Ò‹@’†ƒtƒ‰ƒO‚ðƒNƒŠƒA
@move_route_waiting = false
end
# ƒ{ƒ^ƒ““ü—Í‘Ò‹@’†‚̏ꍇ
if @button_input_variable_id > 0
# ƒ{ƒ^ƒ““ü—͂̏ˆ—‚ðŽÀs
input_button
return
end
# ƒEƒFƒCƒg’†‚̏ꍇ
if @wait_count > 0
# ƒEƒFƒCƒgƒJƒEƒ“ƒg‚ðŒ¸‚ç‚·
@wait_count -= 1
return
end
# ƒAƒNƒVƒ‡ƒ“‚ð‹­§‚³‚ê‚Ä‚¢‚éƒoƒgƒ‰[‚ª‘¶Ý‚·‚éê‡
if $game_temp.forcing_battler != nil
return
end
# ŠeŽí‰æ–ʂ̌Ăяo‚µƒtƒ‰ƒO‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚éê‡
if $game_temp.battle_calling or
$game_temp.shop_calling or
$game_temp.name_calling or
$game_temp.menu_calling or
$game_temp.save_calling or
$game_temp.gameover
return
end
# ŽÀs“à—eƒŠƒXƒg‚ª‹ó‚̏ꍇ
if @list == nil
# ƒƒCƒ“‚̃}ƒbƒvƒCƒxƒ“ƒg‚̏ꍇ
if @main
# ‹N“®’†‚̃Cƒxƒ“ƒg‚ðƒZƒbƒgƒAƒbƒv
setup_starting_event
end
# ‰½‚àƒZƒbƒgƒAƒbƒv‚³‚ê‚È‚©‚Á‚½ê‡
if @list == nil
return
end
end
# ƒCƒxƒ“ƒgƒRƒ}ƒ“ƒh‚̎Às‚ðŽŽ‚ÝA–ß‚è’l‚ª false ‚̏ꍇ
if execute_command == false
return
end
# ƒCƒ“ƒfƒbƒNƒX‚ði‚ß‚é
@index += 1
end
end
#------------------------------------------
# œ ƒ{ƒ^ƒ““ü—Í
#------------------------------------------
def input_button
# ‰Ÿ‚³‚ꂽƒ{ƒ^ƒ“‚ð”»’è
n = 0
for i in 1..18
if Input.trigger?(i)
n = i
end
end
# ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
if n > 0
# •Ï”‚Ì’l‚ð•ÏX
$game_variables[@button_input_variable_id] = n
$game_map.need_refresh = true
# ƒ{ƒ^ƒ““ü—Í‚ðI—¹
@button_input_variable_id = 0
end
end
#------------------------------------------
# œ ‘I‘ðŽˆ‚ÌƒZƒbƒgƒAƒbƒv
#------------------------------------------
def setup_choices(parameters)
# choice_max ‚É‘I‘ðŽˆ‚Ì€–ڐ”‚ðÝ’è
$game_temp.choice_max = parameters[0].size
# message_text ‚É‘I‘ðŽˆ‚ðÝ’è
for text in parameters[0]
$game_temp.message_text += text + "n"
end
# ƒLƒƒƒ“ƒZƒ‹‚̏ꍇ‚̏ˆ—‚ðÝ’è
$game_temp.choice_cancel_type = parameters[1]
# ƒR[ƒ‹ƒoƒbƒN‚ðÝ’è
current_indent = @list[@index].indent
$game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
end
#------------------------------------------
# œ ƒAƒNƒ^[—pƒCƒeƒŒ[ƒ^ (ƒp[ƒeƒB‘S‘Ì‚ðl—¶)
# parameter : 1 ˆÈã‚È‚ç IDA0 ‚È‚ç‘S‘Ì
#------------------------------------------
def iterate_actor(parameter)
# ƒp[ƒeƒB‘S‘̂̏ꍇ
if parameter == 0
# ƒp[ƒeƒB‘S‘Ì•ªƒ‹[ƒv
for actor in $game_party.actors
# ƒuƒƒbƒN‚ð•]‰¿
yield actor
end
# ƒAƒNƒ^[’P‘̂̏ꍇ
else
# ƒAƒNƒ^[‚ðŽæ“¾
actor = $game_actors[parameter]
# ƒuƒƒbƒN‚ð•]‰¿
yield actor if actor != nil
end
end
#------------------------------------------
# œ ƒGƒlƒ~[—pƒCƒeƒŒ[ƒ^ (ƒgƒ‹[ƒv‘S‘Ì‚ðl—¶)
# parameter : 0 ˆÈã‚È‚çƒCƒ“ƒfƒbƒNƒXA-1 ‚È‚ç‘S‘Ì
#------------------------------------------
def iterate_enemy(parameter)
# ƒgƒ‹[ƒv‘S‘̂̏ꍇ
if parameter == -1
# ƒgƒ‹[ƒv‘S‘Ì•ªƒ‹[ƒv
for enemy in $game_troop.enemies
# ƒuƒƒbƒN‚ð•]‰¿
yield enemy
end
# ƒGƒlƒ~[’P‘̂̏ꍇ
else
# ƒGƒlƒ~[‚ðŽæ“¾
enemy = $game_troop.enemies[parameter]
# ƒuƒƒbƒN‚ð•]‰¿
yield enemy if enemy != nil
end
end
#------------------------------------------
# œ ƒoƒgƒ‰[—pƒCƒeƒŒ[ƒ^ (ƒgƒ‹[ƒv‘S‘́Aƒp[ƒeƒB‘S‘Ì‚ðl—¶)
# parameter1 : 0 ‚È‚çƒGƒlƒ~[A1 ‚È‚çƒAƒNƒ^[
# parameter2 : 0 ˆÈã‚È‚çƒCƒ“ƒfƒbƒNƒXA-1 ‚È‚ç‘S‘Ì
#------------------------------------------
def iterate_battler(parameter1, parameter2)
# ƒGƒlƒ~[‚̏ꍇ
if parameter1 == 0
# ƒGƒlƒ~[‚̃CƒeƒŒ[ƒ^‚ðŒÄ‚яo‚·
iterate_enemy(parameter2) do |enemy|
yield enemy
end
# ƒAƒNƒ^[‚̏ꍇ
else
# ƒp[ƒeƒB‘S‘̂̏ꍇ
if parameter2 == -1
# ƒp[ƒeƒB‘S‘Ì•ªƒ‹[ƒv
for actor in $game_party.actors
# ƒuƒƒbƒN‚ð•]‰¿
yield actor
end
# ƒAƒNƒ^[’P‘Ì (N l–Ú) ‚̏ꍇ
else
# ƒAƒNƒ^[‚ðŽæ“¾
actor = $game_party.actors[parameter2]
# ƒuƒƒbƒN‚ð•]‰¿
yield actor if actor != nil
end
end
end
end

Publié dans poubelle

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article