#============================================================================== # ý¡ Window_RingMenu #============================================================================== #============================================================================== # Edited by MakirouAru # 3D Version by Deblu #============================================================================== class Window_RingMenu < Window_Base #-------------------------------------------------------------------------- # ý: ’N’0’X'èý" #-------------------------------------------------------------------------- # Grafiktyp: Grafiken oder Icons? grafik_typ = "i" # p = Pictures, i = Icons # Die Dateinamen (ohne Dateiendung) grafik_gegenstaende = "034-Item03" grafik_faehigkeiten = "044-Skill01" grafik_ausruestung = "001-Weapon01" grafik_status = "050-Skill07" grafik_speichern = "038-Item07" grafik_beenden = "046-Skill03" STARTUP_FRAMES = 20 # ý0`ú’A’j’ýý[’V’!’"Ì’t’Rý[’¬ý" MOVING_FRAMES = 5 # ’`’"’O 0ñµ½}~Ì’t’Rý[’¬ý" RING_R = 256 # ’`’"’OÌ"¼Ra if grafik_typ == "i" PIC_ITEM = RPG::Cache.icon(grafik_gegenstaende) # ýu’A’C’e’¬ýv’ý’j’&ý[Ì’A’C’R’" PIC_SKILL = RPG::Cache.icon(grafik_faehigkeiten) # ýu’X’L’9ýv’ý’j’&ý[Ì’A’C’R’" PIC_EQUIP = RPG::Cache.icon(grafik_ausruestung) # ýu'""õýv’ý’j’&ý[Ì’A’C’R’" PIC_STATUS = RPG::Cache.icon(grafik_status) # ýu’X’eý[’^’Xýv’ý’j’&ý[Ì’A’C’R’" PIC_SAVE = RPG::Cache.icon(grafik_speichern) # ýu’Zý[’uýv’ý’j’&ý[Ì’A’C’R’" PIC_EXIT = RPG::Cache.icon(grafik_beenden) # ýuýI¹ýv’ý’j’&ý[Ì’A’C’R’" else PIC_ITEM = RPG::Cache.picture(grafik_gegenstaende) # ýu’A’C’e’¬ýv’ý’j’&ý[Ì’A’C’R’" PIC_SKILL = RPG::Cache.picture(grafik_faehigkeiten) # ýu’X’L’9ýv’ý’j’&ý[Ì’A’C’R’" PIC_EQUIP = RPG::Cache.picture(grafik_ausruestung) # ýu'""õýv’ý’j’&ý[Ì’A’C’R’" PIC_STATUS = RPG::Cache.picture(grafik_status) # ýu’X’eý[’^’Xýv’ý’j’&ý[Ì’A’C’R’" PIC_SAVE = RPG::Cache.picture(grafik_speichern) # ýu’Zý[’uýv’ý’j’&ý[Ì’A’C’R’" PIC_EXIT = RPG::Cache.picture(grafik_beenden) # ýuýI¹ýv’ý’j’&ý[Ì’A’C’R’" end PIC_DISABLE= RPG::Cache.icon("") # }gp9Ö}~ý¬ÚÉ"tA’C’R’" SE_STARTUP = "056-Right02" # ’ý’j’&ý[ `J¢½Æ«ÉÂç·SE MODE_START = 1 # ’X’^ý[’g’A’b’v’A’j’ýý[’V’!’" MODE_WAIT = 2 # 'Ò9@ MODE_MOVER = 3 # }~Rv0ñè0ñ"]’A’j’ýý[’V’!’" MODE_MOVEL = 4 # "½}~Rv0ñè0ñ"]’A’j’ýý[’V’!’" #-------------------------------------------------------------------------- # ý: ’A’N’Z’T #-------------------------------------------------------------------------- attr_accessor :index #-------------------------------------------------------------------------- # ýS ’I’u’W’F’N’gý0`ú0» #-------------------------------------------------------------------------- def initialize( center_x, center_y ) super(0, 0, 640, 480) self.contents = Bitmap.new(width-32, height-32) self.contents.font.name = "Arial" self.opacity = 0 self.back_opacity = 0 s1 = "Gegenstände" s2 = "Fähigkeiten" s3 = "Ausrüstung" s4 = "Status" s5 = "Speichern" s6 = "Beenden" @commands = [ s1, s2, s3, s4, s5, s6 ] @item_max = 6 @index = 0 @items = [ PIC_ITEM, PIC_SKILL, PIC_EQUIP, PIC_STATUS, PIC_SAVE, PIC_EXIT ] @disabled = [ false, false, false, false, false, false ] @cx = center_x - 16 @cy = center_y - 16 setup_move_start refresh end #-------------------------------------------------------------------------- # ýS ’t’Rý[’¬ýXýV #-------------------------------------------------------------------------- def update super refresh end #-------------------------------------------------------------------------- # ýS 0æÊýÄ"`0æ #-------------------------------------------------------------------------- def refresh self.contents.clear # ’A’C’R’" "`0æ case @mode when MODE_START refresh_start when MODE_WAIT refresh_wait when MODE_MOVER refresh_move(1) when MODE_MOVEL refresh_move(0) end # ’A’N’e’B’uÈ’R’}’"’h¼"\}¦ rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32) self.contents.draw_text(rect, @commands[@index],1) end #-------------------------------------------------------------------------- # ý: 0æÊýÄ"`0æ(ý0`ú0»}~) #-------------------------------------------------------------------------- def refresh_start d1 = 2.0 * Math::PI / @item_max d2 = 1.0 * Math::PI / STARTUP_FRAMES r = RING_R - 1.0 * RING_R * @steps / STARTUP_FRAMES for i in 0...@item_max j = i - @index d = d1 * j + d2 * @steps x = @cx + ( r * Math.sin( d ) ).to_i y = @cy - ( r/3 * Math.cos( d ) ).to_i draw_item(x, y, i) end @steps -= 1 if @steps < 1 @mode = MODE_WAIT end end #-------------------------------------------------------------------------- # ý: 0æÊýÄ"`0æ('Ò9@}~) #-------------------------------------------------------------------------- def refresh_wait d = 2.0 * Math::PI / @item_max for i in 0...@item_max j = i - @index x = @cx + ( RING_R * Math.sin( d * j ) ).to_i y = @cy - ( RING_R/3 * Math.cos( d * j ) ).to_i draw_item(x, y, i) end end #-------------------------------------------------------------------------- # ý: 0æÊýÄ"`0æ(0ñ"]}~) # mode : 0="½}~Rv0ñè 1=}~Rv0ñè #-------------------------------------------------------------------------- def refresh_move( mode ) d1 = 2.0 * Math::PI / @item_max d2 = d1 / MOVING_FRAMES d2 *= -1 if mode != 0 for i in 0...@item_max j = i - @index d = d1 * j + d2 * @steps x = @cx + ( RING_R * Math.sin( d ) ).to_i y = @cy - ( RING_R/3 * Math.cos( d ) ).to_i draw_item(x, y, i) end @steps -= 1 if @steps < 1 @mode = MODE_WAIT end end #-------------------------------------------------------------------------- # ýS ý¬ÚÌ"`0æ # x : # y : # i : ý¬Ú"Ôý #-------------------------------------------------------------------------- def draw_item(x, y, i) #p "x=" + x.to_s + " y=" + y.to_s + " i=" + @items[i].to_s rect = Rect.new(0, 0, @items[i].width, @items[i].height) if @index == i self.contents.blt( x, y, @items[i], rect ) if @disabled[@index] self.contents.blt( x, y, ICON_DISABLE, rect ) end else self.contents.blt( x, y, @items[i], rect, 128 ) if @disabled[@index] self.contents.blt( x, y, ICON_DISABLE, rect, 128 ) end end end #-------------------------------------------------------------------------- # ýS ý¬Ú ³RøÉ·é # index : ý¬Ú"Ôý #-------------------------------------------------------------------------- def disable_item(index) @disabled[index] = true end #-------------------------------------------------------------------------- # ý: ý0`ú0»’A’j’ýý[’V’!’"Ìý¬"õ #-------------------------------------------------------------------------- def setup_move_start @mode = MODE_START @steps = STARTUP_FRAMES if SE_STARTUP != nil and SE_STARTUP != "" Audio.se_play("Audio/SE/" + SE_STARTUP, 80, 100) end end #-------------------------------------------------------------------------- # ý: 0ñ"]’A’j’ýý[’V’!’"Ìý¬"õ #-------------------------------------------------------------------------- def setup_move_move(mode) if mode == MODE_MOVER @index -= 1 @index = @items.size - 1 if @index < 0 elsif mode == MODE_MOVEL @index += 1 @index = 0 if @index >= @items.size else return end @mode = mode @steps = MOVING_FRAMES end #-------------------------------------------------------------------------- # ý: ’A’j’ýý[’V’!’"' ©Ç¤© #-------------------------------------------------------------------------- def animation? return @mode != MODE_WAIT end end #============================================================================== # ý¡ Window_MenuStatus #------------------------------------------------------------------------------ # ý@’ý’j’&ý[0æÊÅ’pý[’e’B’ý’"’oý[Ì’X’eý[’^’X "\}¦·é’E’B’"’h’EÅ·ýB #============================================================================== class Window_RingMenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ýS ’I’u’W’F’N’gý0`ú0» #-------------------------------------------------------------------------- def initialize super(204, 64, 232, 352) self.contents = Bitmap.new(width - 32, height - 32) refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ýS ’`’t’R’b’V’& #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.name = "Arial" @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 80 y = 80 * i actor = $game_party.actors[i] draw_actor_graphic(actor, x - 40, y + 80) draw_actor_name(actor, x, y + 24) end end #-------------------------------------------------------------------------- # ýS ’Jý[’\’9Ì9éR`ýXýV #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(0, @index * 80, self.width - 32, 80) end end end #============================================================================== # #ý¡ Scene_RingMenu # ý¡ Scene_Menu #------------------------------------------------------------------------------ # ý@’ý’j’&ý[0æÊÌýÆý ýs¤’N’0’XÅ·ýB #============================================================================== #class Scene_RingMenu class Scene_Menu #-------------------------------------------------------------------------- # ýS ’I’u’W’F’N’gý0`ú0» # menu_index : ’R’}’"’hÌ’Jý[’\’9ý0`úÆÊ'u #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # ýS ’ý’C’"ýÆý #-------------------------------------------------------------------------- def main # ’X’v’0’C’g’Z’b’g ýìý¬ @spriteset = Spriteset_Map.new # ’R’}’"’h’E’B’"’h’E ýìý¬ px = $game_player.screen_x - 15 py = $game_player.screen_y - 24 @command_window = Window_RingMenu.new(px,py) @command_window.index = @menu_index # ’pý[’e’Býlý"ª 0 ýlÌýêý! if $game_party.actors.size == 0 # ’A’C’e’¬ýA’X’L’9ýA'""õýA’X’eý[’^’X ³Rø0» @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end @command_window.z = 100 # ’Zý[’u9Ö}~Ìýêý! if $game_system.save_disabled # ’Zý[’u ³RøÉ·é @command_window.disable_item(4) end # ’X’eý[’^’X’E’B’"’h’E ýìý¬ @status_window = Window_RingMenuStatus.new @status_window.x = 160 @status_window.y = 0 @status_window.z = 200 @status_window.visible = false # ’g’0’"’W’V’!’"}Àýs Graphics.transition # ’ý’C’"’9ý[’v loop do # ’Qý[’¬0æÊ ýXýV Graphics.update # "üÍýî"ñ ýXýV Input.update # ’t’Rý[’¬ýXýV update # 0æÊªýØè'ÖíÁ½ç’9ý[’v ' 'f if $scene != self break end end # ’g’0’"’W’V’!’"ý¬"õ Graphics.freeze # ’X’v’0’C’g’Z’b’g 0 "ú @spriteset.dispose # ’E’B’"’h’E 0 "ú @command_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # ýS ’t’Rý[’¬ýXýV #-------------------------------------------------------------------------- def update # ’E’B’"’h’E ýXýV @command_window.update @status_window.update # ’R’}’"’h’E’B’"’h’Eª’A’N’e’B’uÌýêý!: update_command RÄÔ if @command_window.active update_command return end # ’X’eý[’^’X’E’B’"’h’Eª’A’N’e’B’uÌýêý!: update_status RÄÔ if @status_window.active update_status return end end #-------------------------------------------------------------------------- # ýS ’t’Rý[’¬ýXýV (’R’}’"’h’E’B’"’h’Eª’A’N’e’B’uÌýêý!) #-------------------------------------------------------------------------- def update_command # B ’{’^’"ª0x³ê½ýêý! if Input.trigger?(Input::B) # ’L’’’"’Z’9 SE 00't $game_system.se_play($data_system.cancel_se) # ’}’b’v0æÊÉýØè'Ö¦ $scene = Scene_Map.new return end # C ’{’^’"ª0x³ê½ýêý! if Input.trigger?(Input::C) # ’pý[’e’Býlý"ª 0 ýlÅýA’Zý[’uýA’Qý[’¬ýI¹ÆÈ`OÌ’R’}’"’hÌýêý! if $game_party.actors.size == 0 and @command_window.index < 4 # ’u’Uý[ SE 00't $game_system.se_play($data_system.buzzer_se) return end # ’R’}’"’h’E’B’"’h’EÌ’Jý[’\’9ÆÊ'uÅ"ª`ò case @command_window.index when 0 # ’A’C’e’¬ # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’A’C’e’¬0æÊÉýØè'Ö¦ $scene = Scene_Item.new when 1 # ’X’L’9 # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’X’eý[’^’X’E’B’"’h’E ’A’N’e’B’uÉ·é @command_window.active = false @status_window.active = true @status_window.visible = true @status_window.index = 0 when 2 # '""õ # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’X’eý[’^’X’E’B’"’h’E ’A’N’e’B’uÉ·é @command_window.active = false @status_window.active = true @status_window.visible = true @status_window.index = 0 when 3 # ’X’eý[’^’X # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’X’eý[’^’X’E’B’"’h’E ’A’N’e’B’uÉ·é @command_window.active = false @status_window.active = true @status_window.visible = true @status_window.index = 0 when 4 # ’Zý[’u # ’Zý[’u9Ö}~Ìýêý! if $game_system.save_disabled # ’u’Uý[ SE 00't $game_system.se_play($data_system.buzzer_se) return end # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’Zý[’u0æÊÉýØè'Ö¦ $scene = Scene_Save.new when 5 # ’Qý[’¬ýI¹ # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’Qý[’¬ýI¹0æÊÉýØè'Ö¦ $scene = Scene_End.new end return end # ’A’j’ýý[’V’!’"' Èç’Jý[’\’9ÌýÆý ýsíÈ¢ return if @command_window.animation? # ýªorý© ’{’^’"ª0x³ê½ýêý! if Input.press?(Input::UP) or Input.press?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @command_window.setup_move_move(Window_RingMenu::MODE_MOVEL) return end # ý«orý¨ ’{’^’"ª0x³ê½ýêý! if Input.press?(Input::DOWN) or Input.press?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) @command_window.setup_move_move(Window_RingMenu::MODE_MOVER) return end end #-------------------------------------------------------------------------- # ýS ’t’Rý[’¬ýXýV (’X’eý[’^’X’E’B’"’h’Eª’A’N’e’B’uÌýêý!) #-------------------------------------------------------------------------- def update_status # B ’{’^’"ª0x³ê½ýêý! if Input.trigger?(Input::B) # ’L’’’"’Z’9 SE 00't $game_system.se_play($data_system.cancel_se) # ’R’}’"’h’E’B’"’h’E ’A’N’e’B’uÉ·é @command_window.active = true @status_window.active = false @status_window.visible = false @status_window.index = -1 return end # C ’{’^’"ª0x³ê½ýêý! if Input.trigger?(Input::C) # ’R’}’"’h’E’B’"’h’EÌ’Jý[’\’9ÆÊ'uÅ"ª`ò case @command_window.index when 1 # ’X’L’9 # ±Ì’A’N’^ý[Ìýs"®ý§RÀª 2 ÆÈýãÌýêý! if $game_party.actors[@status_window.index].restriction >= 2 # ’u’Uý[ SE 00't $game_system.se_play($data_system.buzzer_se) return end # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’X’L’90æÊÉýØè'Ö¦ $scene = Scene_Skill.new(@status_window.index) when 2 # '""õ # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # '""õ0æÊÉýØè'Ö¦ $scene = Scene_Equip.new(@status_window.index) when 3 # ’X’eý[’^’X # RÆ'è SE 00't $game_system.se_play($data_system.decision_se) # ’X’eý[’^’X0æÊÉýØè'Ö¦ $scene = Scene_Status.new(@status_window.index) end return end end end