Refactored summary screen code

This commit is contained in:
Maruno17
2024-08-24 22:14:29 +01:00
parent 45127be5b6
commit 273e1bb565
6 changed files with 573 additions and 382 deletions

View File

@@ -108,12 +108,12 @@ class BitmapSprite < Sprite
# TODO: Replaces def pbDrawImagePositions.
def draw_image(filename, image_x, image_y, src_x = 0, src_y = 0, src_width = -1, src_height = -1)
src_bitmap = AnimatedBitmap.new(pbBitmapName(filename))
src_bitmap = (filename.is_a?(AnimatedBitmap)) ? filename : AnimatedBitmap.new(pbBitmapName(filename))
src_width = (src_width >= 0) ? src_width : src_bitmap.width
src_height = (src_height >= 0) ? src_height : src_bitmap.height
src_rect = Rect.new(src_x, src_y, src_width, src_height)
self.bitmap.blt(image_x, image_y, src_bitmap.bitmap, src_rect)
src_bitmap.dispose
src_bitmap.dispose if !filename.is_a?(AnimatedBitmap)
end
end

View File

@@ -9,6 +9,7 @@ module GameData
class Stat
attr_reader :id
attr_reader :real_name
attr_reader :real_name_semi_brief
attr_reader :real_name_brief
attr_reader :type
attr_reader :pbs_order
@@ -39,11 +40,12 @@ module GameData
#---------------------------------------------------------------------------
def initialize(hash)
@id = hash[:id]
@real_name = hash[:name] || "Unnamed"
@real_name_brief = hash[:name_brief] || "None"
@type = hash[:type] || :none
@pbs_order = hash[:pbs_order] || -1
@id = hash[:id]
@real_name = hash[:name] || "Unnamed"
@real_name_semi_brief = hash[:name_semi_brief]
@real_name_brief = hash[:name_brief] || "None"
@type = hash[:type] || :none
@pbs_order = hash[:pbs_order] || -1
end
# @return [String] the translated name of this stat
@@ -51,6 +53,10 @@ module GameData
return _INTL(@real_name)
end
def name_semi_brief
return _INTL(@real_name_semi_brief || @real_name)
end
# @return [String] the translated brief name of this stat
def name_brief
return _INTL(@real_name_brief)
@@ -87,19 +93,21 @@ GameData::Stat.register({
})
GameData::Stat.register({
:id => :SPECIAL_ATTACK,
:name => _INTL("Special Attack"),
:name_brief => _INTL("SpAtk"),
:type => :main_battle,
:pbs_order => 4
:id => :SPECIAL_ATTACK,
:name => _INTL("Special Attack"),
:name_semi_brief => _INTL("Sp. Atk"),
:name_brief => _INTL("SpAtk"),
:type => :main_battle,
:pbs_order => 4
})
GameData::Stat.register({
:id => :SPECIAL_DEFENSE,
:name => _INTL("Special Defense"),
:name_brief => _INTL("SpDef"),
:type => :main_battle,
:pbs_order => 5
:id => :SPECIAL_DEFENSE,
:name => _INTL("Special Defense"),
:name_semi_brief => _INTL("Sp. Def"),
:name_brief => _INTL("SpDef"),
:type => :main_battle,
:pbs_order => 5
})
GameData::Stat.register({

View File

@@ -780,6 +780,7 @@ end
# Give an item to a Pokémon to hold, and take a held item from a Pokémon.
#===============================================================================
def pbGiveItemToPokemon(item, pkmn, scene, pkmnid = 0)
return false if item.nil?
newitemname = GameData::Item.get(item).portion_name
if pkmn.egg?
scene.pbDisplay(_INTL("Eggs can't hold items."))

View File

@@ -314,6 +314,21 @@ class Pokemon
@ready_to_evolve = false
end
#-----------------------------------------------------------------------------
# Stats.
#-----------------------------------------------------------------------------
def stat(id)
case id
when :HP then return @totalhp
when :ATTACK then return @attack
when :DEFENSE then return @defense
when :SPECIAL_ATTACK then return @spatk
when :SPECIAL_DEFENSE then return @spdef
when :SPEED then return @speed
end
return 0
end
#-----------------------------------------------------------------------------
# Types.
#-----------------------------------------------------------------------------

View File

@@ -54,11 +54,11 @@ module UI
#---------------------------------------------------------------------------
def add_overlay(key)
@sprites[key] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
@sprites[key].z = 1000
self.class::TEXT_COLOR_THEMES.each_pair { |key, values| @sprites[key].add_text_theme(key, *values) }
pbSetSystemFont(@sprites[key].bitmap)
def add_overlay(overlay)
@sprites[overlay] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
@sprites[overlay].z = 1000
self.class::TEXT_COLOR_THEMES.each_pair { |key, values| @sprites[overlay].add_text_theme(key, *values) }
pbSetSystemFont(@sprites[overlay].bitmap)
end
def add_icon_sprite(key, x, y, filename = nil)
@@ -66,6 +66,23 @@ module UI
@sprites[key].setBitmap(filename) if filename
end
def add_animated_arrow(key, x, y, direction)
case direction
when :up
@sprites[key] = AnimatedSprite.new(UI_FOLDER + "up_arrow", 8, 28, 40, 2, @viewport)
when :down
@sprites[key] = AnimatedSprite.new(UI_FOLDER + "down_arrow", 8, 28, 40, 2, @viewport)
when :left
@sprites[key] = AnimatedSprite.new(UI_FOLDER + "left_arrow", 8, 40, 28, 2, @viewport)
when :right
@sprites[key] = AnimatedSprite.new(UI_FOLDER + "right_arrow", 8, 40, 28, 2, @viewport)
end
@sprites[key].x = x
@sprites[key].y = y
@sprites[key].visible = false
@sprites[key].play
end
#---------------------------------------------------------------------------
def fade_in
@@ -230,6 +247,18 @@ module UI
@sprites[overlay].draw_themed_text(string.to_s, text_x, text_y, align, theme, outline)
end
def draw_paragraph_text(string, text_x, text_y, text_width, num_lines, theme: :default, overlay: :overlay)
drawTextEx(@sprites[overlay].bitmap, text_x, text_y, text_width, num_lines,
string, *self.class::TEXT_COLOR_THEMES[theme])
end
# NOTE: This also draws string in a paragraph, but with no limit on the
# number of lines.
def draw_formatted_text(string, text_x, text_y, text_width, theme: :default, overlay: :overlay)
drawFormattedTextEx(@sprites[overlay].bitmap, text_x, text_y, text_width,
string, *self.class::TEXT_COLOR_THEMES[theme])
end
def draw_image(filename, image_x, image_y, src_x = 0, src_y = 0, src_width = -1, src_height = -1, overlay: :overlay)
@sprites[overlay].draw_image(filename, image_x, image_y, src_x, src_y, src_width, src_height)
end

File diff suppressed because it is too large Load Diff