Advertisement
polectron

Menu circular

Nov 15th, 2018
1,105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.23 KB | None | 0 0
  1. #------------------------------------------------
  2. #Script de Menu circular, creado por Polectron
  3. #------------------------------------------------
  4. #Este script pertenece a la colección de scripts Gwengardia Mod
  5. #Todos sabemos que el menú propio de pokémon essentials está un poco anticuadillo, y no es lo más bonito del mundo. Por eso he hecho #este script que crea un menú algo más bonito.
  6. #Evidentemente los gráficos los puedes cambiar por otros, siempre y cuando se respeten las dimensiones. Añadir más elementos también es #posible, pero ya requiere un poco de maña con ruby, aunque no es nada dificil.
  7. #Descarga los graficos desde este link
  8. #http://www.mediafire.com/file/qwaazct3ns6xmwp/menu_circular.zip/file
  9.  
  10. #-----------------------------------------------
  11. class Scene_Map
  12.     def call_menu
  13.      $game_temp.menu_calling = false
  14.      $game_player.straighten
  15.      $game_map.update
  16.      pbCallMenu2
  17.     end
  18. end
  19.  
  20. class Menu2
  21.     def update;end
  22.  
  23.     def initialize
  24.       @selected_item = 0
  25.       @last_item = 0
  26.       @items = []
  27.            
  28.       @bagCmd = addCmd(["bolsa","Mochila","openBag"])
  29.       @partyCmd = addCmd(["pokeball","Equipo","openParty"]) if $Trainer.party.length>0
  30.       @trainerCmd = addCmd(["trainer","Trainer ID","openTrainerCard"])
  31.       @saveCmd = addCmd(["save","Guardar","openSave"])
  32.       @optionsCmd = addCmd(["options","Opciones","openOptions"])
  33.       @debugCmd = addCmd(["debug","Debug","pbDebugMenu"]) if $DEBUG
  34.       @exitCmd = addCmd(["exit","Salir","exitMenu"])
  35.      
  36.       @angle_per_item = 360/@items.length
  37.      
  38.       @exit = false
  39.     end
  40.      
  41.     def pbStartScene # CARGA LAS COSAS
  42.         @sprites={}
  43.         @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  44.         @viewport.z=99999
  45.        
  46.         @sprites["bg"]=Sprite.new(@viewport)
  47.         @sprites["bg"].bitmap=RPG::Cache.picture("menu_bg")
  48.        
  49.         @totalElements = @items.length
  50.         @radius = 100
  51.        
  52.         counter = 0
  53.         for item in @items
  54.           #p item[0]
  55.           @sprites["item_#{counter}"] = Sprite.new(@viewport)
  56.           @sprites["item_#{counter}"].bitmap=RPG::Cache.picture(item[0])
  57.           @sprites["item_#{counter}"].x=getXPolygon(counter, @totalElements, Graphics.width/2, 0) - (@sprites["item_#{counter}"].bitmap.width/2)
  58.           @sprites["item_#{counter}"].y=getYPolygon(counter, @totalElements, Graphics.height/2, 0) - (@sprites["item_#{counter}"].bitmap.height/2)
  59.           @sprites["item_#{counter}"].z = 999
  60.           counter += 1
  61.         end
  62.                
  63.         time = 0.8
  64.         fps = 20.0
  65.  
  66.         ellapsed_frames = 0
  67.  
  68.         loop do
  69.             ellapsed_frames += 1
  70.             offset = (ellapsed_frames/(fps*time))*@radius
  71.  
  72.             # p ellapsed_frames.to_s + "/(" + time.to_s + "*" + fps.to_s + ")*"+index_direction.to_s + "->" + (ellapsed_frames/(time*fps)*index_direction).to_s
  73.  
  74.             counter = 0
  75.             for item in @items
  76.                 @sprites["item_#{counter}"].x=getXPolygon(counter, @totalElements, Graphics.width/2, offset) - (@sprites["item_#{counter}"].bitmap.width/2)
  77.                 @sprites["item_#{counter}"].y=getYPolygon(counter, @totalElements, Graphics.height/2, offset) - (@sprites["item_#{counter}"].bitmap.height/2)
  78.             counter += 1
  79.             end
  80.  
  81.             Graphics.update
  82.             break if ellapsed_frames/fps == time
  83.  
  84.         end
  85.                
  86.         @sprites["selector"]=Sprite.new(@viewport)
  87.         @sprites["selector"].bitmap=RPG::Cache.picture("menu_selection.png")
  88.         redrawSelector
  89.         #@sprites["selector"].z
  90.        
  91.         pbSEPlay("menu")
  92.        
  93.     end
  94.    
  95.     def pbEndScene # CUANDO TERMINA...
  96.         pbDisposeSpriteHash(@sprites)
  97.         @viewport.dispose if @viewport
  98.     end
  99.        
  100.     def pbUpdate    
  101.         @xcount=999
  102.         @posible1=0
  103.         @posible2=0
  104.         @posible3=0
  105.         loop do
  106.             Input.update
  107.  
  108.         ################### FUNCIONES AQUÍ #######
  109.  
  110.             if Input.trigger?(Input::RIGHT)
  111.                 pbSEPlay("GUI sel cursor")
  112.                 @last_item = @selected_item
  113.                 @selected_item+=1
  114.                 drawIcons
  115.             end
  116.            
  117.             if Input.trigger?(Input::LEFT)
  118.                 pbSEPlay("GUI sel cursor")
  119.                 @last_item = @selected_item
  120.                 @selected_item-=1
  121.                 drawIcons
  122.             end
  123.            
  124.             if (@selected_item < 0)
  125.                 @selected_item = @items.length-1
  126.             end
  127.  
  128.             if (@selected_item >= @items.length)
  129.                 @selected_item = 0
  130.             end
  131.  
  132.             if Input.trigger?(Input::C)
  133.               send(@items[(@selected_item-@items.length).abs%@items.length][2])
  134.             end
  135.            
  136.             break if Input.trigger?(Input::B) # CIERRA EL MENÚ
  137.             break if @exit
  138.            
  139.           #redrawSelector
  140.           Graphics.update
  141.         end # loop
  142.        
  143.         time = 0.8
  144.         fps = 20.0
  145.  
  146.         ellapsed_frames = 0
  147.        
  148.         loop do
  149.             ellapsed_frames += 1
  150.             radius = @radius - (ellapsed_frames/(fps*time))*@radius
  151.  
  152.             # p ellapsed_frames.to_s + "/(" + time.to_s + "*" + fps.to_s + ")*"+index_direction.to_s + "->" + (ellapsed_frames/(time*fps)*index_direction).to_s
  153.  
  154.             counter = 0
  155.             for item in @items
  156.                 @sprites["item_#{counter}"].x=getXPolygon(counter, @totalElements, Graphics.width/2, radius, @selected_item) - (@sprites["item_#{counter}"].bitmap.width/2)
  157.                 @sprites["item_#{counter}"].y=getYPolygon(counter, @totalElements, Graphics.height/2, radius, @selected_item) - (@sprites["item_#{counter}"].bitmap.height/2)
  158.             counter += 1
  159.             end
  160.  
  161.             Graphics.update
  162.             break if ellapsed_frames/fps == time
  163.  
  164.         end
  165.        
  166.     end # update
  167.  
  168.     def drawIcons
  169.      
  170.       index_direction = @selected_item - @last_item
  171.      
  172.       # p index_direction
  173.      
  174.      
  175.       time = 0.8
  176.       fps = 20.0
  177.      
  178.       ellapsed_frames = 0
  179.      
  180.       loop do
  181.         ellapsed_frames += 1
  182.         offset = @last_item+ellapsed_frames/(time*fps)*index_direction
  183.        
  184.         # p ellapsed_frames.to_s + "/(" + time.to_s + "*" + fps.to_s + ")*"+index_direction.to_s + "->" + (ellapsed_frames/(time*fps)*index_direction).to_s
  185.        
  186.         counter = 0
  187.         for item in @items
  188.             @sprites["item_#{counter}"].x=getXPolygon(counter, @totalElements, Graphics.width/2, @radius, offset) - (@sprites["item_#{counter}"].bitmap.width/2)
  189.             @sprites["item_#{counter}"].y=getYPolygon(counter, @totalElements, Graphics.height/2, @radius, offset) - (@sprites["item_#{counter}"].bitmap.height/2)
  190.         counter += 1
  191.         end
  192.        
  193.         Graphics.update
  194.         break if ellapsed_frames/fps == time
  195.        
  196.       end
  197.     end
  198.    
  199.     def redrawSelector
  200.       @sprites["selector"].x=getXPolygon(@selected_item, @totalElements, Graphics.width/2, @radius) - (@sprites["item_#{@selected_item}"].bitmap.width/2)
  201.       @sprites["selector"].y=getYPolygon(@selected_item, @totalElements, Graphics.height/2, @radius) - (@sprites["item_#{@selected_item}"].bitmap.height/2)
  202.     end
  203.    
  204.     def addCmd(item)
  205.       return @items.push(item).length-1
  206.     end
  207.    
  208. end # Cierra la class
  209.  
  210. ###################################################
  211.  
  212. def waitForXFrames(x)
  213.    
  214. end
  215.  
  216. def pbCallMenu2
  217.     scene=Menu2.new
  218.     scene.pbStartScene
  219.     scene.pbUpdate
  220.     scene.pbEndScene
  221. end
  222.  
  223. def deg2rad(deg)
  224.     return deg*Math::PI/180
  225. end
  226.  
  227. def getXPolygon(element, total, x_centre, radius, offset=0)
  228.     return radius * Math.cos(2*Math::PI*(element+offset)/total + (Math::PI*1.5)) + x_centre
  229. end
  230.  
  231. def getYPolygon(element, total, y_centre, radius, offset=0)
  232.     return radius * Math.sin(2*Math::PI*(element+offset)/total + (Math::PI*1.5)) + y_centre
  233. end
  234.  
  235. def exitMenu
  236.   @exit = true
  237. end
  238.  
  239. def openOptions
  240.   if defined?(PokemonOptionScene) == 'constant' && PokemonOptionScene.class == Class
  241.     scene=PokemonOptionScene.new
  242.     screen=PokemonOption.new(scene)
  243.     pbFadeOutIn(99999) { screen.pbStartScreen(true) }
  244.   else
  245.     pbFadeOutIn(99999){
  246.       scene = PokemonOption_Scene.new
  247.       screen = PokemonOptionScreen.new(scene)
  248.       screen.pbStartScreen(true)
  249.     }
  250.   end
  251. end
  252.  
  253. def openBag
  254.   item=0
  255.   scene=PokemonBag_Scene.new
  256.   screen=PokemonBagScreen.new(scene,$PokemonBag)
  257.   pbFadeOutIn(99999) {
  258.   item=screen.pbStartScreen
  259.   if item>0
  260.       pbEndScene
  261.   else
  262.       #@scene.pbRefresh
  263.   end
  264.   }
  265.   if item>0
  266.       Kernel.pbUseKeyItemInField(item)
  267.       exitMenu #Corrección 01-11-2018
  268.       return
  269.   end
  270. end
  271.  
  272. def openParty
  273.   if defined?(PokemonScreen_Scene) == 'constant' && PokemonScreen_Scene.class == Class
  274.     if Input.trigger?(Input::C)
  275.       sscene=PokemonScreen_Scene.new
  276.       sscreen=PokemonScreen.new(sscene,$Trainer.party)
  277.       hiddenmove=nil
  278.       pbFadeOutIn(99999) {
  279.           hiddenmove=sscreen.pbPokemonScreen
  280.           if hiddenmove
  281.               pbEndScene
  282.           else
  283.               #@scene.pbRefresh
  284.           end
  285.       }
  286.       if hiddenmove
  287.           Kernel.pbUseHiddenMove(hiddenmove[0],hiddenmove[1])
  288.           exitMenu #Corrección 01-11-2018
  289.           return
  290.       end
  291.     end
  292.   else
  293.     if Input.trigger?(Input::C)
  294.       sscene=PokemonParty_Scene.new
  295.       sscreen=PokemonPartyScreen.new(sscene,$Trainer.party)
  296.       hiddenmove=nil
  297.       pbFadeOutIn(99999) {
  298.           hiddenmove=sscreen.pbPokemonScreen
  299.           if hiddenmove
  300.               pbEndScene
  301.           else
  302.               #@scene.pbRefresh
  303.           end
  304.       }
  305.       if hiddenmove
  306.           Kernel.pbUseHiddenMove(hiddenmove[0],hiddenmove[1])
  307.           exitMenu #Corrección 01-11-2018
  308.           return
  309.       end
  310.     end
  311.   end
  312.  
  313.  
  314. end
  315.  
  316. def openTrainerCard
  317.   if defined?(PokemonTrainerCardScene) == 'constant' && PokemonTrainerCardScene.class == Class
  318.     scene=PokemonTrainerCardScene.new
  319.     screen=PokemonTrainerCard.new(scene)
  320.     pbFadeOutIn(99999) {
  321.        screen.pbStartScreen
  322.     }
  323.   else
  324.     scene=PokemonTrainerCard_Scene.new
  325.     screen=PokemonTrainerCardScreen.new(scene)
  326.     pbFadeOutIn(99999) {
  327.        screen.pbStartScreen
  328.     }
  329.  
  330.   end
  331. end
  332.  
  333. def openSave
  334.   if defined?(PokemonSaveScene) == 'constant' && PokemonSaveScene.class == Class
  335.     scene=PokemonSaveScene.new
  336.     screen=PokemonSave.new(scene)
  337.     if screen.pbSaveScreen
  338.       endscene=false
  339.       @exit = true
  340.       #break
  341.     end
  342.   else
  343.     scene=PokemonSave_Scene.new
  344.     screen=PokemonSaveScreen.new(scene)
  345.     if screen.pbSaveScreen
  346.       endscene=false
  347.       @exit = true
  348.       #break
  349.     end
  350.   end
  351. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement