Game_Event

Publié le par chindan

#============================================
# ¡ Game_Event
#----------------------------------------------
# @ƒCƒxƒ“ƒg‚ðˆµ‚¤ƒNƒ‰ƒX‚Å‚·BðŒ”»’è‚É‚æ‚éƒCƒxƒ“ƒgƒy[ƒWØ‚è‘Ö‚¦‚âA•À—ñˆ—
# ƒCƒxƒ“ƒgŽÀs‚È‚Ç‚Ì‹@”‚ðŽ‚Á‚Ä‚¨‚èAGame_Map ƒNƒ‰ƒX‚Ì“à•”‚Ŏg—p‚³‚ê‚Ü‚·B
#============================================

class Game_Event < Game_Character
#------------------------------------------
# œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”
#------------------------------------------
attr_reader :trigger # ƒgƒŠƒK[
attr_reader :list # ŽÀs“à—e
attr_reader :starting # ‹N“®’†ƒtƒ‰ƒO
#------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
# map_id : ƒ}ƒbƒv ID
# event : ƒCƒxƒ“ƒg (RPG::Event)
#------------------------------------------
def initialize(map_id, event)
super()
@map_id = map_id
@event = event
@id = @event.id
@erased = false
@starting = false
@through = true
# ‰ŠúˆÊ’u‚Ɉړ®
moveto(@event.x, @event.y)
refresh
end
#------------------------------------------
# œ ‹N“®’†ƒtƒ‰ƒO‚̃NƒŠƒA
#------------------------------------------
def clear_starting
@starting = false
end
#------------------------------------------
# œ ƒI[ƒo[ƒgƒŠƒK[”»’è (“¯ˆÊ’u‚ð‹N“®ðŒ‚Æ‚·‚é‚©”Û‚©)
#------------------------------------------
def over_trigger?
# ƒOƒ‰ƒtƒBƒbƒN‚ªƒLƒƒƒ‰ƒNƒ^[‚ŁA‚·‚蔲‚¯ó‘Ô‚Å‚Í‚È‚¢ê‡
if @character_name != "" and not @through
# ‹N“®”»’è‚͐³–Ê
return false
end
# ƒ}ƒbƒvã‚Å‚±‚̈ʒu‚ª’ʍs•s‰Â”‚ȏꍇ
unless $game_map.passable?(@x, @y, 0)
# ‹N“®”»’è‚͐³–Ê
return false
end
# ‹N“®”»’è‚Í“¯ˆÊ’u
return true
end
#------------------------------------------
# œ ƒCƒxƒ“ƒg‹N“®
#------------------------------------------
def start
# ŽÀs“à—e‚ª‹ó‚Å‚È‚¢ê‡
if @list.size > 1
@starting = true
end
end
#------------------------------------------
# œ ˆêŽžÁ‹Ž
#------------------------------------------
def erase
@erased = true
refresh
end
#------------------------------------------
# œ ƒŠƒtƒŒƒbƒVƒ…
#------------------------------------------
def refresh
# ƒ[ƒJƒ‹•Ï” new_page ‚ð‰Šú‰»
new_page = nil
# ˆêŽžÁ‹Ž‚³‚ê‚Ä‚¢‚È‚¢ê‡
unless @erased
# ”ԍ†‚Ì‘å‚«‚¢ƒCƒxƒ“ƒgƒy[ƒW‚©‚珇‚É’²‚ׂé
for page in @event.pages.reverse
# ƒCƒxƒ“ƒgðŒ‚ð c ‚ŎQÆ‰Â”‚É
c = page.condition
# ƒXƒCƒbƒ` 1 ðŒŠm”F
if c.switch1_valid
if $game_switches[c.switch1_id] == false
next
end
end
# ƒXƒCƒbƒ` 2 ðŒŠm”F
if c.switch2_valid
if $game_switches[c.switch2_id] == false
next
end
end
# •Ï” ðŒŠm”F
if c.variable_valid
if $game_variables[c.variable_id] < c.variable_value
next
end
end
# ƒZƒ‹ƒtƒXƒCƒbƒ` ðŒŠm”F
if c.self_switch_valid
key = [@map_id, @event.id, c.self_switch_ch]
if $game_self_switches[key] != true
next
end
end
# ƒ[ƒJƒ‹•Ï” new_page ‚ðÝ’è
new_page = page
# ƒ‹[ƒv‚𔲂¯‚é
break
end
end
# ‘O‰ñ‚Æ“¯‚¶ƒCƒxƒ“ƒgƒy[ƒW‚̏ꍇ
if new_page == @page
# ƒƒƒbƒhI—¹
return
end
# @page ‚ÉŒ»Ý‚̃Cƒxƒ“ƒgƒy[ƒW‚ðÝ’è
@page = new_page
# ‹N“®’†ƒtƒ‰ƒO‚ðƒNƒŠƒA
clear_starting
# ðŒ‚ð–ž‚½‚·ƒy[ƒW‚ª‚È‚¢ê‡
if @page == nil
# ŠeƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ðÝ’è
@tile_id = 0
@character_name = ""
@character_hue = 0
@move_type = 0
@through = true
@trigger = nil
@list = nil
@interpreter = nil
# ƒƒƒbƒhI—¹
return
end
# ŠeƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ðÝ’è
@tile_id = @page.graphic.tile_id
@character_name = @page.graphic.character_name
@character_hue = @page.graphic.character_hue
if @original_direction != @page.graphic.direction
@direction = @page.graphic.direction
@original_direction = @direction
@prelock_direction = 0
end
if @original_pattern != @page.graphic.pattern
@pattern = @page.graphic.pattern
@original_pattern = @pattern
end
@opacity = @page.graphic.opacity
@blend_type = @page.graphic.blend_type
@move_type = @page.move_type
@move_speed = @page.move_speed
@move_frequency = @page.move_frequency
@move_route = @page.move_route
@move_route_index = 0
@move_route_forcing = false
@walk_anime = @page.walk_anime
@step_anime = @page.step_anime
@direction_fix = @page.direction_fix
@through = @page.through
@always_on_top = @page.always_on_top
@trigger = @page.trigger
@list = @page.list
@interpreter = nil
# ƒgƒŠƒK[‚ª [•À—ñˆ—] ‚̏ꍇ
if @trigger == 4
# •À—ñˆ——pƒCƒ“ƒ^ƒvƒŠƒ^‚ðì¬
@interpreter = Interpreter.new
end
# Ž©“®ƒCƒxƒ“ƒg‚Ì‹N“®”»’è
check_event_trigger_auto
end
#------------------------------------------
# œ ÚGƒCƒxƒ“ƒg‚Ì‹N“®”»’è
#------------------------------------------
def check_event_trigger_touch(x, y)
# ƒCƒxƒ“ƒgŽÀs’†‚̏ꍇ
if $game_system.map_interpreter.running?
return
end
# ƒgƒŠƒK[‚ª [ƒCƒxƒ“ƒg‚©‚çÚG] ‚©‚ƒvƒŒƒCƒ„[‚̍À•W‚ƈê’v‚µ‚½ê‡
if @trigger == 2 and x == $game_player.x and y == $game_player.y
# ƒWƒƒƒ“ƒv’†ˆÈŠO‚ŁA‹N“®”»’肪³–ʂ̃Cƒxƒ“ƒg‚È‚ç
if not jumping? and not over_trigger?
start
end
end
end
#------------------------------------------
# œ Ž©“®ƒCƒxƒ“ƒg‚Ì‹N“®”»’è
#------------------------------------------
def check_event_trigger_auto
# ƒgƒŠƒK[‚ª [ƒCƒxƒ“ƒg‚©‚çÚG] ‚©‚ƒvƒŒƒCƒ„[‚̍À•W‚ƈê’v‚µ‚½ê‡
if @trigger == 2 and @x == $game_player.x and @y == $game_player.y
# ƒWƒƒƒ“ƒv’†ˆÈŠO‚ŁA‹N“®”»’肪“¯ˆÊ’u‚̃Cƒxƒ“ƒg‚È‚ç
if not jumping? and over_trigger?
start
end
end
# ƒgƒŠƒK[‚ª [Ž©“®ŽÀs] ‚̏ꍇ
if @trigger == 3
start
end
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV
#------------------------------------------
def update
super
# Ž©“®ƒCƒxƒ“ƒg‚Ì‹N“®”»’è
check_event_trigger_auto
# •À—ñˆ—‚ª—LŒø‚̏ꍇ
if @interpreter != nil
# ŽÀs’†‚Å‚È‚¢ê‡
unless @interpreter.running?
# ƒCƒxƒ“ƒg‚ðƒZƒbƒgƒAƒbƒv
@interpreter.setup(@list, @event.id)
end
# ƒCƒ“ƒ^ƒvƒŠƒ^‚ðXV
@interpreter.update
end
end
end

Publié dans poubelle

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