Menu principal allegé
Auteur : Wawower
Description :Ce script vous permet d'avoir un menu principal avec une image de fond et des icones pour les choix plus simple et plus leger que le menu de base.
Realisé pour la commande :viewtopic.php?f=92&t=102441&start=0Installation : Ce script est à placer au dessus de main.
Utilisation :Il vous faut une image dans pictures pour le fond et 2*6 icônes pour le choix.
6 représentant successivement le menu objet, le menu compétence, le menu équiper, le menu état, le menu sauvegarde et le menu quitter. Et pour chacune d'elles leur "équivalent selectionné" nommée comme la precedente avec '_selected' à la fin.
Exemple de contenu du dossier IconsIcone-1, Icone-2, Icone-3, Icone-4, Icone-5, Icone-6, Icone-1_selected, Icone-2_selected, Icone-3_selected, Icone-4_selected, Icone-5_selected, Icone-6_selected
Personnalisation : - Vous pouvez modifiez le nom et la position de l'image de fond en modifiant les valeurs des constantes : Fond_Name, Fond_X, Fond_Y aux environ des lignes trente.
- Vous pouvez modifier les noms des icones, la position de la première et l'écart entre chacune en changeant respectivement la valeur des constantes : Names, X, Y, Ecart dans les premières lignes
Script :- Code: Tout sélectionner
class Sprite_MainMenuIcon < Sprite
Names = ['Icone-1', 'Icone-2', 'Icone-3', 'Icone-4', 'Icone-5', 'Icone-6']
X = 64
Y = 0
Ecart = 32
def initialize(index)
@index = index
super()
self.x = X + index * Ecart
self.y = Y
@selected = (index == $game_temp.last_menu_index)
bmpname = Names[@index]
bmpname += '_selected' if @selected
self.bitmap = RPG::Cache.icon(bmpname)
end
def selected=(bool)
return if bool == @selected
bmpname = Names[@index]
bmpname += '_selected' if bool
self.bitmap = RPG::Cache.icon(bmpname)
@selected = bool
end
def dispose
RPG::Cache.picture(Names[@index]).dispose
RPG::Cache.picture(Names[@index]+'_selected').dispose
super
end
end
class Spriteset_MainMenu
Fond_Name = 'Fond'
Fond_X = 0
Fond_Y = 0
def initialize
@fond = Sprite.new
@fond.x = Fond_X
@fond.y = Fond_Y
@fond.bitmap = RPG::Cache.picture(Fond_Name)
@icons = (0...6).map { |i| Sprite_MainMenuIcon.new(i) }
@index = $game_temp.last_menu_index
end
attr_reader :index
def index=(val)
@icons.each_with_index { |icon, i|
icon.selected = (val == i)
}
@index = val
end
def dispose
@fond.dispose
@icons.each { |icon| icon.dispose }
end
end
class Game_Temp
attr_accessor :last_menu_index
alias main_menu_initialize initialize
def initialize(*args)
main_menu_initialize(*args)
@last_menu_index = 0
end
end
class Scene_Menu
def initialize(*args); end
def main
@map = Spriteset_Map.new
@spriteset = Spriteset_MainMenu.new
Graphics.transition
while $scene == self
Graphics.update
Input.update
update
end
Graphics.freeze
@map.dispose
@spriteset.dispose
end
def update
@map.update
if Input.trigger?(Input::LEFT)
@spriteset.index = (@spriteset.index - 1) % 6
elsif Input.trigger?(Input::RIGHT)
@spriteset.index = (@spriteset.index + 1) % 6
elsif Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
i = @spriteset.index
$game_temp.last_menu_index = i
case i
when 0
$scene = Scene_Item.new
when 1
$scene = Scene_Skill.new(0)
when 2
$scene = Scene_Equip.new(0)
when 3
$scene = Scene_Status.new(0)
when 4
$scene = Scene_Save.new
when 5
$scene = Scene_End.new
end
elsif Input.trigger?(Input::B)
$game_temp.last_menu_index = 0
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
end
end
end