def genericOutfitsShopMenu(stock = [], itemType = nil, versions = false, isShop=true, message=nil) commands = [] commands[cmdBuy = commands.length] = _INTL("Buy") commands[cmdQuit = commands.length] = _INTL("Quit") message = _INTL("Welcome! How may I serve you?") if !message cmd = pbMessage(message, commands, cmdQuit + 1) loop do if cmdBuy >= 0 && cmd == cmdBuy adapter = getAdapter(itemType, stock, isShop) view = ClothesShopView.new() presenter = getPresenter(itemType, view, stock, adapter, versions) presenter.pbBuyScreen break else pbMessage(_INTL("Please come again!")) break end end end def getPresenter(itemType, view, stock, adapter, versions) case itemType when :HAIR return HairShopPresenter.new(view, stock, adapter, versions) else return ClothesShopPresenter.new(view, stock, adapter, versions) end end def getAdapter(itemType, stock, isShop, is_secondary=false) case itemType when :CLOTHES return ClothesMartAdapter.new(stock, isShop) when :HAT return HatsMartAdapter.new(stock, isShop,is_secondary) when :HAIR return HairMartAdapter.new(stock, isShop) end end def list_all_possible_outfits() end def clothesShop(outfits_list = [], free=false,customMessage=nil) stock = [] outfits_list.each { |outfit_id| outfit = get_clothes_by_id(outfit_id) stock << outfit if outfit } genericOutfitsShopMenu(stock, :CLOTHES,false,!free,customMessage) end def hatShop(outfits_list = [], free=false, customMessage=nil) stock = [] outfits_list.each { |outfit_id| outfit = get_hat_by_id(outfit_id) stock << outfit if outfit } genericOutfitsShopMenu(stock, :HAT,false,!free,customMessage) end def hairShop(outfits_list = [],free=false, customMessage=nil) currentHair = getSimplifiedHairIdFromFullID($Trainer.hair) stock = [:SWAP_COLOR] #always add current hairstyle as first option (in case the player just wants to swap the color) stock << get_hair_by_id(currentHair) if $Trainer.hair outfits_list.each { |outfit_id| next if outfit_id == currentHair outfit = get_hair_by_id(outfit_id) stock << outfit if outfit } genericOutfitsShopMenu(stock, :HAIR, true,!free,customMessage) end def switchHatsPosition() hat1 = $Trainer.hat hat2 = $Trainer.hat2 hat1_color = $Trainer.hat_color hat2_color = $Trainer.hat2_color $Trainer.hat = hat2 $Trainer.hat2 = hat1 $Trainer.hat_color = hat1_color $Trainer.hat_color = hat2_color pbSEPlay("GUI naming tab swap start") end SWAP_HAT_POSITIONS_CAPTION = "Switch hats position" #unused # def set_hat_adapter_options(adapter) # slot1_hat = $Trainer.hat ? "Swap #{get_hat_by_id($Trainer.hat).name}" : "(Empty slot)" # slot2_hat = $Trainer.hat2 ? "Swap #{get_hat_by_id($Trainer.hat2).name}" : "(Empty slot)" # options = [slot1_hat,slot2_hat] # options << SWAP_HAT_POSITIONS_CAPTION if $Trainer.hat && $Trainer.hat2 # options << "Cancel" # hat_options_choice = optionsMenu(options) # if options[hat_options_choice] == SWAP_HAT_POSITIONS_CAPTION # switchHatsPosition() # return nil # end # if hat_options_choice == options.length #cancel # return nil # end # is_secondary = hat_options_choice ==1 # adapter.set_secondary_hat(is_secondary) # return adapter # end #is_secondary only used for hats def openSelectOutfitMenu(stock = [], itemType =nil, is_secondary=false) adapter = getAdapter(itemType, stock, false, is_secondary) view = ClothesShopView.new() presenter = ClothesShopPresenter.new(view, stock, adapter) presenter.pbBuyScreen end def changeClothesMenu() stock = [] $Trainer.unlocked_clothes.each { |outfit_id| outfit = get_clothes_by_id(outfit_id) stock << outfit if outfit } openSelectOutfitMenu(stock, :CLOTHES) end def changeHatMenu(is_secondary_hat = false) stock = [] $Trainer.unlocked_hats.each { |outfit_id| outfit = get_hat_by_id(outfit_id) stock << outfit if outfit } stock << :REMOVE_HAT openSelectOutfitMenu(stock, :HAT, is_secondary_hat) end def changeOutfit() hat1_name = get_hat_by_id($Trainer.hat) ? get_hat_by_id($Trainer.hat).name : "(Empty)" hat2_name = get_hat_by_id($Trainer.hat2) ? get_hat_by_id($Trainer.hat2).name : "(Empty)" commands = [] commands[cmdClothes = commands.length] = _INTL("Change clothes") commands[cmdHat = commands.length] = _INTL("Change hat 1 (#{hat1_name})") commands[cmdHat2 = commands.length] = _INTL("Change hat 2 (#{hat2_name})") commands[switchHats = commands.length] = _INTL("Switch hat positions") commands[cmdQuit = commands.length] = _INTL("Quit") #TODO change this into a graphical menu with icons loop do cmd = pbMessage(_INTL("What would you like to do?"), commands, cmdQuit + 1) if cmd == cmdClothes changeClothesMenu() break elsif cmd == cmdHat changeHatMenu() break elsif cmd == cmdHat2 changeHatMenu(true) break elsif cmd == switchHats switchHatsPosition() break else break end end end