Advertisement
bo4p5687

Pokegear (HGSS)

Jan 12th, 2021 (edited)
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 41.36 KB | None | 0 0
  1. #-------------------------------------------------------------------------------
  2. # HGSS Pokegear menu
  3. # Credit: bo4p5687, graphics by Richard PT
  4. #-------------------------------------------------------------------------------
  5. PluginManager.register({
  6.   :name    => "HGSS Pokegear Menu",
  7.   :credits => ["bo4p5687", "graphics by Richard PT"]
  8. })
  9. #-------------------------------------------------------------------------------
  10. class PokemonGlobalMetadata
  11.   attr_accessor :backgroundPokegear
  12.  
  13.   alias backgroundNew initialize
  14.   def initialize
  15.     @backgroundPokegear = 0
  16.     backgroundNew
  17.   end
  18. end
  19. #-------------------------------------------------------------------------------
  20. # Call player in pokegear (signal)
  21. def canCall
  22.   # Map (player can't call, here)
  23.   map = []
  24.   return false if map && map.include?($game_map.map_id)
  25.   return true
  26. end
  27. #-------------------------------------------------------------------------------
  28. class PokemonPokegear_Scene
  29.  
  30.   # Music
  31.   ListMusicRadio = [
  32.   # Display name, Name of music (file)
  33.   ["March","Radio - March"],
  34.   ["Lullaby","Radio - Lullaby"],
  35.   ["Oak","Radio - Oak"],
  36.   # Add new music here
  37.   # Example: ["Music","Radio - Music"],
  38.   # [],
  39.   # Custom (use the file in "Audio/BGM/")
  40.   ["Custom"]
  41.   ]
  42.  
  43.   def initialize
  44.     @sprites={}
  45.     @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  46.     @viewport.z = 99999
  47.     @viewport1 = Viewport.new(36,16,412,292)
  48.     @viewport1.z = 99999
  49.     @viewport2 = Viewport.new(0,0,Graphics.width,Graphics.height)
  50.     @viewport2.z = 99999
  51.     @exit = false
  52.     $PokemonGlobal.backgroundPokegear = 0 if !$PokemonGlobal.backgroundPokegear
  53.     # Background number: 0, 1, 2, 3, 4, 5
  54.     @background = $PokemonGlobal.backgroundPokegear
  55.     @process = 0
  56.     @features = 0
  57.     @beforeshowmap = 0
  58.     @choose = 0; @change = true; @otherfeatures = true
  59.     @listmusic = ["Default"]; @select = 0; @custom = false
  60.     @trainers = []; @store = []; @choice = 0; @sort = false; @sortselect = 0
  61.     @frame = 0; @current = 0
  62.     @se = 0
  63.   end
  64.  
  65.   def start
  66.    
  67.     # Start
  68.     loop do
  69.       # Update
  70.       update_ingame
  71.       # Exit
  72.       break if @exit
  73.       case @process
  74.       # Main page
  75.       when 0
  76.         @beforeshowmap = 0
  77.         # Dispose
  78.         dispose
  79.         clearTxt("text 2") if @sprites["text 2"]
  80.         clearTxt("text 3") if @sprites["text 3"]
  81.         # Scene
  82.         chooseScene
  83.         @process = 5
  84.       # Customize
  85.       when 1
  86.         @beforeshowmap = 1
  87.         @otherfeatures = true
  88.         # Dispose
  89.         dispose
  90.         clearTxt("text 2") if @sprites["text 2"]
  91.         clearTxt("text 3") if @sprites["text 3"]
  92.         # Draw
  93.         drawBar
  94.         sceneCustomize
  95.         @process = 6
  96.       # Radio
  97.       when 2
  98.         @beforeshowmap = 2
  99.         @otherfeatures = true
  100.         # Dispose
  101.         dispose
  102.         clearTxt("text 2") if @sprites["text 2"]
  103.         clearTxt("text 3") if @sprites["text 3"]
  104.         # Draw
  105.         drawBar
  106.         sceneRadio
  107.         @process = 8
  108.       # Map
  109.       when 3
  110.         # Dispose
  111.         dispose
  112.         clearTxt("text 2") if @sprites["text 2"]
  113.         clearTxt("text 3") if @sprites["text 3"]
  114.         # Show map
  115.         pbShowMapPokegear
  116.         # Change
  117.         case @beforeshowmap
  118.         when 0; @process = 0
  119.         when 1; @process = 1
  120.         when 2; @process = 2
  121.         when 3; @process = 4
  122.         end
  123.       # Phone
  124.       when 4
  125.         @beforeshowmap = 3
  126.         @otherfeatures = true
  127.         # Dispose
  128.         dispose
  129.         clearTxt("text 2") if @sprites["text 2"]
  130.         clearTxt("text 3") if @sprites["text 3"]
  131.         # Draw
  132.         drawBar
  133.         scenePhone
  134.       # Main page (control)
  135.       when 5
  136.         # Redraw time
  137.         x = setPositionTime[0]; y = setPositionTime[1]
  138.         drawTime(x,y)
  139.         # Input
  140.         chooseFeature
  141.         # Mouse
  142.         chooseFeatureMouse
  143.       # Customize page (control)
  144.       when 6
  145.         setPositionFrame
  146.         # Input
  147.         chooseCustomize
  148.         # Mouse
  149.         chooseCustomizeMouse
  150.         chooseFeatureMouse
  151.       # Customize page (change background)
  152.       when 7
  153.         # Input, mouse
  154.         chooseChangeCustom
  155.         sePlayAll
  156.       # Radio page (control)
  157.       when 8
  158.         # Input
  159.         chooseRadio
  160.         # Mouse
  161.         chooseRadioMouse
  162.         chooseFeatureMouse
  163.       # Phone page (control - no phone numbers)
  164.       when 9
  165.         # Input
  166.         chooseFeature
  167.         # Mouse
  168.         chooseFeatureMouse
  169.       # Phone page (control)
  170.       when 10
  171.         # Input
  172.         choosePhone
  173.         # Mouse
  174.         choosePhoneMouse
  175.         chooseFeatureMouse
  176.       # Phone page (Show information)
  177.       when 11
  178.         animationIcon
  179.         # Input, mouse
  180.         choosePhoneInformation
  181.         sePlayAll
  182.       # Phone page (Call)
  183.       when 12
  184.         # Input, mouse
  185.         choosePhoneSelect
  186.         sePlayAll
  187.       end
  188.     end
  189.     # End
  190.     endScene
  191.   end
  192. #-------------------------------------------------------------------------------
  193. #-------------------------------------------------------------------------------
  194.   def pbShowMapPokegear
  195.     scene = PokemonRegionMap_Scene.new(-1,false)
  196.     screen = PokemonRegionMapScreen.new(scene)
  197.     createBlackScreen
  198.     screen.pbStartScreen
  199.   end
  200.  
  201.   def createBlackScreen
  202.     create_sprite("map","mapbg",@viewport,"Pictures")
  203.     @sprites["map"].color.alpha = 255
  204.   end
  205. #-------------------------------------------------------------------------------
  206. # # Scene
  207. #-------------------------------------------------------------------------------
  208.   # Main Page
  209.   DayOfWeek = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
  210.   def chooseScene
  211.     # Scene
  212.     create_sprite("scene","Background",@viewport)
  213.     set_src_wh_sprite("scene",SCREEN_WIDTH,SCREEN_HEIGHT)
  214.     set_src_xy_sprite("scene",SCREEN_WIDTH*@background,0)
  215.     # Draw text
  216.     create_sprite_2("text",@viewport)
  217.     x = setPositionTime[0]; y = setPositionTime[1]
  218.     drawTime(x,y)
  219.     # Phone signal
  220.     filename = (canCall)? "signalon" : "signaloff"
  221.     create_sprite("signal",filename,@viewport)
  222.     x += 230
  223.     y = (@background==2)? y-15 : y+5
  224.     set_xy_sprite("signal",x,y)
  225.     #(@background==2)? set_angle_sprite("signal",5) : set_angle_sprite("signal",0)
  226.     # Bar (features)
  227.     drawBar
  228.   end
  229.  
  230.   def drawBar
  231.     # Bar
  232.     create_sprite("bar","Bar",@viewport)
  233.     set_src_wh_sprite("bar",SCREEN_WIDTH,55)
  234.     set_src_xy_sprite("bar",SCREEN_WIDTH*@background,0)
  235.     set_xy_sprite("bar",0,SCREEN_HEIGHT-55)
  236.     # Icon
  237.     create_sprite("customize","Icon",@viewport)
  238.     create_sprite("radio","Icon",@viewport)
  239.     create_sprite("map","Icon",@viewport)
  240.     create_sprite("phone","Icon",@viewport)
  241.     create_sprite("exit","Icon",@viewport)
  242.     srcw = 80; srch = 52
  243.     set_src_wh_sprite("customize",srcw,srch)
  244.     set_src_wh_sprite("radio",srcw,srch)
  245.     set_src_wh_sprite("map",srcw,srch)
  246.     set_src_wh_sprite("phone",srcw,srch)
  247.     set_src_wh_sprite("exit",srcw,srch)
  248.     srcx = 0; srcy = 52*@background
  249.     set_src_xy_sprite("customize",srcx,srcy)
  250.     set_src_xy_sprite("radio",srcx+srcw,srcy)
  251.     set_src_xy_sprite("map",srcx+srcw*2,srcy)
  252.     set_src_xy_sprite("phone",srcx+srcw*3,srcy)
  253.     set_src_xy_sprite("exit",srcx+srcw*4,srcy)
  254.     x = 25; y = SCREEN_HEIGHT - 54
  255.     set_xy_sprite("customize",x,y)
  256.     set_xy_sprite("radio",x+srcw+15,y)
  257.     set_xy_sprite("map",x+srcw*2+30,y)
  258.     set_xy_sprite("phone",x+srcw*3+45,y)
  259.     set_xy_sprite("exit",x+srcw*4+60,y)
  260.     # Icon when choose
  261.     create_sprite("customize2","Icon after",@viewport)
  262.     create_sprite("radio2","Icon after",@viewport)
  263.     create_sprite("map2","Icon after",@viewport)
  264.     create_sprite("phone2","Icon after",@viewport)
  265.     create_sprite("exit2","Icon after",@viewport)
  266.     set_src_wh_sprite("customize2",srcw,srch)
  267.     set_src_wh_sprite("radio2",srcw,srch)
  268.     set_src_wh_sprite("map2",srcw,srch)
  269.     set_src_wh_sprite("phone2",srcw,srch)
  270.     set_src_wh_sprite("exit2",srcw,srch)
  271.     set_src_xy_sprite("customize2",srcx,srcy)
  272.     set_src_xy_sprite("radio2",srcx+srcw,srcy)
  273.     set_src_xy_sprite("map2",srcx+srcw*2,srcy)
  274.     set_src_xy_sprite("phone2",srcx+srcw*3,srcy)
  275.     set_src_xy_sprite("exit2",srcx+srcw*4,srcy)
  276.     set_xy_sprite("customize2",x,y)
  277.     set_xy_sprite("radio2",x+srcw+15,y)
  278.     set_xy_sprite("map2",x+srcw*2+30,y)
  279.     set_xy_sprite("phone2",x+srcw*3+45,y)
  280.     set_xy_sprite("exit2",x+srcw*4+60,y)
  281.     set_visible_sprite("customize2")
  282.     set_visible_sprite("radio2")
  283.     set_visible_sprite("map2")
  284.     set_visible_sprite("phone2")
  285.     set_visible_sprite("exit2")
  286.     # Select icon (rectangle)
  287.     create_sprite("selectI","Select Icon",@viewport)
  288.     set_xy_sprite("selectI",x+(srcw+15)*@features,y)
  289.   end
  290.  
  291.   def setPositionTime
  292.     width = 270; height = 45
  293.     case @background
  294.     when 0,1; x = (SCREEN_WIDTH-width)/2; y = 78
  295.     when 2; x = 120; y = 100
  296.     when 3; x = 125; y = 75
  297.     when 4; x = (SCREEN_WIDTH-width)/2; y = 35
  298.     else; x = 125; y = 80
  299.     end
  300.     return ret = [x,y]
  301.   end
  302.  
  303.   def drawTime(x,y)
  304.     (@background == 2)? set_angle_sprite("text",3) : set_angle_sprite("text",0)
  305.     time = Time.now; hour = time.hour; min = time.min
  306.     hour = "0#{hour}" if hour < 10
  307.     min = "0#{min}" if min < 10
  308.     string = "#{hour} : #{min}    #{DayOfWeek[time.wday]}"
  309.     text = []
  310.     text<<[string,x,y,0,BaseColor,ShadowColor]
  311.     drawTxt("text",text)
  312.   end
  313. #-------------------------------------------------------------------------------
  314.   # Customize Page
  315.   def sceneCustomize
  316.     # Scene
  317.     create_sprite("customize scene","Page customize",@viewport)
  318.     set_src_wh_sprite("customize scene",SCREEN_WIDTH,SCREEN_HEIGHT)
  319.     set_src_xy_sprite("customize scene",SCREEN_WIDTH*@background,0)
  320.     # Select
  321.     create_sprite("customize frame","Frame",@viewport)
  322.     create_sprite("customize select frame","Select Frame",@viewport)
  323.     # Change menu
  324.     create_sprite("customize change menu","Change Menu",@viewport)
  325.     create_sprite("customize select change","Select Change",@viewport)
  326.     width = @sprites["customize select change"].bitmap.width
  327.     height = @sprites["customize select change"].bitmap.height
  328.     set_src_wh_sprite("customize select change",width,height/2)
  329.     set_src_xy_sprite("customize select change",0,0)
  330.     set_visible_sprite("customize change menu")
  331.     set_visible_sprite("customize select change")
  332.     @choose = @background
  333.     setPositionFrame
  334.   end
  335.  
  336.   def setPositionFrame
  337.     xa = [46,207,367]
  338.     x = (@choose%3==0)? xa[0] : (@choose%3==1)? xa[1] : xa[2]
  339.     y = (@choose<3)? 52 : 210
  340.     set_xy_sprite("customize frame",x,y)
  341.     set_xy_sprite("customize select frame",x-10,y-10)
  342.   end
  343.  
  344.   def sceneChooseCustom
  345.     set_visible_sprite("customize change menu",true)
  346.     xa = [46,207,367]
  347.     x = (@choose%3==0)? xa[0]+108 : (@choose%3==1)? xa[1]+108 : xa[2]-138
  348.     y = (@choose<3)? 52 : 210
  349.     set_xy_sprite("customize change menu",x,y)
  350.     return ret = [x,y]
  351.   end
  352. #-------------------------------------------------------------------------------
  353.   # Set text (radio, phone)
  354.   def setTextRP
  355.     # Text
  356.     create_sprite_2("text 2",@viewport1) if !@sprites["text 2"]
  357.     clearTxt("text 2")
  358.     create_sprite_2("text 3",@viewport1) if !@sprites["text 3"]
  359.     clearTxt("text 3")
  360.   end
  361.  
  362.   # Set position of arrow
  363.   def posArrow(range)
  364.     y = 16 + 48*range
  365.     set_xy_sprite("arrow",26,y)
  366.   end
  367.  
  368.   # Radio page
  369.   def sceneRadio
  370.     @select = 0
  371.     # Scene
  372.     create_sprite("radio scene","Page Radio",@viewport)
  373.     set_src_wh_sprite("radio scene",SCREEN_WIDTH,SCREEN_HEIGHT)
  374.     set_src_xy_sprite("radio scene",SCREEN_WIDTH*@background,0)
  375.     # List music
  376.     putMusicCustom
  377.     # Text
  378.     (@custom)? nameMusic(1) : nameMusic(0)
  379.     # Arrow
  380.     create_sprite("arrow","Arrow",@viewport)
  381.     posArrow(@select)
  382.   end
  383.  
  384.   # Put the files in "Audio/BGM/"
  385.   def putMusicCustom
  386.     @listmusic = ["Default"]
  387.     Dir.chdir("Audio/BGM/") {
  388.       Dir.glob("*.mp3") { |f| @listmusic.push(f) }
  389.       Dir.glob("*.MP3") { |f| @listmusic.push(f) }
  390.       Dir.glob("*.ogg") { |f| @listmusic.push(f) }
  391.       Dir.glob("*.OGG") { |f| @listmusic.push(f) }
  392.       Dir.glob("*.wav") { |f| @listmusic.push(f) }
  393.       Dir.glob("*.WAV") { |f| @listmusic.push(f) }
  394.       Dir.glob("*.mid") { |f| @listmusic.push(f) }
  395.       Dir.glob("*.MID") { |f| @listmusic.push(f) }
  396.       Dir.glob("*.midi") { |f| @listmusic.push(f) }
  397.       Dir.glob("*.MIDI") { |f| @listmusic.push(f) } }
  398.   end
  399.  
  400.   # Radio (draw name)
  401.   def nameMusic(list)
  402.     # Text (bitmap)
  403.     setTextRP
  404.     # List: 0: begin; 1: custom
  405.     max = (list==0)? ListMusicRadio.length : @listmusic.length
  406.     textpos = []
  407.     endnum = (max>0 && max<6)? max : 6
  408.     pos = (max>0 && max<6)? 0 : (@select>=max-6)? max-6 : @select
  409.     (0...endnum).each { |i|
  410.       string = (list==0)? ListMusicRadio[pos+i][0] : @listmusic[pos+i]
  411.       x = 10; y = 5+50*i
  412.       textpos<<[string,x,y,0,ShadowColor,BaseColor]
  413.     }
  414.     drawTxt("text 2",textpos)
  415.   end
  416.  
  417.   # Set song
  418.   def songPlayBGM(song=nil,white=false,black=false)
  419.     $game_system.setDefaultBGM(song)
  420.     $PokemonMap.whiteFluteUsed = white if $PokemonMap
  421.     $PokemonMap.blackFluteUsed = black if $PokemonMap
  422.   end
  423.  
  424.   def fluteMusic(white=false,black=false)
  425.     $PokemonMap.whiteFluteUsed = white if $PokemonMap
  426.     $PokemonMap.blackFluteUsed = black if $PokemonMap
  427.   end
  428. #-------------------------------------------------------------------------------
  429.   # Phone page
  430.   def scenePhone
  431.     @select = 0
  432.     # Scene
  433.     create_sprite("phone scene","Page Phone",@viewport)
  434.     set_src_wh_sprite("phone scene",SCREEN_WIDTH,SCREEN_HEIGHT)
  435.     set_src_xy_sprite("phone scene",SCREEN_WIDTH*@background,0)
  436.     # List Trainer (phonebook)
  437.     putTrainerList
  438.     (@trainers.length==0)? (@process=9) : (continueScenePhone;@process = 10)
  439.   end
  440.    
  441.   def continueScenePhone
  442.     # Text
  443.     namePhone
  444.     # Arrow
  445.     create_sprite("arrow","Arrow",@viewport)
  446.     posArrow(@select)
  447.     create_sprite("arrow2","Arrow Sort",@viewport)
  448.     posArrowSort(@sortselect)
  449.     visibleSortArrow
  450.     # Choose
  451.     create_sprite("phone menu","Phone Menu",@viewport2)
  452.     pos = posPhoneMenu
  453.     set_visible_sprite("phone menu")
  454.     @choice==0
  455.     create_sprite("phone select","Phone Select",@viewport2)
  456.     x = pos[0] + 8; y = 10
  457.     set_xy_sprite("phone select",x,y)
  458.     width = @sprites["phone select"].bitmap.width
  459.     height = @sprites["phone select"].bitmap.height
  460.     set_src_wh_sprite("phone select",width,height/3)
  461.     set_src_xy_sprite("phone select",0,height/3*@choice)
  462.     set_visible_sprite("phone select")
  463.     # Information
  464.     create_sprite("phone information","Information",@viewport2)
  465.     set_src_wh_sprite("phone information",340,202)
  466.     set_src_xy_sprite("phone information",340*@background,0)
  467.     set_xy_sprite("phone information",-340,12)
  468.     # Rematch
  469.     rematchIcon
  470.   end
  471.  
  472.   # Set position of arrow (sort)
  473.   def posArrowSort(range)
  474.     y = 16 + 48*range
  475.     set_xy_sprite("arrow2",26,y)
  476.   end
  477.  
  478.   def visibleSortArrow
  479.     if @sort
  480.       set_visible_sprite("arrow")
  481.       set_visible_sprite("arrow2",true)
  482.     else
  483.       set_visible_sprite("arrow",true)
  484.       set_visible_sprite("arrow2")
  485.     end
  486.   end
  487.  
  488.   def posPhoneMenu
  489.     x = 224; y = 169
  490.     set_xy_sprite("phone menu",x,y)
  491.     return ret = [x,y]
  492.   end
  493.  
  494.   # Trainer list
  495.   def putTrainerList
  496.     @trainers = []; @store = []
  497.     if $PokemonGlobal.phoneNumbers
  498.       for num in $PokemonGlobal.phoneNumbers
  499.         if num[0]   # if visible
  500.           if num.length==8   # if trainer
  501.             @trainers.push([num[1],num[2],num[6],(num[4]>=2)])
  502.             @store.push([num[1],num[2],num[6],num[7]]) # Store
  503.           else               # if NPC
  504.             @trainers.push([num[1],num[2],num[3]])
  505.             @store.push([num[1],num[2],num[3]]) # Store
  506.           end
  507.         end
  508.       end
  509.     end
  510.   end
  511.  
  512.   def setForSorting(order)
  513.     if $PokemonGlobal.phoneNumbers
  514.       (0...$PokemonGlobal.phoneNumbers.size).each { |i|
  515.       num = $PokemonGlobal.phoneNumbers[i]
  516.       if num[0] # if visible
  517.         if num.length==8 # Trainer
  518.           if @store[order][0]==num[1] && @store[order][1]==num[2] &&
  519.             @store[order][2]==num[6] && @store[order][3]==num[7]
  520.             return ret = [i,num]
  521.             break
  522.           end
  523.         else # NPC
  524.           if @store[order][0]==num[1] && @store[order][1]==num[2] &&
  525.             @store[order][2]==num[3]
  526.             return ret = [i,num]
  527.             break
  528.           end
  529.         end
  530.       end }
  531.     end
  532.   end
  533.  
  534.   def sortTrainer(old,new)
  535.     if $PokemonGlobal.phoneNumbers
  536.       oldnum = setForSorting(old)
  537.       newnum = setForSorting(new)
  538.       $PokemonGlobal.phoneNumbers[oldnum[0]] = newnum[1]
  539.       $PokemonGlobal.phoneNumbers[newnum[0]] = oldnum[1]
  540.     end
  541.   end
  542.  
  543.   # Name trainer
  544.   def namePhone(order=nil)
  545.     # Set text
  546.     setTextRP
  547.     # Write list
  548.     num = (order.nil?)? @select : @sortselect
  549.     max = @trainers.length
  550.     text = []
  551.     endnum = (max>0 && max<6)? max : 6
  552.     pos = (max>0 && max<6)? 0 : (num>=max-6)? max-6 : num
  553.     (0...endnum).each { |i|
  554.       x = 10; y = 50*i + 5
  555.       if @trainers[pos+i].length==4
  556.         string = pbGetMessageFromHash(MessageTypes::TrainerNames,@trainers[pos+i][1])
  557.       else
  558.         string = @trainers[pos+i][1]
  559.       end
  560.       text<<[string,x,y,0,ShadowColor,BaseColor]
  561.       if @trainers[pos+i].length==4
  562.         x += 165
  563.         string = PBTrainers.getName(@trainers[pos+i][0])
  564.         text<<[string,x,y,0,BaseColor,ShadowColor]
  565.       end
  566.     }
  567.     drawTxt("text 3",text)
  568.   end
  569.  
  570.   def showInformationTrainer(show)
  571.     pos = (@sort)? @sortselect : @select
  572.     text = []
  573.     if show
  574.       5.times { @sprites["phone information"].x += 68 } if @sprites["phone information"].x<340
  575.       if @trainers[pos].length==4
  576.         filename = pbTrainerCharFile(@trainers[pos][0])
  577.       else
  578.         filename = sprintf("Graphics/Characters/phone%03d",@trainers[pos][0])
  579.       end
  580.       @sprites["phone icon"] = Sprite.new(@viewport2)
  581.       @sprites["phone icon"].bitmap = Bitmap.new(filename)
  582.       charwidth  = @sprites["phone icon"].bitmap.width
  583.       charheight = @sprites["phone icon"].bitmap.height
  584.       set_src_wh_sprite("phone icon",charwidth/4,charheight/4)
  585.       set_src_xy_sprite("phone icon",0,0)
  586.       x = 24; y = @sprites["phone information"].y + 28
  587.       set_xy_sprite("phone icon",24,28)
  588.       create_sprite_2("text 4",@viewport2) if !@sprites["text 4"]
  589.       clearTxt("text 4")
  590.       # Up
  591.       x = 100; y = @sprites["phone information"].y+20
  592.       width = 220; height = 30
  593.       string = "Location :"
  594.       text<<[string,x,y,0,BaseColor,ShadowColor]
  595.       string = (@trainers[pos][2]) ? pbGetMessage(MessageTypes::MapNames,@trainers[pos][2]) : ""
  596.       text<<[string,x+10,y+35,0,BaseColor,ShadowColor]
  597.       # Down
  598.       x = 10; y = @sprites["phone information"].y+114
  599.       width = 330; height = 50
  600.       string = "Registered : #{@trainers.length}"
  601.       text<<[string,x,y+5,0,BaseColor,ShadowColor]
  602.       string = "Waiting for a rematch : #{rematchCount}"
  603.       text<<[string,x,y+44,0,BaseColor,ShadowColor]
  604.       drawTxt("text 4",text)
  605.     else
  606.       set_visible_sprite("phone icon")
  607.       clearTxt("text 4") if @sprites["text 4"]
  608.       5.times { @sprites["phone information"].x -= 68} if @sprites["phone information"].x<340
  609.     end
  610.   end
  611.  
  612.   def rematchCount
  613.     rematch = 0
  614.     (0...@trainers.length).each { |i|
  615.     rematch+=1 if @trainers[i].length==4 && @trainers[i][3] }
  616.     return rematch
  617.   end
  618.  
  619.   def animationIcon
  620.     charwidth = @sprites["phone icon"].bitmap.width/4
  621.     @frame+=1
  622.     if @frame==5
  623.       @frame = 0
  624.       @current+=1
  625.       @current%=4
  626.       set_src_xy_sprite("phone icon",@current*charwidth,0)
  627.     end
  628.   end
  629.  
  630.   # Set rematch icon
  631.   def rematchIcon
  632.     (0...@trainers.length).each { |i| x = 0; y = 5
  633.     create_sprite_3("rematch #{i}",x,y,"phoneRematch",@viewport1) if !@sprites["rematch #{i}"]
  634.     set_visible_sprite("rematch #{i}",(@trainers[i].length==4 && @trainers[i][3])) }
  635.   end
  636.  
  637. #-------------------------------------------------------------------------------
  638. # Choose feature (Input)
  639. #-------------------------------------------------------------------------------
  640.   def chooseFeature
  641.     set_xy_sprite("selectI",25+95*@features,SCREEN_HEIGHT-54)
  642.     if Input.trigger?(Input::LEFT)
  643.       pbPlayDecisionSE
  644.       @features -= 1
  645.       @features = 4 if @features < 0
  646.     end
  647.     if Input.trigger?(Input::RIGHT)
  648.       pbPlayDecisionSE
  649.       @features += 1
  650.       @features = 0  if @features > 4
  651.     end
  652.     if Input.trigger?(Input::C)
  653.       (@features==4)? pbPlayCloseMenuSE : pbPlayDecisionSE
  654.       case @features
  655.       # Customize
  656.       when 0
  657.         set_visible_sprite("customize2",true)
  658.         pbWait(5)
  659.         set_visible_sprite("customize2")
  660.         @process = 1
  661.       # Radio
  662.       when 1
  663.         set_visible_sprite("radio2",true)
  664.         pbWait(5)
  665.         set_visible_sprite("radio2")
  666.         @process = 2
  667.       # Map
  668.       when 2
  669.         set_visible_sprite("map2",true)
  670.         pbWait(5)
  671.         set_visible_sprite("map2")
  672.         @process = 3
  673.       # Phone
  674.       when 3
  675.         set_visible_sprite("phone2",true)
  676.         pbWait(5)
  677.         set_visible_sprite("phone2")
  678.         @process = 4
  679.       # Exit
  680.       else
  681.         set_visible_sprite("exit2",true)
  682.         pbWait(5)
  683.         set_visible_sprite("exit2")
  684.         (@process!=5)? (@process=0) : (@exit=true)
  685.       end
  686.     end
  687.     if Input.trigger?(Input::B)
  688.       pbPlayCloseMenuSE
  689.       (@process!=5)? (@process=0) : (@exit=true)
  690.     end
  691.   end
  692.  
  693.   def chooseFeatureMouse
  694.     set_xy_sprite("selectI",25+95*@features,SCREEN_HEIGHT-54)
  695.     w = 80; h = 52
  696.     x = []; t = 0
  697.     5.times { x.push(25+(w+15)*t); t+=1 }
  698.     y = SCREEN_HEIGHT - 54
  699.     # Customize
  700.     if rectMouse(x[0],y,w,h)
  701.       @features = 0
  702.       if clickedMouse
  703.         pbPlayDecisionSE
  704.         set_visible_sprite("customize2",true)
  705.         pbWait(5)
  706.         set_visible_sprite("customize2")
  707.         @process = 1
  708.       end
  709.     # Radio
  710.     elsif rectMouse(x[1],y,w,h)
  711.       @features = 1
  712.       if clickedMouse
  713.         pbPlayDecisionSE
  714.         set_visible_sprite("radio2",true)
  715.         pbWait(5)
  716.         set_visible_sprite("radio2")
  717.         @process = 2
  718.       end
  719.     # Map
  720.     elsif rectMouse(x[2],y,w,h)
  721.       @features = 2
  722.       if clickedMouse
  723.         pbPlayDecisionSE
  724.         set_visible_sprite("map2",true)
  725.         pbWait(5)
  726.         set_visible_sprite("map2")
  727.         @process = 3
  728.       end
  729.     # Phone
  730.     elsif rectMouse(x[3],y,w,h)
  731.       @features = 3
  732.       if clickedMouse
  733.         pbPlayDecisionSE
  734.         set_visible_sprite("phone2",true)
  735.         pbWait(5)
  736.         set_visible_sprite("phone2")
  737.         @process = 4
  738.       end
  739.     # Exit
  740.     elsif rectMouse(x[4],y,w,h)
  741.       @features = 4
  742.       if clickedMouse
  743.         pbPlayCloseMenuSE
  744.         set_visible_sprite("exit2",true)
  745.         pbWait(5)
  746.         set_visible_sprite("exit2")
  747.         if @process==5
  748.           @exit=true
  749.         elsif @process==8
  750.           if @custom
  751.             @custom=false
  752.             @select = 0
  753.             # Redraw music list
  754.             nameMusic(0)
  755.           else
  756.             @process=0
  757.           end
  758.         elsif @process==10
  759.           (@sort)? (@sort=false) : (@process=0)
  760.         else
  761.           @process=0
  762.         end
  763.       end
  764.     end
  765.     # Play SE
  766.     sePlayAll
  767.   end
  768. #-------------------------------------------------------------------------------
  769. # Choose customize (Input)
  770. #-------------------------------------------------------------------------------
  771.   def setReturnPageCustom
  772.     # Set can't visible
  773.     set_visible_sprite("customize change menu")
  774.     set_visible_sprite("customize select change")
  775.     @change = true; @process = 6
  776.   end
  777.  
  778.   def chooseCustomize
  779.     if @otherfeatures
  780.       if Input.trigger?(Input::LEFT)
  781.         pbPlayDecisionSE
  782.         @choose -= 1
  783.         @choose = 5 if @choose < 0
  784.       end
  785.       if Input.trigger?(Input::RIGHT)
  786.         pbPlayDecisionSE
  787.         @choose += 1
  788.         @choose = 0  if @choose > 5
  789.       end
  790.       if Input.trigger?(Input::UP)
  791.         pbPlayDecisionSE
  792.         @choose -= 3
  793.         @choose += 6 if @choose < 0
  794.       end
  795.       if Input.trigger?(Input::DOWN)
  796.         pbPlayDecisionSE
  797.         @choose += 3
  798.         @choose -= 6 if @choose > 5
  799.       end
  800.       if Input.trigger?(Input::C)
  801.         pbPlayDecisionSE
  802.         @process=7
  803.       end
  804.     else
  805.       chooseFeature
  806.     end
  807.     if Input.trigger?(Input::B)
  808.       if @otherfeatures
  809.         pbPlayCloseMenuSE
  810.         @otherfeatures = false
  811.       end
  812.     end
  813.   end
  814.  
  815.   def chooseCustomizeMouse
  816.     w = 98; h = 89
  817.     x = [46,207,367]; y = [52,210]
  818.     if rectMouse(x[0],y[0],w,h) || rectMouse(x[1],y[0],w,h) ||
  819.       rectMouse(x[2],y[0],w,h) || rectMouse(x[0],y[1],w,h) ||
  820.       rectMouse(x[1],y[1],w,h) || rectMouse(x[2],y[1],w,h)
  821.       if clickedMouse
  822.         pbPlayDecisionSE
  823.         @process=7
  824.       end
  825.     end
  826.     if rectMouse(x[0],y[0],w,h)
  827.       @choose = 0
  828.     elsif rectMouse(x[1],y[0],w,h)
  829.       @choose = 1
  830.     elsif rectMouse(x[2],y[0],w,h)
  831.       @choose = 2
  832.     elsif rectMouse(x[0],y[1],w,h)
  833.       @choose = 3
  834.     elsif rectMouse(x[1],y[1],w,h)
  835.       @choose = 4
  836.     elsif rectMouse(x[2],y[1],w,h)
  837.       @choose = 5
  838.     end
  839.   end
  840.  
  841.   # Change background
  842.   def chooseChangeCustom
  843.     xy = sceneChooseCustom
  844.     x = xy[0] + 8
  845.     y = (@change)? xy[1]+10 : xy[1]+58
  846.     height = @sprites["customize select change"].bitmap.height/2
  847.     set_src_xy_sprite("customize select change",0,((@change)? 0 : height))
  848.     set_xy_sprite("customize select change",x,y)
  849.     set_visible_sprite("customize select change",true)
  850.     if Input.trigger?(Input::UP) || Input.trigger?(Input::DOWN)
  851.       pbPlayDecisionSE
  852.       @change = (@change)? false : true
  853.     end
  854.     if Input.trigger?(Input::C)
  855.       if @change
  856.         pbPlayDecisionSE
  857.         $PokemonGlobal.backgroundPokegear = @choose
  858.         if @background!=$PokemonGlobal.backgroundPokegear
  859.           @background = $PokemonGlobal.backgroundPokegear
  860.           @change = true
  861.           @process = 1
  862.         end
  863.       else
  864.         pbPlayCloseMenuSE
  865.         setReturnPageCustom
  866.       end
  867.     end
  868.     if Input.trigger?(Input::B)
  869.       pbPlayCloseMenuSE
  870.       setReturnPageCustom
  871.     end
  872.     w = 112; h = 44
  873.     if rectMouse(x,xy[1]+10,w,h)
  874.       @change = true
  875.       if clickedMouse
  876.         pbPlayDecisionSE
  877.         $PokemonGlobal.backgroundPokegear = @choose
  878.         if @background!=$PokemonGlobal.backgroundPokegear
  879.           @background = $PokemonGlobal.backgroundPokegear
  880.           @change = true
  881.           @process = 1
  882.         end
  883.       end
  884.     elsif rectMouse(x,xy[1]+58,w,h)
  885.       @change = false
  886.       if clickedMouse
  887.         pbPlayCloseMenuSE
  888.         setReturnPageCustom
  889.       end
  890.     end
  891.   end
  892. #-------------------------------------------------------------------------------
  893. # Choose radio (Input)
  894. #-------------------------------------------------------------------------------
  895.   def chooseRadio
  896.     max = (@custom)? @listmusic.length : ListMusicRadio.length
  897.     # Move arrow
  898.     (max<6)? posArrow(@select) : (@select>=max-6)? posArrow(@select-max+6) : posArrow(0)
  899.     if @otherfeatures
  900.       if Input.trigger?(Input::UP)
  901.         pbPlayDecisionSE
  902.         @select -= 1
  903.         @select = max-1 if @select < 0
  904.         (@custom)? nameMusic(1) : nameMusic(0)
  905.       end
  906.       if Input.trigger?(Input::DOWN)
  907.         pbPlayDecisionSE
  908.         @select += 1
  909.         @select = 0 if @select>=max
  910.         (@custom)? nameMusic(1) : nameMusic(0)
  911.       end
  912.       if Input.trigger?(Input::C)
  913.         pbPlayDecisionSE
  914.         # Custom
  915.         if @custom
  916.           (@select==0)? songPlayBGM : songPlayBGM(@listmusic[@select])
  917.         # Music
  918.         else
  919.           if @select==max-1
  920.             @custom = true
  921.             @select = 0
  922.             nameMusic(1)
  923.           else
  924.             pbBGMPlay(ListMusicRadio[@select][1],100,100)
  925.             case @select
  926.             when 0; fluteMusic(true)
  927.             when 1; fluteMusic(true)
  928.             end
  929.           end
  930.         end
  931.       end
  932.     else
  933.       chooseFeature
  934.     end
  935.     if Input.trigger?(Input::B)
  936.       if @otherfeatures
  937.         pbPlayCloseMenuSE
  938.         if @custom
  939.           @custom=false
  940.           @select = 0
  941.           nameMusic(0)
  942.         else
  943.           @otherfeatures=false
  944.         end
  945.       end
  946.     end
  947.   end
  948.  
  949.   def chooseRadioMouse
  950.     # Change position
  951.     x = 462; y = [33,183]
  952.     w = 48; h = 117
  953.     max = (@custom)? @listmusic.length : ListMusicRadio.length
  954.     if clickedMouse
  955.       pbPlayDecisionSE
  956.       if rectMouse(x,y[0],w,h)
  957.         @select -= 1
  958.         @select = max-1 if @select < 0
  959.         (@custom)? nameMusic(1) : nameMusic(0)
  960.       elsif rectMouse(x,y[1],w,h)
  961.         @select += 1
  962.         @select = 0 if @select>=max
  963.         (@custom)? nameMusic(1) : nameMusic(0)
  964.       # Music
  965.       elsif rectMouse(26,10,432,313)
  966.         if @custom
  967.           (@select==0)? songPlayBGM : songPlayBGM(@listmusic[@select])
  968.         else
  969.           if @select==max-1
  970.             @custom = true
  971.             @select = 0
  972.             nameMusic(1)
  973.           else
  974.             pbBGMPlay(ListMusicRadio[@select][1],100,100)
  975.             case @select
  976.             when 0; fluteMusic(true)
  977.             when 1; fluteMusic(true)
  978.             end
  979.           end
  980.         end
  981.       end
  982.     end
  983.   end
  984. #-------------------------------------------------------------------------------
  985. # Choose phone (Input)
  986. #-------------------------------------------------------------------------------
  987.   def setReturnPagePhone(num=nil)
  988.     (num.nil?)? pbPlayDecisionSE : pbPlayCloseMenuSE
  989.     # Visible
  990.     set_visible_sprite("phone menu"); set_visible_sprite("phone select")
  991.     @choice = 0; @process = 10
  992.   end
  993.  
  994.   def choosePhone
  995.     max = @trainers.length
  996.     # Visible
  997.     visibleSortArrow
  998.     if !@sort
  999.       num = @select
  1000.       (max<6)? posArrow(num) : (num>=max-6)? posArrow(num-max+6) : posArrow(0)
  1001.       if @otherfeatures
  1002.         if Input.trigger?(Input::UP)
  1003.           pbPlayDecisionSE
  1004.           @select -= 1
  1005.           @select = max-1 if @select<0
  1006.           namePhone
  1007.         end
  1008.         if Input.trigger?(Input::DOWN)
  1009.           pbPlayDecisionSE
  1010.           @select += 1
  1011.           @select = 0 if @select>=max
  1012.           namePhone
  1013.         end
  1014.         if Input.trigger?(Input::C)
  1015.           pbPlayDecisionSE
  1016.           @sortselect = @select
  1017.           # Visible
  1018.           set_visible_sprite("phone menu",true)
  1019.           set_visible_sprite("phone select",true)
  1020.           @process = 12
  1021.         end
  1022.       else
  1023.         chooseFeature
  1024.       end
  1025.       if Input.trigger?(Input::B)
  1026.         pbPlayCloseMenuSE
  1027.         @otherfeatures=false if @otherfeatures
  1028.       end
  1029.     # Mode: sort
  1030.     else
  1031.       num = @sortselect
  1032.       (max<6)? posArrowSort(num) : (num>=max-6)? posArrowSort(num-max+6) : posArrowSort(0)
  1033.       if Input.trigger?(Input::UP)
  1034.         pbPlayDecisionSE
  1035.         @sortselect -= 1
  1036.         @sortselect = max-1 if @sortselect<0
  1037.         namePhone(0)
  1038.       end
  1039.       if Input.trigger?(Input::DOWN)
  1040.         pbPlayDecisionSE
  1041.         @sortselect += 1
  1042.         @sortselect = 0 if @sortselect>=max
  1043.         namePhone(0)
  1044.       end
  1045.       if Input.trigger?(Input::C)
  1046.         pbPlayDecisionSE
  1047.         # Sort (change position)
  1048.         sortTrainer(@select,@sortselect)
  1049.         @sort = false
  1050.         @process = 4
  1051.       end
  1052.        if Input.trigger?(Input::B)
  1053.         pbPlayCloseMenuSE
  1054.         namePhone
  1055.         @sort = false
  1056.       end      
  1057.     end
  1058.     # Show information
  1059.     if Input.trigger?(Input::A) && @otherfeatures
  1060.       pbPlayDecisionSE
  1061.       showInformationTrainer(true)
  1062.       @process = 11
  1063.     end
  1064.   end
  1065.  
  1066.   def choosePhoneMouse
  1067.     # Change position
  1068.     x = 462; y = [33,183]
  1069.     w = 48; h = 117
  1070.     max = @trainers.length
  1071.     if clickedMouse
  1072.       if !@sort
  1073.         pbPlayDecisionSE
  1074.         if rectMouse(x,y[0],w,h)
  1075.           @select -= 1
  1076.           @select = max-1 if @select<0
  1077.           namePhone
  1078.         elsif rectMouse(x,y[1],w,h)
  1079.           @select += 1
  1080.           @select = 0 if @select>=max
  1081.           namePhone
  1082.         elsif rectMouse(26,10,432,313)
  1083.           pbPlayDecisionSE
  1084.           @sortselect = @select
  1085.           # Visible
  1086.           set_visible_sprite("phone menu",true)
  1087.           set_visible_sprite("phone select",true)
  1088.           @process = 12
  1089.         end
  1090.       # Mode: sort
  1091.       else
  1092.         pbPlayDecisionSE
  1093.         if rectMouse(x,y[0],w,h)
  1094.           @sortselect -= 1
  1095.           @sortselect = max-1 if @sortselect<0
  1096.           namePhone(0)
  1097.         elsif rectMouse(x,y[1],w,h)
  1098.           @sortselect += 1
  1099.           @sortselect = 0 if @sortselect>=max
  1100.           namePhone(0)
  1101.         elsif rectMouse(26,10,432,313)
  1102.           # Sort (change position)
  1103.           sortTrainer(@select,@sortselect)
  1104.           @sort = false
  1105.           @process = 4
  1106.         end
  1107.       end
  1108.       # Show information
  1109.       if rectMouse(460,0,52,17)
  1110.         showInformationTrainer(true)
  1111.         @process = 11
  1112.       end
  1113.     end
  1114.   end
  1115.  
  1116.   def choosePhoneInformation
  1117.     x = 327
  1118.     y = @sprites["phone information"].y
  1119.     if Input.trigger?(Input::B) || (rectMouse(x,y,13,26) && clickedMouse)
  1120.       pbPlayCloseMenuSE
  1121.       showInformationTrainer(false)
  1122.       @process = 10
  1123.     end
  1124.   end
  1125.  
  1126.   def choosePhoneSelect
  1127.     pos = posPhoneMenu
  1128.     x = pos[0] + 8; ya = [10,58,106]
  1129.     y = (@choice==0)? pos[1] + ya[0] : (@choice==1)? pos[1] + ya[1] : pos[1] + ya[2]
  1130.     height = @sprites["phone select"].bitmap.height/3
  1131.     set_src_xy_sprite("phone select",0,height*@choice)
  1132.     set_xy_sprite("phone select",x,y)
  1133.     if Input.trigger?(Input::UP)
  1134.       @choice -= 1
  1135.       @choice = 2 if @choice<0
  1136.     end
  1137.     if Input.trigger?(Input::DOWN)
  1138.       @choice += 1
  1139.       @choice = 0 if @choice>2
  1140.     end
  1141.     if Input.trigger?(Input::C)
  1142.       pbPlayDecisionSE
  1143.       case @choice
  1144.       # Call
  1145.       when 0
  1146.         setReturnPagePhone
  1147.         if canCall
  1148.           pbCallTrainer(@trainers[@select][0],@trainers[@select][1]) # Call
  1149.           putTrainerList
  1150.           rematchIcon
  1151.         else
  1152.           pbMessage(_INTL("Got no signal."))
  1153.         end
  1154.       # Sort
  1155.       when 1
  1156.         @sort = true
  1157.         setReturnPagePhone
  1158.       else
  1159.         setReturnPagePhone
  1160.       end
  1161.     end
  1162.     setReturnPagePhone(0) if Input.trigger?(Input::B)
  1163.     # Mouse
  1164.     # Call
  1165.     if rectMouse(x,pos[1]+ya[0],272,44)
  1166.       @choice=0
  1167.       if clickedMouse
  1168.         setReturnPagePhone
  1169.         if canCall
  1170.           pbCallTrainer(@trainers[@select][0],@trainers[@select][1]) # Call
  1171.           putTrainerList
  1172.           rematchIcon
  1173.         else
  1174.           pbMessage(_INTL("Got no signal."))
  1175.         end
  1176.       end
  1177.     # Sort
  1178.     elsif rectMouse(x,pos[1]+ya[1],272,44)
  1179.       @choice=1
  1180.       if clickedMouse
  1181.         @sort = true
  1182.         setReturnPagePhone
  1183.       end
  1184.     # Quit
  1185.     elsif rectMouse(x,pos[1]+ya[2],272,44)
  1186.       @choice=2
  1187.       setReturnPagePhone(0) if clickedMouse
  1188.     end
  1189.   end
  1190.  
  1191. #-------------------------------------------------------------------------------
  1192. # SE play
  1193. #-------------------------------------------------------------------------------
  1194.   def playSEMainPage
  1195.     w = 80; h = 52
  1196.     x = []; t = 0
  1197.     5.times { x.push(25+(w+15)*t); t+=1 }
  1198.     y = SCREEN_HEIGHT - 54
  1199.     if rectMouse(x[0],y,w,h) || rectMouse(x[1],y,w,h) || rectMouse(x[2],y,w,h) ||
  1200.      rectMouse(x[3],y,w,h) || rectMouse(x[4],y,w,h)
  1201.      return true
  1202.     end
  1203.   end
  1204.  
  1205.   def xyForSE(number)
  1206.     case number
  1207.     # Customize
  1208.     when 0
  1209.       x = [46,207,367]; y = [52,210]
  1210.       w = 98; h = 89
  1211.       if rectMouse(x[0],y[0],w,h) || rectMouse(x[1],y[0],w,h) ||
  1212.         rectMouse(x[2],y[0],w,h) || rectMouse(x[0],y[1],w,h) ||
  1213.         rectMouse(x[1],y[1],w,h) || rectMouse(x[2],y[1],w,h)
  1214.         return true
  1215.       end
  1216.     # Customize (change)
  1217.     when 1
  1218.       xy = sceneChooseCustom
  1219.       x = xy[0] + 8; y = (@change)? xy[1]+10 : xy[1]+58
  1220.       w = 112; h = 44
  1221.       return true if rectMouse(x,xy[1]+10,w,h) || rectMouse(x,xy[1]+58,w,h)
  1222.     # Radio
  1223.     when 2
  1224.       x = 462; y = [33,183]
  1225.       w = 48; h = 117
  1226.       return true if rectMouse(x,y[0],w,h) || rectMouse(x,y[1],w,h) || rectMouse(26,10,432,313)
  1227.     # Phone (show information)
  1228.     when 3
  1229.       x = 327
  1230.       y = @sprites["phone information"].y
  1231.       return true if rectMouse(x,y,13,26)
  1232.     # Phone (use features)
  1233.     when 4
  1234.       pos = posPhoneMenu
  1235.       x = pos[0] + 8; y = [10,58,106]
  1236.       (0...y.length).each {|i| y[i]+=pos[1]}
  1237.       return true if rectMouse(x,y[0],272,44) || rectMouse(x,y[1],272,44) || rectMouse(x,y[2],272,44)
  1238.     end
  1239.   end
  1240.  
  1241.   def sePlayAll
  1242.     if ((@process==5 || @process==9) && playSEMainPage) || # Main page and Phone page (0 phone number)
  1243.       # Customize (control)
  1244.       (@process==6 && (playSEMainPage || xyForSE(0))) ||
  1245.       # Customize (change)
  1246.       (@process==7 && xyForSE(1)) ||
  1247.       # Radio (control)
  1248.       (@process==8 && (playSEMainPage || xyForSE(2))) ||
  1249.       # Phone (control)
  1250.       (@process==10 && (playSEMainPage || xyForSE(2) || rectMouse(460,0,52,17))) ||
  1251.       # Phone (show information)
  1252.       (@process==11 && xyForSE(3)) ||
  1253.       # Phone (use features)
  1254.       (@process==12 && xyForSE(4))
  1255.       # Play SE
  1256.       playSEMouse
  1257.     else
  1258.       @se = 0
  1259.     end
  1260.   end
  1261.  
  1262.   def playSEMouse
  1263.     @se = 1 if @se==0
  1264.     if @se==1
  1265.       @se = 2
  1266.       pbPlayDecisionSE
  1267.     end
  1268.   end
  1269. #-------------------------------------------------------------------------------
  1270. # Set bitmap
  1271. #-------------------------------------------------------------------------------
  1272.   # Image
  1273.   def create_sprite(spritename,filename,vp,dir="Pictures/Pokegear HGSS")
  1274.     @sprites["#{spritename}"] = Sprite.new(vp)
  1275.     @sprites["#{spritename}"].bitmap = Bitmap.new("Graphics/#{dir}/#{filename}")
  1276.   end
  1277.  
  1278.   # Set ox, oy
  1279.   def set_oxoy_sprite(spritename,ox,oy)
  1280.     @sprites["#{spritename}"].ox = ox
  1281.     @sprites["#{spritename}"].oy = oy
  1282.   end
  1283.  
  1284.   # Set x, y
  1285.   def set_xy_sprite(spritename,x,y)
  1286.     @sprites["#{spritename}"].x = x
  1287.     @sprites["#{spritename}"].y = y
  1288.   end
  1289.  
  1290.   # Set zoom
  1291.   def set_zoom(spritename,zoom_x,zoom_y)
  1292.     @sprites["#{spritename}"].zoom_x = zoom_x
  1293.     @sprites["#{spritename}"].zoom_y = zoom_y
  1294.   end
  1295.  
  1296.   # Set visible
  1297.   def set_visible_sprite(spritename,vsb=false)
  1298.     @sprites["#{spritename}"].visible = vsb
  1299.   end
  1300.  
  1301.   # Set angle
  1302.   def set_angle_sprite(spritename,angle)
  1303.     @sprites["#{spritename}"].angle = angle
  1304.   end
  1305.  
  1306.   # Set src
  1307.   def set_src_wh_sprite(spritename,w,h)
  1308.     @sprites["#{spritename}"].src_rect.width = w
  1309.     @sprites["#{spritename}"].src_rect.height = h
  1310.   end
  1311.  
  1312.   def set_src_xy_sprite(spritename,x,y)
  1313.     @sprites["#{spritename}"].src_rect.x = x
  1314.     @sprites["#{spritename}"].src_rect.y = y
  1315.   end
  1316. #-------------------------------------------------------------------------------
  1317. # Text
  1318. #-------------------------------------------------------------------------------
  1319.   # Draw
  1320.   def create_sprite_2(spritename,vp)
  1321.     @sprites["#{spritename}"] = Sprite.new(vp)
  1322.     @sprites["#{spritename}"].bitmap = Bitmap.new(Graphics.width,Graphics.height)
  1323.   end
  1324.  
  1325.   # Write
  1326.   BaseColor = Color.new(255,255,255)
  1327.   ShadowColor = Color.new(0,0,0)
  1328.   def drawTxt(bitmap,textpos,font=nil,fontsize=nil)
  1329.     # Sprite
  1330.     bitmap = @sprites["#{bitmap}"].bitmap
  1331.     bitmap.clear #if !nclear
  1332.     # Set font, size
  1333.     (font!=nil)? (bitmap.font.name=font) : pbSetSystemFont(bitmap)
  1334.     bitmap.font.size = fontsize if !fontsize.nil?
  1335. =begin
  1336.     pbDrawOutlineText(bitmap, # Bitmap
  1337.     x,y,width,height, # Position
  1338.     _INTL("#{string}"), # Title
  1339.     bcolor,scolor, # Color
  1340.     align) # Align
  1341. =end
  1342.     pbDrawTextPositions(bitmap,textpos)
  1343.   end
  1344.  
  1345.   # Clear
  1346.   def clearTxt(bitmap)
  1347.     @sprites["#{bitmap}"].bitmap.clear
  1348.   end
  1349. #-------------------------------------------------------------------------------
  1350. # Icon
  1351. #-------------------------------------------------------------------------------
  1352.   def create_sprite_3(spritename,x,y,filename,vp,dir="Pictures")
  1353.     @sprites["#{spritename}"] = IconSprite.new(x,y,vp)
  1354.     @sprites["#{spritename}"].setBitmap("Graphics/#{dir}/#{filename}")
  1355.   end
  1356.  
  1357. #-------------------------------------------------------------------------------
  1358. # Mouse
  1359. #-------------------------------------------------------------------------------
  1360.   def rectMouse(x,y,w,h)
  1361.     rect = [x,w+x,y,h+y]
  1362.     mouse = Mouse::getMousePos
  1363.     mouse = [0,0] if !mouse
  1364.     if mouse[0]>=rect[0] && mouse[0]<= rect[1] &&
  1365.       mouse[1]>=rect[2] && mouse[1]<= rect[3]
  1366.       return true
  1367.     end
  1368.     return false
  1369.   end
  1370.  
  1371.   def clickedMouse
  1372.     return true if Input.triggerex?(Input::RightMouseKey) || Input.triggerex?(Input::LeftMouseKey)
  1373.     return false
  1374.   end
  1375. #-------------------------------------------------------------------------------
  1376. #-------------------------------------------------------------------------------
  1377.   def dispose(id=nil)
  1378.     (!id)? pbDisposeSprite(@sprites,id) : pbDisposeSpriteHash(@sprites)
  1379.   end
  1380.  
  1381.   def update_ingame
  1382.     Graphics.update
  1383.     Input.update
  1384.     pbUpdateSpriteHash(@sprites)
  1385.   end
  1386.  
  1387.   def endScene
  1388.     # End
  1389.     dispose
  1390.     @viewport.dispose
  1391.     @viewport1.dispose
  1392.     @viewport2.dispose
  1393.   end
  1394. end
  1395. #-------------------------------------------------------------------------------
  1396. class PokemonPokegearScreen
  1397.   def initialize(scene)
  1398.     @scene = scene
  1399.   end
  1400.  
  1401.   def pbStartScreen
  1402.     @scene.start
  1403.   end
  1404. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement