Update 6.8

This commit is contained in:
chardub
2026-07-10 15:42:06 -04:00
parent 5b85e72cb2
commit 6a6f126a18
7871 changed files with 493194 additions and 224826 deletions
@@ -4,7 +4,6 @@ class CharacterSelectionMenuView
attr_accessor :sprites
attr_accessor :textValues
OPTIONS_START_Y = 66
CURSOR_Y_MARGIN = 50
CURSOR_X_MARGIN = 76
@@ -14,42 +13,37 @@ class CharacterSelectionMenuView
OPTIONS_LABEL_X = 50
OPTIONS_LABEL_WIDTH = 100
OPTIONS_VALUE_X = 194
SELECTOR_X = 120
SELECTOR_STAGGER_OFFSET=26
SELECTOR_STAGGER_OFFSET = 26
ARROW_LEFT_X_POSITION = 75
ARROW_RIGHT_X_POSITION = 275
ARROWS_Y_OFFSET = 10#20
ARROWS_Y_OFFSET = 10 # 20
CONFIRM_X = 296
CONFIRM_Y= 322
CONFIRM_Y = 322
STAGGER_OFFSET_1 = 26
STAGGER_OFFSET_2 = 50
def initialize
@presenter = CharacterSelectMenuPresenter.new(self)
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@sprites = {}
@textValues={}
@max_index=5
@textValues = {}
@max_index = 5
end
def init_graphics()
@sprites["bg"] = IconSprite.new(@viewport)
@sprites["bg"].setBitmap("Graphics/Pictures/trainer_application_form")
@sprites["select"] = IconSprite.new(@viewport)
@sprites["select"].setBitmap("Graphics/Pictures/cc_selection_box")
@sprites["select"].x = get_cursor_x_position(0)#OPTIONS_LABEL_X + OPTIONS_LABEL_WIDTH + CURSOR_X_MARGIN
@sprites["select"].x = get_cursor_x_position(0) # OPTIONS_LABEL_X + OPTIONS_LABEL_WIDTH + CURSOR_X_MARGIN
@sprites["select"].y = OPTIONS_START_Y
@sprites["select"].visible = true
@@ -59,43 +53,48 @@ class CharacterSelectionMenuView
@sprites["leftarrow"].visible = false
@sprites["leftarrow"].play
@sprites["rightarrow"] = AnimatedSprite.new("Graphics/Pictures/rightarrow", 8, 40, 28, 2, @viewport)
@sprites["rightarrow"].x = ARROW_RIGHT_X_POSITION
@sprites["rightarrow"].y = 0
@sprites["rightarrow"].visible = false
@sprites["rightarrow"].play
@presenter.setInitialValues()
end
def setMaxIndex(maxIndex)
@max_index=maxIndex
@max_index = maxIndex
end
def init_labels()
Kernel.pbDisplayText("Confirm", (CONFIRM_X+CURSOR_X_MARGIN), CONFIRM_Y)
#Labels are directly in the image
# current_Y = OPTIONS_START_Y
# for option in @presenter.options
# x_pos = option == "Confirm" ? OPTIONS_VALUE_X : OPTIONS_LABEL_X
#
# Kernel.pbDisplayText(option, x_pos, current_Y)
# current_Y += CURSOR_Y_MARGIN
# end
@textValues["confirm"].dispose if @textValues["confirm"]
yposition = CONFIRM_Y
xposition = CONFIRM_X+CURSOR_X_MARGIN
baseColor= baseColor ? baseColor : Color.new(72,72,72)
shadowColor= shadowColor ? shadowColor : Color.new(160,160,160)
@textValues["confirm"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
textPosition=[
[_INTL("Confirm"),xposition,yposition,2,baseColor,shadowColor],
]
pbSetSystemFont(@textValues["confirm"].bitmap)
pbDrawTextPositions(@textValues["confirm"].bitmap,textPosition)
#Kernel.pbDisplayText("Confirm", (CONFIRM_X+CURSOR_X_MARGIN), CONFIRM_Y)
end
def start
init_graphics()
init_labels()
@presenter.setInitialValues()
@presenter.main()
end
def start_rival
init_graphics()
@sprites["bg"].setBitmap("Graphics/Pictures/trainer_application_form_rival")
init_labels()
@presenter.main_rival()
end
def get_cursor_y_position(index)
return CONFIRM_Y if index == @max_index
return index * CURSOR_Y_MARGIN + OPTIONS_START_Y
@@ -122,52 +121,48 @@ class CharacterSelectionMenuView
return 0
end
def showSideArrows(y_index)
y_position = get_cursor_y_position(y_index)
@sprites["rightarrow"].y=y_position+ARROWS_Y_OFFSET
@sprites["leftarrow"].y=y_position+ARROWS_Y_OFFSET
@sprites["rightarrow"].y = y_position + ARROWS_Y_OFFSET
@sprites["leftarrow"].y = y_position + ARROWS_Y_OFFSET
@sprites["leftarrow"].x=getTextBoxStaggerOffset(y_index)+ARROW_LEFT_X_POSITION
@sprites["rightarrow"].x= getTextBoxStaggerOffset(y_index)+ARROW_RIGHT_X_POSITION
@sprites["leftarrow"].x = getTextBoxStaggerOffset(y_index) + ARROW_LEFT_X_POSITION
@sprites["rightarrow"].x = getTextBoxStaggerOffset(y_index) + ARROW_RIGHT_X_POSITION
@sprites["rightarrow"].visible=true
@sprites["leftarrow"].visible=true
@sprites["rightarrow"].visible = true
@sprites["leftarrow"].visible = true
end
def hideSideArrows()
@sprites["rightarrow"].visible=false
@sprites["leftarrow"].visible=false
@sprites["rightarrow"].visible = false
@sprites["leftarrow"].visible = false
end
def displayAge(age,y_index)
def displayAge(age, y_index)
y_position = get_cursor_y_position(y_index)
x_position = get_value_x_position(y_index)
Kernel.pbClearNumber()
Kernel.pbDisplayNumber(age,x_position,y_position)
Kernel.pbDisplayNumber(age, x_position, y_position)
end
def displayText(spriteId,text,y_index)
def displayText(spriteId, text, y_index)
@textValues[spriteId].dispose if @textValues[spriteId]
yposition = get_cursor_y_position(y_index)
xposition = get_value_x_position(y_index)
baseColor= baseColor ? baseColor : Color.new(72,72,72)
shadowColor= shadowColor ? shadowColor : Color.new(160,160,160)
@textValues[spriteId] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
text1=_INTL(text)
textPosition=[
[text1,xposition,yposition,2,baseColor,shadowColor],
baseColor = baseColor ? baseColor : Color.new(72, 72, 72)
shadowColor = shadowColor ? shadowColor : Color.new(160, 160, 160)
@textValues[spriteId] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
text1 = _INTL(text)
textPosition = [
[text1, xposition, yposition, 2, baseColor, shadowColor],
]
pbSetSystemFont(@textValues[spriteId].bitmap)
pbDrawTextPositions(@textValues[spriteId].bitmap,textPosition)
pbDrawTextPositions(@textValues[spriteId].bitmap, textPosition)
end
def updateGraphics()
Graphics.update
Input.update
@@ -177,5 +172,4 @@ class CharacterSelectionMenuView
end
end
end
@@ -1,24 +1,23 @@
class CharacterSelectMenuPresenter
attr_accessor :options
attr_reader :current_index
OPTION_NAME = 'Name'
OPTION_AGE = "Age"
OPTION_GENDER = "Gender"
OPTION_HAIR = "Hair"
OPTION_SKIN = "Skin"
OPTION_CONFIRM = "Confirm"
OPTION_NAME = _INTL("Name")
OPTION_AGE = _INTL("Age")
OPTION_GENDER = _INTL("Gender")
OPTION_HAIR = _INTL("Hair")
OPTION_SKIN = _INTL("Skin")
OPTION_CONFIRM = _INTL("Confirm")
MIN_AGE = 10
MAX_AGE = 17
MIN_SKIN_COLOR = 1
MAX_SKIN_COLOR = 6
SKIN_COLOR_IDS = ["Type A", "Type B", "Type C", "Type D", "Type E", "Type F"]
GENDERS_IDS = ["Female", "Male"]
SKIN_COLOR_IDS = [_INTL("Type A"), _INTL("Type B"), _INTL("Type C"), _INTL("Type D"), _INTL("Type E"), _INTL("Type F")]
GENDERS_IDS = [_INTL("Female"), _INTL("Male")]
HAIR_COLOR_IDS = [1, 2, 3, 4]
HAIR_COLOR_NAMES = ["Blonde", "Light Brown", "Dark Brown", "Black"]
HAIR_COLOR_NAMES = [_INTL("Blonde"), _INTL("Light Brown"), _INTL("Dark Brown"), _INTL("Black")]
#ids for displayed text sprites
NAME_TEXT_ID = "name"
@@ -35,6 +34,7 @@ class CharacterSelectMenuPresenter
@hairstyle = "red"
@hairColor = 2
@is_player= true
@options = [OPTION_NAME, OPTION_GENDER, OPTION_AGE, OPTION_SKIN, OPTION_HAIR, OPTION_CONFIRM]
@trainerPreview = TrainerClothesPreview.new(300, 80, false, "POKEBALL")
@@ -42,9 +42,44 @@ class CharacterSelectMenuPresenter
@closed = false
@current_index = 0
@view.setMaxIndex(@options.length - 1)
@rival = false
end
#For selecting the rival in Hoenn
def main_rival()
trainer_hair = $Trainer.hair
trainer_hat = $Trainer.hat
trainer_clothes = $Trainer.clothes
trainer_skinTone = $Trainer.skin_tone
trainer_name = $Trainer.name
@trainerPreview.set_trainer(false)
$Trainer.hat = nil
@options = [OPTION_NAME, OPTION_SKIN, OPTION_HAIR, OPTION_CONFIRM]
@view.setMaxIndex(@options.length - 1)
if isPlayerMale
@hairstyle = getDefaultHair(GENDER_FEMALE)
$Trainer.clothes = getDefaultClothes(GENDER_FEMALE)
$Trainer.hair = getDefaultHair(GENDER_FEMALE)
else
@hairstyle = getDefaultHair(GENDER_MALE)
$Trainer.clothes = getDefaultClothes(GENDER_MALE)
$Trainer.hair = getDefaultHair(GENDER_MALE)
end
@rival = true
setInitialValuesRival()
main()
$Trainer.init_rival_appearance($Trainer.skin_tone, $Trainer.hair)
pbSet(VAR_RIVAL_NAME, @name)
$Trainer.hair = trainer_hair
$Trainer.hat = trainer_hat
$Trainer.clothes = trainer_clothes
$Trainer.skin_tone = trainer_skinTone
$Trainer.name = trainer_name
$scene.reset_player_sprite
end
def main()
#@trainerPreview.show()
pbSEPlay("GUI naming tab swap start", 80, 100)
@current_index = 0
loop do
@@ -66,6 +101,7 @@ class CharacterSelectMenuPresenter
def updateTrainerPreview
@trainerPreview.resetOutfits
@trainerPreview.hat2=nil
@trainerPreview.updatePreview
end
@@ -74,7 +110,7 @@ class CharacterSelectMenuPresenter
case selected_option
when OPTION_NAME
pbSEPlay("GUI summary change page", 80, 100)
@name = pbEnterPlayerName(_INTL("Enter your name"), 0, Settings::MAX_PLAYER_NAME_SIZE)
@name = pbEnterPlayerName(_INTL("Name?"), 0, Settings::MAX_PLAYER_NAME_SIZE, @name)
@name = getDefaultName() if @name == ''
pbSEPlay("GUI trainer card open", 80, 100)
updateDisplayedName(current_index)
@@ -102,6 +138,9 @@ class CharacterSelectMenuPresenter
end
def getDefaultName()
if @rival
return init_rival_name
end
return getPlayerDefaultName(@gender)
end
@@ -111,7 +150,6 @@ class CharacterSelectMenuPresenter
def applyAllSelectedValues
applyGender(@gender)
echoln @age
pbSet(VAR_TRAINER_AGE, @age)
$Trainer.skin_tone = @skinTone
$Trainer.name = @name
@@ -135,9 +173,21 @@ class CharacterSelectMenuPresenter
@current_index = @options.length - 1 if @current_index <= -1
update_cursor(@current_index)
setHatVisibility(@current_index)
return @current_index
end
def setHatVisibility(index)
return if @rival
case @options[index]
when OPTION_HAIR
$Trainer.hat=nil
else
$Trainer.hat = getDefaultHat(@gender)
end
updateTrainerPreview
end
def update_cursor(index)
@view.sprites["select"].y = @view.get_cursor_y_position(index)
@view.sprites["select"].x = @view.get_cursor_x_position(index)
@@ -146,7 +196,7 @@ class CharacterSelectMenuPresenter
end
def close_menu
@trainerPreview.erase()
@trainerPreview.erase
Kernel.pbClearNumber()
Kernel.pbClearText()
pbDisposeSpriteHash(@view.sprites)
@@ -229,6 +279,7 @@ class CharacterSelectMenuPresenter
end
def applyGender(gender_index)
return if @rival
# outfitId = gender + 1
pbSet(VAR_TRAINER_GENDER, gender_index)
@@ -273,4 +324,16 @@ class CharacterSelectMenuPresenter
updateTrainerPreview()
end
def setInitialValuesRival()
hairIndex = getOptionIndex(OPTION_HAIR)
skinIndex = getOptionIndex(OPTION_SKIN)
@name = init_rival_name
updateDisplayedName(getOptionIndex(OPTION_NAME))
setHairColor(hairIndex, 0)
setSkinColor(skinIndex, 0)
updateTrainerPreview()
end
end
@@ -12,7 +12,7 @@ def selectHairstyle(all_unlocked = false)
selector = OutfitSelector.new
display_outfit_preview()
hat = $Trainer.hat
commands = ["Next style", "Previous style", "Toggle hat", "Back"]
commands = [_INTL("Next style"), _INTL("Previous style"), _INTL("Toggle hat"), _INTL("Back")]
previous_input = 0
# To enable turning the common event that lets you turn around while in the dialog box
while (true)
@@ -56,6 +56,45 @@ def swapToNextHairVersion()
$Trainer.hair = getFullHairId(hair_style,newVersion)
end
def select_bike_color
original_color = $Trainer.bike_color
$game_switches[SWITCH_SELECTING_CLOTHES]=true
$game_map.update
commands = [_INTL("Shift up"), _INTL("Shift down"), _INTL("Default"), _INTL("Confirm"), _INTL("Never Mind")]
previous_input = 0
while true
choice = pbShowCommands(nil, commands, commands.length, previous_input)
previous_input = choice
case choice
when 0 #NEXT
pbSEPlay("GUI storage pick up", 80, 100)
shiftBikeColor(10)
ret = true
when 1 #PREVIOUS
pbSEPlay("GUI storage pick up", 80, 100)
shiftBikeColor(-10)
ret = true
when 2 #Reset
pbSEPlay("GUI storage put down", 80, 100)
$Trainer.bike_color = 0
refreshPlayerOutfit
ret = original_color != 0
when 3 #Confirm
break
else
pbSEPlay("GUI storage put down", 80, 100)
$Trainer.bike_color = original_color
ret = false
break
end
end
$game_switches[SWITCH_SELECTING_CLOTHES]=false
$game_map.update
return ret
end
def selectHairColor
original_color = $Trainer.hair_color
original_hair = $Trainer.hair
@@ -63,7 +102,8 @@ def selectHairColor
$game_map.update
display_outfit_preview()
hat = $Trainer.hat
commands = ["Swap base color", "Shift up", "Shift down", "Toggle hat", "Remove dye", "Confirm", "Never Mind"]
hat2 = $Trainer.hat2
commands = [_INTL("Swap base color"), _INTL("Shift up"), _INTL("Shift down"), _INTL("Toggle hat"), _INTL("Remove dye"), _INTL("Confirm"), _INTL("Never Mind")]
previous_input = 0
while (true)
@@ -89,8 +129,10 @@ def selectHairColor
pbSEPlay("GUI storage put down", 80, 100)
if hat == $Trainer.hat
$Trainer.hat = nil
$Trainer.hat2 = nil
else
$Trainer.hat = hat
$Trainer.hat2 = hat2
end
display_outfit_preview()
when 4 #Reset
@@ -109,6 +151,7 @@ def selectHairColor
end
hide_outfit_preview()
$Trainer.hat = hat
$Trainer.hat2 = hat2
$game_switches[SWITCH_SELECTING_CLOTHES]=false
$game_map.update
return ret
@@ -118,7 +161,7 @@ end
def selectHatColor(secondary_hat=false)
original_color = secondary_hat ? $Trainer.hat2_color : $Trainer.hat_color
display_outfit_preview()
commands = ["Shift up", "Shift down", "Reset", "Confirm", "Never Mind"]
commands = [_INTL("Shift up"), _INTL("Shift down"), _INTL("Reset"), _INTL("Confirm"), _INTL("Never Mind")]
previous_input = 0
while (true)
choice = pbShowCommands(nil, commands, commands.length, previous_input)
@@ -158,7 +201,7 @@ end
def selectClothesColor
original_color = $Trainer.clothes_color
display_outfit_preview()
commands = ["Shift up", "Shift down", "Reset", "Confirm", "Never Mind"]
commands = [_INTL("Shift up"), _INTL("Shift down"), _INTL("Reset"), _INTL("Confirm"), _INTL("Never Mind")]
previous_input = 0
ret = false
while (true)
@@ -197,7 +240,7 @@ end
def selectHat(all_unlocked = false)
selector = OutfitSelector.new
display_outfit_preview()
commands = ["Next hat", "Previous hat", "Remove hat", "Back"]
commands = [_INTL("Next hat"), _INTL("Previous hat"), _INTL("Remove hat"), _INTL("Back")]
previous_input = 0
while (true)
choice = pbShowCommands(nil, commands, commands.length, previous_input)
@@ -230,10 +273,10 @@ end
def selectClothes(all_unlocked = false)
selector = OutfitSelector.new
display_outfit_preview()
commands = ["Next", "Previous"]
commands = [_INTL("Next"), _INTL("Previous")]
#commands << "Remove clothes (DEBUG)" if $DEBUG
commands << "Remove" if $DEBUG
commands << "Back"
commands << _INTL("Remove") if $DEBUG
commands << _INTL("Back")
previous_input = 0
while (true)
choice = pbShowCommands(nil, commands, commands.length, previous_input)
@@ -262,4 +305,4 @@ end
def place_hat_on_pokemon(pokemon)
hatscreen = PokemonHatPresenter.new(nil, pokemon)
hatscreen.pbStartScreen()
end
end
@@ -146,15 +146,18 @@ class PokemonHatPresenter
def initialize_bitmap()
spriteLoader = BattleSpriteLoader.new
if @pokemon.isTripleFusion?
#todo
elsif @pokemon.isFusion?
@original_pokemon_bitmap = spriteLoader.load_fusion_sprite(@pokemon.head_id(),@pokemon.body_id())
if $PokemonSystem.random_sprites
@original_pokemon_bitmap = spriteLoader.load_pif_sprite_pokemon(@pokemon)
else
echoln @pokemon
echoln @pokemon.species_data
@original_pokemon_bitmap = spriteLoader.load_base_sprite(@pokemon.id_number)
if @pokemon.isTripleFusion?
#todo
elsif @pokemon.isFusion?
@original_pokemon_bitmap = spriteLoader.load_fusion_sprite(@pokemon.head_id(),@pokemon.body_id())
else
@original_pokemon_bitmap = spriteLoader.load_base_sprite(@pokemon.id_number)
end
end
@original_pokemon_bitmap.scale_bitmap(Settings::FRONTSPRITE_SCALE)
end
@@ -1,7 +1,7 @@
class TrainerClothesPreview
attr_writer :pokeball, :clothes, :hat, :hat2, :hair, :skin_tone, :hair_color, :hat_color,:hat2_color, :clothes_color
def initialize(x = 0, y = 0, windowed = true, pokeball = nil)
def initialize(x = 0, y = 0, windowed = true, pokeball = nil, is_trainer = true)
@playerBitmap = nil
@playerSprite = nil
@x_pos = x
@@ -9,6 +9,7 @@ class TrainerClothesPreview
@windowed = windowed
@pokeball = pokeball
@is_trainer = is_trainer
resetOutfits()
end
@@ -28,6 +29,10 @@ class TrainerClothesPreview
end
end
def set_trainer(value)
@is_trainer = value
end
def resetOutfits()
@clothes = $Trainer.clothes
@hat = $Trainer.hat
@@ -46,7 +51,8 @@ class TrainerClothesPreview
@clothes,
@hat,@hat2, @hair,
@skin_tone,
@hair_color, @hat_color, @clothes_color, @hat2_color)
@hair_color, @hat_color, @clothes_color, @hat2_color,
@is_trainer)
initialize_preview()
end
@@ -7,22 +7,32 @@ class OutfitsMartAdapter < PokemonMartAdapter
WORN_ITEM_SHADOW_COLOR = MessageConfig::BLUE_TEXT_SHADOW_COLOR
REGIONAL_SET_BASE_COLOR = Color.new(76,72,104)
REGIONAL_SET_SHADOW_COLOR = Color.new(173,165,189)
CITY_EXCLUSIVE_BASE_COLOR = Color.new(61 , 125, 70) #Color.new(72 , 104, 83)
CITY_EXCLUSIVE_SHADOW_COLOR = Color.new(165, 189, 178)
def initialize(stock = [], isShop = true, isSecondaryHat = false)
def initialize(stock = [], isShop = true, isSecondaryHat = false, prices_override = {})
@is_secondary_hat = isSecondaryHat
@items = stock
@worn_clothes = get_current_clothes()
@isShop = isShop
@version = nil
@prices_override = prices_override
$Trainer.dyed_hats = {} if !$Trainer.dyed_hats
$Trainer.dyed_clothes = {} if !$Trainer.dyed_clothes
@REGIONAL_SET_BASE_COLOR = Color.new(76,72,104)
@REGIONAL_SET_SHADOW_COLOR = Color.new(173,165,189)
@CITY_EXCLUSIVE_BASE_COLOR = Color.new(61 , 125, 70) #Color.new(72 , 104, 83)
@CITY_EXCLUSIVE_SHADOW_COLOR = Color.new(165, 189, 178)
if isDarkMode
@REGIONAL_SET_BASE_COLOR, @REGIONAL_SET_SHADOW_COLOR = @REGIONAL_SET_SHADOW_COLOR, @REGIONAL_SET_BASE_COLOR
@CITY_EXCLUSIVE_BASE_COLOR, @CITY_EXCLUSIVE_SHADOW_COLOR = @CITY_EXCLUSIVE_SHADOW_COLOR, @CITY_EXCLUSIVE_BASE_COLOR
end
end
def list_regional_set_items()
return []
end
@@ -69,6 +79,9 @@ class OutfitsMartAdapter < PokemonMartAdapter
def getPrice(item, selling = nil)
return 0 if !@isShop
if @prices_override && @prices_override.has_key?(item.id)
return @prices_override[item.id]
end
return nil if itemOwned(item)
return item.price.to_i
end
@@ -101,6 +114,7 @@ class OutfitsMartAdapter < PokemonMartAdapter
end
def isItemInRegionalSet(item)
return false if Settings::HOENN
return item.is_in_regional_set
end
@@ -109,27 +123,40 @@ class OutfitsMartAdapter < PokemonMartAdapter
end
def getBaseColorOverride(item)
return REGIONAL_SET_BASE_COLOR if isItemInRegionalSet(item)
return CITY_EXCLUSIVE_BASE_COLOR if isItemCityExclusive(item)
return @REGIONAL_SET_BASE_COLOR if isItemInRegionalSet(item)
return @CITY_EXCLUSIVE_BASE_COLOR if isItemCityExclusive(item)
return nil
end
def getShadowColorOverride(item)
return REGIONAL_SET_SHADOW_COLOR if isItemInRegionalSet(item)
return CITY_EXCLUSIVE_SHADOW_COLOR if isItemCityExclusive(item)
return @REGIONAL_SET_SHADOW_COLOR if isItemInRegionalSet(item)
return @CITY_EXCLUSIVE_SHADOW_COLOR if isItemCityExclusive(item)
return nil
end
def getMoney
super
if Settings::HOENN
return $Trainer.cosmetics_money
else
super
end
end
def getMoneyString
super
if Settings::HOENN
$Trainer.cosmetics_money = 0 unless $Trainer.cosmetics_money
return pbGetCosmeticsMoneyString
else
super
end
end
def setMoney(value)
super
if Settings::HOENN
$Trainer.cosmetics_money = value
else
super
end
end
def getItemIconRect(_item)
@@ -10,8 +10,8 @@ class ClothesMartAdapter < OutfitsMartAdapter
end
end
def initialize(stock = nil, isShop = nil)
super
def initialize(stock = nil, isShop = nil, prices_override = {})
super(stock,isShop,false,prices_override)
end
def getName(item)
@@ -22,6 +22,7 @@ class ClothesMartAdapter < OutfitsMartAdapter
def getDescription(item)
return DEFAULT_DESCRIPTION if !item.description
return item.description
end
@@ -1,4 +1,4 @@
def genericOutfitsShopMenu(stock = [], itemType = nil, versions = false, isShop=true, message=nil)
def genericOutfitsShopMenu(stock = [], itemType = nil, versions = false, isShop=true, message=nil, price_overrides = {})
commands = []
commands[cmdBuy = commands.length] = _INTL("Buy")
commands[cmdQuit = commands.length] = _INTL("Quit")
@@ -6,13 +6,13 @@ def genericOutfitsShopMenu(stock = [], itemType = nil, versions = false, isShop=
cmd = pbMessage(message, commands, cmdQuit + 1)
loop do
if cmdBuy >= 0 && cmd == cmdBuy
adapter = getAdapter(itemType, stock, isShop)
adapter = getAdapter(itemType, stock, isShop,false,price_overrides)
view = ClothesShopView.new()
presenter = getPresenter(itemType, view, stock, adapter, versions)
presenter.pbBuyScreen
break
else
pbMessage(_INTL("Please come again!"))
pbMessage(_INTL("Please come again!")) unless message
break
end
end
@@ -29,14 +29,14 @@ def getPresenter(itemType, view, stock, adapter, versions)
end
end
def getAdapter(itemType, stock, isShop, is_secondary=false)
def getAdapter(itemType, stock, isShop, is_secondary=false, prices_override={})
case itemType
when :CLOTHES
return ClothesMartAdapter.new(stock, isShop)
return ClothesMartAdapter.new(stock, isShop,prices_override)
when :HAT
return HatsMartAdapter.new(stock, isShop,is_secondary)
return HatsMartAdapter.new(stock, isShop,is_secondary,prices_override)
when :HAIR
return HairMartAdapter.new(stock, isShop)
return HairMartAdapter.new(stock, isShop,prices_override)
end
end
@@ -60,7 +60,7 @@ def hatShop(outfits_list = [], free=false, customMessage=nil)
genericOutfitsShopMenu(stock, :HAT,false,!free,customMessage)
end
def hairShop(outfits_list = [],free=false, customMessage=nil)
def hairShop(outfits_list = [],free=false, customMessage=nil,price_overrides={})
currentHair = getSimplifiedHairIdFromFullID($Trainer.hair)
stock = [:SWAP_COLOR]
#always add current hairstyle as first option (in case the player just wants to swap the color)
@@ -70,7 +70,19 @@ def hairShop(outfits_list = [],free=false, customMessage=nil)
outfit = get_hair_by_id(outfit_id)
stock << outfit if outfit
}
genericOutfitsShopMenu(stock, :HAIR, true,!free,customMessage)
genericOutfitsShopMenu(stock, :HAIR, true,!free,customMessage, price_overrides)
end
def pokemonHairstylesShop()
hairShop([HAIR_EEVEE,HAIR_TORCHIC,
HAIR_MUDKIP, HAIR_MAWILE,
HAIR_ROSERADE_M,HAIR_ROSERADE_F,
HAIR_LYCANROC, HAIR_HAPPINY,
HAIR_GARDEVOIR, HAIR_LEAFEON,
HAIR_ORICORIO,HAIR_TYRANITAR,
HAIR_HOOH,HAIR_CRESSELIA,
HAIR_LATIAS,])
end
def switchHatsPosition()
@@ -24,18 +24,10 @@ class ClothesShopPresenter < PokemonMartScreen
end
def swapHats()
echoln "hat 1: #{$Trainer.hat}"
echoln "hat 2: #{$Trainer.hat2}"
$Trainer.hat, $Trainer.hat2 = $Trainer.hat2, $Trainer.hat
pbSEPlay("GUI naming tab swap start")
new_selected_hat = @adapter.is_secondary_hat ? $Trainer.hat2 : $Trainer.hat
echoln "hat 1: #{$Trainer.hat}"
echoln "hat 2: #{$Trainer.hat2}"
echoln "new selected hat: #{new_selected_hat}"
@scene.select_specific_item(new_selected_hat,true)
@scene.updatePreviewWindow
end
@@ -1,7 +1,8 @@
class ClothesShopView < PokemonMart_Scene
def initialize(currency_name = "Money")
def initialize(currency_name = _INTL("Money"))
@currency_name = currency_name
@currency_name = COSMETIC_CURRENCY_NAME if Settings::HOENN
end
def pbStartBuyOrSellScene(buying, stock, adapter)
@@ -18,8 +19,9 @@ class ClothesShopView < PokemonMart_Scene
@sprites["trainerPreview"].show()
@sprites["moneywindow"].visible = false if !@adapter.isShop?
@sprites["itemwindow"].setAllowPageJump(false)
Kernel.pbDisplayText(@adapter.toggleText, 80, 200, 99999) if @adapter.toggleText
Kernel.pbDisplayText(@adapter.toggleText, 100, 240, 99999) if @adapter.toggleText
end
@@ -46,13 +48,27 @@ class ClothesShopView < PokemonMart_Scene
@initial_direction = $game_player.direction
$game_player.turn_down
pbRefreshSceneMap
# pbSEPlay("GUI menu open")
# $game_player.center($game_player.x+7, $game_player.y-5)
# @initial_direction = $game_player.direction
# $game_player.turn_down
# Graphics.update
# Input.update
# pbRefreshSceneMap
end
def scroll_back_map
@adapter.reset_player_clothes()
pbScrollMap(DIRECTION_LEFT, 7, 6)
pbScrollMap(DIRECTION_DOWN, 5, 6)
$game_player.turn_generic(@initial_direction)
# $game_player.center($game_player.x, $game_player.y)
# Graphics.update
# Input.update
# pbRefreshSceneMap
end
def refreshStock(adapter)
@@ -75,7 +91,7 @@ class ClothesShopView < PokemonMart_Scene
text = @adapter.getDescription(item)
end
else
text = _INTL("Quit.")
text = getQuitDescription
end
@sprites["itemtextwindow"].text = text
itemwindow.refresh
@@ -98,11 +114,14 @@ class ClothesShopView < PokemonMart_Scene
end
@adapter.updateTrainerPreview(itemwindow.item, @sprites["trainerPreview"])
else
description = _INTL("Quit.")
description = getQuitDescription
end
@sprites["itemtextwindow"].text = description
end
def getQuitDescription
return _INTL("Outfits are submitted by the community. More will be added with future updates.")
end
def updatePreviewWindow
itemwindow= @sprites["itemwindow"]
@adapter.updateTrainerPreview(itemwindow.item, @sprites["trainerPreview"])
@@ -123,15 +142,15 @@ class ClothesShopView < PokemonMart_Scene
if itemwindow.item != olditem
displayNewItem(itemwindow)
end
if Input.trigger?(Input::AUX1) #L button - disabled because same key as speed up...
#@adapter.switchVersion(itemwindow.item, -1)
#updateTrainerPreview()
if Input.trigger?(Input::L) #X button
@adapter.switchVersion(itemwindow.item, -1)
updateTrainerPreview()
end
if Input.trigger?(Input::AUX2) || Input.trigger?(Input::SHIFT) #R button
if Input.trigger?(Input::R) #Y button
switchItemVersion(itemwindow)
end
if Input.trigger?(Input::SPECIAL) #R button
if Input.trigger?(Input::SPECIAL) #Z button
@adapter.toggleEvent(itemwindow.item)
updateTrainerPreview()
end
@@ -4,9 +4,8 @@ class HairMartAdapter < OutfitsMartAdapter
POSSIBLE_VERSIONS = (1..9).to_a
def initialize(stock = nil, isShop = nil)
super
def initialize(stock = nil, isShop = nil, prices_override = {})
super(stock,isShop,false,prices_override)
@version = getCurrentHairVersion().to_i
@worn_hair = $Trainer.hair
@worn_hat = $Trainer.hat
@@ -61,9 +60,10 @@ class HairMartAdapter < OutfitsMartAdapter
def getPrice(item, selling = nil)
return 0 if !@isShop
if @prices_override && @prices_override.has_key?(item.id)
return @prices_override[item.id]
end
trainer_hair_id = getSplitHairFilenameAndVersionFromID(@worn_hair)[1]
return nil if item.id == trainer_hair_id
return item.price.to_i
end
@@ -87,7 +87,6 @@ class HairMartAdapter < OutfitsMartAdapter
end
def getName(item)
echoln $Trainer.hair
return item.id
end
@@ -2,7 +2,7 @@
class HatShopView < ClothesShopView
def initialize(currency_name = "Money")
def initialize(currency_name = _INTL("Money"))
@currency_name = currency_name
end
@@ -97,11 +97,15 @@ class HatShopView < ClothesShopView
@adapter.updateTrainerPreview(itemwindow.item, @sprites["trainerPreview"])
displayLayerIcons(item)
else
description = _INTL("Quit.")
description = getQuitDescription
end
@sprites["itemtextwindow"].text = description
end
def getQuitDescription
return _INTL("Hats are submitted by the community. More will be added with future updates.")
end
def updateTrainerPreview()
super
updateSelectedLayerGraphicsVisibility
@@ -5,14 +5,14 @@ class HatsMartAdapter < OutfitsMartAdapter
DEFAULT_NAME = "[unknown]"
DEFAULT_DESCRIPTION = "A headgear that trainers can wear."
def initialize(stock = nil, isShop = nil, isSecondaryHat = false)
super(stock,isShop,isSecondaryHat)
@worn_clothes = $Trainer.hat
@worn_clothes2 = $Trainer.hat2
def initialize(stock = nil, isShop = nil, isSecondaryHat = false, prices_override = {})
super(stock, isShop, isSecondaryHat, prices_override)
@worn_clothes = $Trainer.hat
@worn_clothes2 = $Trainer.hat2
@second_hat_visible = true
end
#Used in shops only
# Used in shops only
def toggleSecondHat()
@second_hat_visible = !@second_hat_visible
$Trainer.hat2 = @second_hat_visible ? @worn_clothes2 : nil
@@ -22,7 +22,7 @@ class HatsMartAdapter < OutfitsMartAdapter
if isShop?
toggleSecondHat
else
$Trainer.set_hat(nil,@is_secondary_hat)
$Trainer.set_hat(nil, @is_secondary_hat)
@worn_clothes = nil
end
end
@@ -42,7 +42,7 @@ class HatsMartAdapter < OutfitsMartAdapter
# return "Remove hat: #{toggleKey}"
end
def switchVersion(item,delta=1)
def switchVersion(item, delta = 1)
pbSEPlay("GUI storage put down", 80, 100)
return toggleSecondHat if isShop?
@is_secondary_hat = !@is_secondary_hat
@@ -67,12 +67,12 @@ class HatsMartAdapter < OutfitsMartAdapter
hat1 = @is_secondary_hat ? get_hat_by_id($Trainer.hat) : item
hat2 = @is_secondary_hat ? item : get_hat_by_id($Trainer.hat2)
previewWindow.set_hat(hat1.id,false) if hat1
previewWindow.set_hat(hat2.id,true) if hat2
previewWindow.set_hat(nil,true) if !@second_hat_visible #for toggling in shops
previewWindow.set_hat(hat1.id, false) if hat1
previewWindow.set_hat(hat2.id, true) if hat2
previewWindow.set_hat(nil, true) if !@second_hat_visible # for toggling in shops
hat1_color=0
hat2_color=0
hat1_color = 0
hat2_color = 0
hat1_color = $Trainer.dyed_hats[hat1.id] if hat1 && $Trainer.dyed_hats.include?(hat1.id)
hat2_color = $Trainer.dyed_hats[hat2.id] if hat2 && $Trainer.dyed_hats.include?(hat2.id)
previewWindow.hat_color = hat1_color
@@ -84,36 +84,34 @@ class HatsMartAdapter < OutfitsMartAdapter
$Trainer.hat2_color = hat2_color
else
$Trainer.set_hat(nil,@is_secondary_hat)
previewWindow.set_hat(nil,@is_secondary_hat)
$Trainer.set_hat(nil, @is_secondary_hat)
previewWindow.set_hat(nil, @is_secondary_hat)
end
pbRefreshSceneMap
previewWindow.updatePreview()
end
def get_dye_color(item_id)
return if !item_id
return 0 if isShop?
$Trainer.dyed_hats= {} if ! $Trainer.dyed_hats
$Trainer.dyed_hats = {} if !$Trainer.dyed_hats
if $Trainer.dyed_hats.include?(item_id)
return $Trainer.dyed_hats[item_id]
end
return 0
end
def set_dye_color(item,previewWindow,is_secondary_hat=false)
def set_dye_color(item, previewWindow, is_secondary_hat = false)
return if !item
if !isShop?
else
$Trainer.set_hat_color(0,is_secondary_hat)
previewWindow.hat_color=0
$Trainer.set_hat_color(0, is_secondary_hat)
previewWindow.hat_color = 0
end
end
# def set_dye_color(item,previewWindow,is_secondary_hat=false)
# return if !item
# if !isShop?
@@ -138,10 +136,9 @@ class HatsMartAdapter < OutfitsMartAdapter
# end
# end
def addItem(item)
return unless item.is_a?(Outfit)
changed_clothes = obtainHat(item.id,@is_secondary_hat)
changed_clothes = obtainHat(item.id, @is_secondary_hat)
if changed_clothes
@worn_clothes = item.id
end
@@ -159,8 +156,8 @@ class HatsMartAdapter < OutfitsMartAdapter
def putOnSelectedOutfit()
putOnHat($Trainer.hat,true,false) if $Trainer.hat
putOnHat($Trainer.hat2,true,true) if $Trainer.hat2
putOnHat($Trainer.hat, true, false) if $Trainer.hat
putOnHat($Trainer.hat2, true, true) if $Trainer.hat2
@worn_clothes = $Trainer.hat
@worn_clothes2 = $Trainer.hat2
@@ -171,16 +168,16 @@ class HatsMartAdapter < OutfitsMartAdapter
def putOnOutfit(item)
return unless item.is_a?(Outfit)
putOnHat(item.id,false,@is_secondary_hat)
putOnHat(item.id, false, @is_secondary_hat)
@worn_clothes = item.id
end
def reset_player_clothes()
$Trainer.set_hat(@worn_clothes,false)
$Trainer.set_hat(@worn_clothes2,true)
$Trainer.set_hat(@worn_clothes, false)
$Trainer.set_hat(@worn_clothes2, true)
$Trainer.set_hat_color($Trainer.dyed_hats[@worn_clothes],false) if $Trainer.dyed_hats && $Trainer.dyed_hats[@worn_clothes]
$Trainer.set_hat_color($Trainer.dyed_hats[@worn_clothes2],true) if $Trainer.dyed_hats && $Trainer.dyed_hats[@worn_clothes2]
$Trainer.set_hat_color($Trainer.dyed_hats[@worn_clothes], false) if $Trainer.dyed_hats && $Trainer.dyed_hats[@worn_clothes]
$Trainer.set_hat_color($Trainer.dyed_hats[@worn_clothes2], true) if $Trainer.dyed_hats && $Trainer.dyed_hats[@worn_clothes2]
end
def get_unlocked_items_list()
@@ -190,7 +187,7 @@ class HatsMartAdapter < OutfitsMartAdapter
def getSpecialItemCaption(specialType)
case specialType
when :REMOVE_HAT
return "Remove hat"
return _INTL("Remove hat")
end
return nil
end
@@ -210,13 +207,18 @@ class HatsMartAdapter < OutfitsMartAdapter
end
return nil
end
def isBald?
return true unless $Trainer.hair
bald_ids = [HAIR_BALD, HAIR_BALD_POLISHED]
hair_id = getSimplifiedHairIdFromFullID($Trainer.hair)
return bald_ids.include?(hair_id)
end
def getSpecialItemDescription(specialType)
hair_situation = !$Trainer.hair || getSimplifiedHairIdFromFullID($Trainer.hair) == HAIR_BALD ? "bald head" : "fabulous hair"
return "Go without a hat and show off your #{hair_situation}!"
hair_situation = isBald?() ? "bald head" : "fabulous hair"
return _INTL("Go without a hat and show off your {1}!",hair_situation)
end
def doSpecialItemAction(specialType,item=nil)
def doSpecialItemAction(specialType, item = nil)
toggleEvent(item)
end
end
@@ -73,7 +73,7 @@ class HairStyleSelectionMenuView
end
def init_labels()
Kernel.pbDisplayText("Confirm", (CONFIRM_X+CURSOR_X_MARGIN), CONFIRM_Y)
Kernel.pbDisplayText(_INTL("Confirm"), (CONFIRM_X+CURSOR_X_MARGIN), CONFIRM_Y)
end
@@ -2,16 +2,16 @@ class HairstyleSelectionMenuPresenter
attr_accessor :options
attr_reader :current_index
OPTION_STYLE = 'Hairstyle'
OPTION_STYLE = "Hairstyle"
OPTION_BASE_COLOR = "Base color"
OPTION_DYE = "Dye"
HAIR_COLOR_NAMES = ["Blonde", "Light Brown", "Dark Brown", "Black"]
HAIR_COLOR_NAMES = ["Blonde","Light Brown", "Dark Brown", "Black"]
HAIR_COLOR_IDS = [1, 2, 3, 4]
#ids for displayed text sprites
STYLE_TEXT_ID = "style"
BASECOLOR_TEXT_ID = "baseCplor"
BASECOLOR_TEXT_ID = "baseColor"
DYE_TEXT_ID = "dye"
def initialize(view)