mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
This change prevents the player from opening the fast travel menu and the inventory from the Menu at the same time.
145 lines
3.6 KiB
Ruby
145 lines
3.6 KiB
Ruby
# The main menu window
|
|
class Window_MainMenu < Window_Selectable
|
|
def initialize
|
|
super(16, 16, 608, 64)
|
|
|
|
# Set up menu options
|
|
@commands = Array.new
|
|
@commands << tr('Travel')
|
|
@commands << tr('Notes')
|
|
@commands << tr('Settings')
|
|
@item_max = @commands.size
|
|
@column_max = @item_max
|
|
|
|
# Make invisible by default
|
|
self.visible = false
|
|
self.active = false
|
|
self.back_opacity = 230
|
|
@fade_in = false
|
|
@fade_out = false
|
|
|
|
# Render menu
|
|
self.contents = Bitmap.new(width - 32, 32)
|
|
for i in 0...@item_max
|
|
draw_item(i, normal_color)
|
|
end
|
|
self.z = 9998
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Dispose
|
|
#--------------------------------------------------------------------------
|
|
def dispose
|
|
# Dispose of windows
|
|
super
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Draw Item
|
|
# index : item number
|
|
# color : text color
|
|
#--------------------------------------------------------------------------
|
|
def draw_item(index, color)
|
|
# Set color
|
|
self.contents.font.color = color
|
|
|
|
# Get width of text and cap
|
|
w = self.width / @item_max
|
|
|
|
# Update item
|
|
rect = Rect.new(w * index, 0, w - 32, 32)
|
|
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
|
|
self.contents.draw_text(rect, @commands[index], 1)
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Disable Item
|
|
# index : item number
|
|
#--------------------------------------------------------------------------
|
|
def disable_item(index)
|
|
draw_item(index, disabled_color)
|
|
end
|
|
|
|
# Open/show the menu
|
|
def open
|
|
self.opacity = 0
|
|
self.contents_opacity = 0
|
|
self.visible = true
|
|
@fade_in = true
|
|
self.index = 0
|
|
self.active = true
|
|
end
|
|
|
|
# Update
|
|
def update
|
|
super
|
|
|
|
# Handle fade-in effect
|
|
if @fade_in
|
|
if Input.trigger?(Input::ITEMS)
|
|
@fade_in = false
|
|
@fade_out = true
|
|
else
|
|
self.opacity += 48
|
|
self.contents_opacity += 48
|
|
if self.contents_opacity == 255
|
|
@fade_in = false
|
|
end
|
|
return
|
|
end
|
|
end
|
|
|
|
# Handle fade-out effect
|
|
if @fade_out
|
|
self.opacity -= 48
|
|
self.contents_opacity -= 48
|
|
if self.contents_opacity == 0
|
|
@fade_out = false
|
|
self.visible = false
|
|
self.active = false
|
|
end
|
|
return
|
|
end
|
|
|
|
# Don't do anything if not active
|
|
if !self.active || $game_system.map_interpreter.running?
|
|
return
|
|
end
|
|
|
|
|
|
# Cancel menu
|
|
if Input.trigger?(Input::CANCEL) ||
|
|
Input.trigger?(Input::MENU) ||
|
|
Input.trigger?(Input::ITEMS)
|
|
unless Input.trigger?(Input::ITEMS)
|
|
$game_system.se_play($data_system.cancel_se)
|
|
end
|
|
@fade_out = true
|
|
return
|
|
end
|
|
|
|
# Select menu item
|
|
if Input.trigger?(Input::ACTION)
|
|
self.active = false
|
|
self.opacity = 127
|
|
case @index
|
|
when 0
|
|
if $game_fasttravel.enabled?
|
|
$game_system.se_play($data_system.decision_se)
|
|
$game_temp.travel_menu_calling = true
|
|
@fade_out = true
|
|
else
|
|
$game_system.se_play($data_system.buzzer_se)
|
|
$game_temp.message_ed_text = tr("You cannot fast travel right now.")
|
|
$game_temp.message_proc = Proc.new { self.active = true; self.opacity = 255 }
|
|
end
|
|
when 1
|
|
$game_temp.common_event_id = 15
|
|
@fade_out = true
|
|
else
|
|
$game_system.se_play($data_system.buzzer_se)
|
|
self.active = true
|
|
self.opacity = 255
|
|
end
|
|
return
|
|
end
|
|
|
|
end
|
|
end
|