Jump to content
Rpg²S Forum

*Menu ad anello


dani3
 Share

Recommended Posts

Ecco la versione di XRXS, Dubealex e Hypershadow180 del menu ad anello da me adattato per renderlo compatibile con il menu delle limit, per chi lo usa:

 

#------------------------------------------------------------------------------
# Menu ad anello
#------------------------------------------------------------------------------
# Versione originale: XRXS, Dubealex e Hypershadow180
# Adattato da Dani3 per renderlo compatibile con il menu delle Limit Break, puo'
# comunque essere personalizzato per farlo funzionare con il menu di default
# togliendo le stringhe relative alla limit break e ordinandole seguendo
# l'ordine di default.
#------------------------------------------------------------------------------
class Scene_Menu
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize(menu_index = 0)
		@menu_index = menu_index
		$location_text=[]
		$gold_text=[]
		$window_size=[]
		$ring_menu_text=[]
		$chara_select=[]
		@window_opacity=[]
		@chara_select=[]
		@window_position=[]
		$gold_text[0]="JSL Ancient" # Tipo d font
		$gold_text[1]=20 # Font Size
		$gold_text[2]=0 #
		$gold_text[3]=0 # Gold Color
		$gold_text[4]="UBS" # Testo
		@window_opacity[0]=255 # Opacita'bordo
		@window_opacity[1]=130 # Opacita' sfondo
		$window_gold_skin="001-Blue01" # Skin finestra gold
		@window_position[0]=0 # posizione asse x
		@window_position[2]=384 # posizione asse y finestra gold
		$window_size[0]=160 # Lunghezza
		$window_size[1]=96 # Altezza
		$ring_menu_text[0]="JSL Ancient" # tipo font
		$ring_menu_text[7]=0 # colore font
		$ring_menu_text[8]=20 # grandezza font
		$ring_menu_text[1]="Oggetti" # se non si utilizza il menu delle limit
		$ring_menu_text[2]="Tecniche"# eliminare la stringa relativa ad esso
		$ring_menu_text[3]="Equip" # e ordinare le stringhe seguendo l'ordine del
		$ring_menu_text[4]="Status" # menu di default
		$ring_menu_text[5]="Touki Aura"
		$ring_menu_text[6]="Salva"
		$ring_menu_text[7]="Esci dal gioco"
		@chara_select[0]=408 # posizione asse x
		@chara_select[1]=0 # posizione asse y
		$chara_select[0]="JSL Ancient" # tipo font
		$chara_select[1]=0 # colore font
		$chara_select[5]=24 # grandezza font
		$chara_select[2]=255 # opacita' bordo
		$chara_select[3]=130 # opacita' sfondo
		$chara_select[4]="001-Blue01" # Windowskin
	end
	#------------------------------------------------------------------------------
	# Main
	#------------------------------------------------------------------------------
	def main
		@window_gold = Window_MenuGold.new
		@window_gold.x = @window_position[0]
		@window_gold.y = @window_position[2]
		@window_gold.opacity = @window_opacity[0]
		@window_gold.back_opacity = @window_opacity[1]
		@spriteset = Spriteset_Map.new
		px = $game_player.screen_x - 15
		py = $game_player.screen_y - 24
		@command_window = Window_RingMenu.new(px,py)
		@command_window.index = @menu_index
		if $game_party.actors.size == 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
		if $game_system.save_disabled
			@command_window.disable_item(4)
		end
		@status_window = Window_RingMenuStatus.new
		@status_window.x = @chara_select[0]
		@status_window.y = @chara_select[1]
		@status_window.z = 200
		@status_window.opacity=$chara_select[2]
		@status_window.back_opacity=$chara_select[3]
		@status_window.visible = false
		Graphics.transition
		loop do
			Graphics.update
			Input.update
			update
			if $scene != self
				break
			end
		end
		Graphics.freeze
		@spriteset.dispose
		@window_gold.dispose
		@command_window.dispose
		@status_window.dispose
	end
	#------------------------------------------------------------------------------
	# Update
	#------------------------------------------------------------------------------
	def update
		@window_gold.update
		@command_window.update
		@status_window.update
		if @command_window.active
			update_command
			return
		end
		if @status_window.active
			update_status
			return
		end
	end
	#------------------------------------------------------------------------------
	# Update Comman
	#------------------------------------------------------------------------------
	def update_command
		if Input.trigger?(Input::B)
			$game_system.se_play($data_system.cancel_se)
			$scene = Scene_Map.new
			return
		end
		if Input.trigger?(Input::C)
			if $game_party.actors.size == 0 and @command_window.index < 4
				$game_system.se_play($data_system.buzzer_se)
				return
			end
			case @command_window.index
			when 0
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Item.new
			when 1
				$game_system.se_play($data_system.decision_se)
				@command_window.active = false
				@status_window.active = true
				@status_window.visible = true
				@status_window.index = 0
			when 2
				$game_system.se_play($data_system.decision_se)
				@command_window.active = false
				@status_window.active = true
				@status_window.visible = true
				@status_window.index = 0
			when 3
				$game_system.se_play($data_system.decision_se)
				@command_window.active = false
				@status_window.active = true
				@status_window.visible = true
				@status_window.index = 0
			when 4
				if $game_system.save_disabled
					$game_system.se_play($data_system.buzzer_se)
					return
				end
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_LimitMenu.new
			when 5
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Save.new
			when 6
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_End.new
			end
			return
		end
		return if @command_window.animation?
		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
		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
	#------------------------------------------------------------------------------
	# Update Status
	#------------------------------------------------------------------------------
	def update_status
		if Input.trigger?(Input::B)
			$game_system.se_play($data_system.cancel_se)
			@command_window.active = true
			@status_window.active = false
			@status_window.visible = false
			@status_window.index = -1
			return
		end
		if Input.trigger?(Input::C)
			case @command_window.index
			when 1
				if $game_party.actors[@status_window.index].restriction >= 2
					$game_system.se_play($data_system.buzzer_se)
					return
				end
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Skill.new(@status_window.index)
			when 2
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Equip.new(@status_window.index)
			when 3
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Status.new(@status_window.index)
			when 4
				$game_system.se_play($data_system.decision_se)
				$scene = $scene = Scene_LimitMenu.new(@status_window.index)
			end
			return
		end
	end
end
#------------------------------------------------------------------------------
# Window_RingMenu
#------------------------------------------------------------------------------
class Window_RingMenu < Window_Base
	STARTUP_FRAMES = 20
	MOVING_FRAMES = 5
	RING_R = 64
	ICON_ITEM = RPG::Cache.icon("034-Item03")
	ICON_SKILL = RPG::Cache.icon("044-Skill01")
	ICON_EQUIP = RPG::Cache.icon("001-Weapon01")
	ICON_STATUS = RPG::Cache.icon("050-Skill07")
	ICON_TOUKI_AURA = RPG::Cache.icon("050-Skill07") #elimarla se il menu delle
	ICON_SAVE = RPG::Cache.icon("038-Item07")#limit non viene utilizzato e ordi-
	ICON_EXIT = RPG::Cache.icon("046-Skill03")#nare le strighe come il menu di
	ICON_DISABLE= RPG::Cache.icon("") #default
	SE_STARTUP = "056-Right02"
	MODE_START = 1
	MODE_WAIT = 2
	MODE_MOVER = 3
	MODE_MOVEL = 4
	attr_accessor :index
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize( center_x, center_y )
		super(0, 0, 640, 480)
		self.contents = Bitmap.new(width-32, height-32)
		self.contents.font.name = $ring_menu_text[0]
		self.contents.font.color = text_color($ring_menu_text[7])
		self.contents.font.size = $ring_menu_text[8]
		self.opacity = 0
		self.back_opacity = 0
		s1 = $ring_menu_text[1] #aggiungere o cancellare stringhe a seconda del
		s2 = $ring_menu_text[2] # numero di finestre presenti nel menu in uso
		s3 = $ring_menu_text[3]
		s4 = $ring_menu_text[4]
		s5 = $ring_menu_text[5]
		s6 = $ring_menu_text[6]
		s7 = $ring_menu_text[7]
		@commands = [ s1, s2, s3, s4, s5, s6,s7 ]
		@item_max = 6 #cancellare icon_touki_aura se non si usa il menu limit
		@index = 0 # o sostituirla con un'altra del menu in uso
		@items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_TOUKI_AURA, ICON_SAVE, ICON_EXIT ]
		@disabled = [ false, false, false, false, false, false, false ]
		@cx = center_x - 16
		@cy = center_y - 16
		setup_move_start
		refresh
	end
	#------------------------------------------------------------------------------
	# Aggiornamento
	#------------------------------------------------------------------------------
	def update
		super
		refresh
	end
	#------------------------------------------------------------------------------
	# Refresh
	#------------------------------------------------------------------------------
	def refresh
		self.contents.clear
		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
		rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
		self.contents.draw_text(rect, @commands[@index],1)
	end
	#------------------------------------------------------------------------------
	# Refresh Start
	#------------------------------------------------------------------------------
	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 * Math.cos( d ) ).to_i
			draw_item(x, y, i)
		end
		@steps -= 1
		if @steps < 1
			@mode = MODE_WAIT
		end
	end
	#------------------------------------------------------------------------------
	# Refresh Wait
	#------------------------------------------------------------------------------
	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 * Math.cos( d * j ) ).to_i
			draw_item(x, y, i)
		end
	end
	#------------------------------------------------------------------------------
	# Refresh Move
	#------------------------------------------------------------------------------
	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 * Math.cos( d ) ).to_i
			draw_item(x, y, i)
		end
		@steps -= 1
		if @steps < 1
			@mode = MODE_WAIT
		end
	end
	#------------------------------------------------------------------------------
	# Disegna oggetti
	#------------------------------------------------------------------------------
	def draw_item(x, y, i)
		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
	#------------------------------------------------------------------------------
	# Disabilita oggetti
	#------------------------------------------------------------------------------
	def disable_item(index)
		@disabled[index] = true
	end
	#------------------------------------------------------------------------------
	# Setup Move Start
	#------------------------------------------------------------------------------
	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
	#------------------------------------------------------------------------------
	# Setup Move Move
	#------------------------------------------------------------------------------
	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
	#------------------------------------------------------------------------------
	# Animazione
	#------------------------------------------------------------------------------
	def animation?
		return @mode != MODE_WAIT
	end
end
#------------------------------------------------------------------------------
# Window_RingMenuStatus
#------------------------------------------------------------------------------
class Window_RingMenuStatus < Window_Selectable
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize
		super(204, 64, 232, 352)
		self.contents = Bitmap.new(width - 32, height - 32)
		self.contents.font.size = $chara_select[5]
		refresh
		self.active = false
		self.index = -1
	end
	#------------------------------------------------------------------------------
	# Refresh
	#------------------------------------------------------------------------------
	def refresh
		self.contents.clear
		self.windowskin = RPG::Cache.windowskin($chara_select[4])
		self.contents.font.name = $chara_select[0]
		self.contents.font.color = text_color($chara_select[1])
		@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 - 60, y + 65)
			draw_actor_name(actor, x, y + 2)
			draw_actor_hp(actor, x - 40, y + 26)
			draw_actor_sp(actor, x - 40, y + 50)
		end
	end
	#------------------------------------------------------------------------------
	# Aggiornamento Cursor Rect
	#------------------------------------------------------------------------------
	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_Title
#------------------------------------------------------------------------------
class Scene_Title
	$map_infos = load_data("Data/MapInfos.rxdata")
	for key in $map_infos.keys
		$map_infos[key] = $map_infos[key].name
	end
end
#------------------------------------------------------------------------------
# Window_MenuGold
#------------------------------------------------------------------------------
class Window_MenuGold < Window_Base
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize
		super(0, 0, $window_size[0], $window_size[1])
		self.contents = Bitmap.new(width - 32, height - 32)
		self.contents.font.name = $gold_text[0]
		self.contents.font.size = $gold_text[1]
		refresh
	end
	#------------------------------------------------------------------------------
	# Refresh
	#------------------------------------------------------------------------------
	def refresh
		self.contents.clear
		self.windowskin = RPG::Cache.windowskin($window_gold_skin)
		self.contents.font.color = text_color($gold_text[2])
		self.contents.draw_text(4, 0, 120, 32, $gold_text[4])
		self.contents.font.color = text_color($gold_text[3])
		self.contents.draw_text(4, 32, 120, 32, $game_party.gold.to_s, 2)
	end
end

 

 

 

qui c'e' quello originale:

 

#------------------------------------------------------------------------------
# Ring_Menu
#------------------------------------------------------------------------------
# By: XRXS, Dubealex, and Hypershadow180
#------------------------------------------------------------------------------
class Scene_Menu
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize(menu_index = 0)
		@menu_index = menu_index
		$location_text=[]
		$gold_text=[]
		$window_size=[]
		$ring_menu_text=[]
		$chara_select=[]
		@window_opacity=[]
		@chara_select=[]
		@window_position=[]
		$location_text[0]="Calibri" # Font Type
		$location_text[1]=24 # Font Size
		$location_text[2]=0 # Location Title Color
		$location_text[4]=0 # Map Name Color
		$location_text[3]="Location:" # Text
		$gold_text[0]="Calibri" # Font Type
		$gold_text[1]=20 # Font Size
		$gold_text[2]=0 # Gold Title Color
		$gold_text[3]=0 # Gold Color
		$gold_text[4]="Gold" # Text
		@window_opacity[0]=255 # Border Opacity
		@window_opacity[1]=130 # Background Opacity
		$window_location_skin="001-Blue01" # Location Windowskin
		$window_gold_skin="001-Blue01" # Gold Windowskin
		@window_position[0]=0 # X Axis Position
		@window_position[1]=0 # Location Y Axis Position
		@window_position[2]=384 # Gold Y Axis Position
		$window_size[0]=160 # Length
		$window_size[1]=96 # Height
		$ring_menu_text[0]="Calibri" # Font Type
		$ring_menu_text[7]=0 # Font Color
		$ring_menu_text[8]=20 # Font Size
		$ring_menu_text[1]="Items"
		$ring_menu_text[2]="Skills"
		$ring_menu_text[3]="Equip"
		$ring_menu_text[4]="Stats"
		$ring_menu_text[5]="Save"
		$ring_menu_text[6]="Quit"
		@chara_select[0]=408 # X Axis Position
		@chara_select[1]=0 # Y Axis Position
		$chara_select[0]="Calibri" # Font Type
		$chara_select[1]=0 # Font Color
		$chara_select[5]=24 # Font Size
		$chara_select[2]=255 # Border Opacity
		$chara_select[3]=130 # Background Opacity
		$chara_select[4]="001-Blue01" # Windowskin
	end
	#------------------------------------------------------------------------------
	# Main
	#------------------------------------------------------------------------------
	def main
		@window_location = Window_Location.new
		@window_location.x = @window_position[0]
		@window_location.y = @window_position[1]
		@window_location.opacity = @window_opacity[0]
		@window_location.back_opacity = @window_opacity[1]
		@window_gold = Window_MenuGold.new
		@window_gold.x = @window_position[0]
		@window_gold.y = @window_position[2]
		@window_gold.opacity = @window_opacity[0]
		@window_gold.back_opacity = @window_opacity[1]
		@spriteset = Spriteset_Map.new
		px = $game_player.screen_x - 15
		py = $game_player.screen_y - 24
		@command_window = Window_RingMenu.new(px,py)
		@command_window.index = @menu_index
		if $game_party.actors.size == 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
		if $game_system.save_disabled
			@command_window.disable_item(4)
		end
		@status_window = Window_RingMenuStatus.new
		@status_window.x = @chara_select[0]
		@status_window.y = @chara_select[1]
		@status_window.z = 200
		@status_window.opacity=$chara_select[2]
		@status_window.back_opacity=$chara_select[3]
		@status_window.visible = false
		Graphics.transition
		loop do
			Graphics.update
			Input.update
			update
			if $scene != self
				break
			end
		end
		Graphics.freeze
		@spriteset.dispose
		@window_location.dispose
		@window_gold.dispose
		@command_window.dispose
		@status_window.dispose
	end
	#------------------------------------------------------------------------------
	# Update
	#------------------------------------------------------------------------------
	def update
		@window_location.update
		@window_gold.update
		@command_window.update
		@status_window.update
		if @command_window.active
			update_command
			return
		end
		if @status_window.active
			update_status
			return
		end
	end
	#------------------------------------------------------------------------------
	# Update Comman
	#------------------------------------------------------------------------------
	def update_command
		if Input.trigger?(Input::B)
			$game_system.se_play($data_system.cancel_se)
			$scene = Scene_Map.new
			return
		end
		if Input.trigger?(Input::C)
			if $game_party.actors.size == 0 and @command_window.index < 4
				$game_system.se_play($data_system.buzzer_se)
				return
			end
			case @command_window.index
			when 0
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Item.new
			when 1
				$game_system.se_play($data_system.decision_se)
				@command_window.active = false
				@status_window.active = true
				@status_window.visible = true
				@status_window.index = 0
			when 2
				$game_system.se_play($data_system.decision_se)
				@command_window.active = false
				@status_window.active = true
				@status_window.visible = true
				@status_window.index = 0
			when 3
				$game_system.se_play($data_system.decision_se)
				@command_window.active = false
				@status_window.active = true
				@status_window.visible = true
				@status_window.index = 0
			when 4
				if $game_system.save_disabled
					$game_system.se_play($data_system.buzzer_se)
					return
				end
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Save.new
			when 5
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_End.new
			end
			return
		end
		return if @command_window.animation?
		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
		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
	#------------------------------------------------------------------------------
	# Update Status
	#------------------------------------------------------------------------------
	def update_status
		if Input.trigger?(Input::B)
			$game_system.se_play($data_system.cancel_se)
			@command_window.active = true
			@status_window.active = false
			@status_window.visible = false
			@status_window.index = -1
			return
		end
		if Input.trigger?(Input::C)
			case @command_window.index
			when 1
				if $game_party.actors[@status_window.index].restriction >= 2
					$game_system.se_play($data_system.buzzer_se)
					return
				end
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Skill.new(@status_window.index)
			when 2
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Equip.new(@status_window.index)
			when 3
				$game_system.se_play($data_system.decision_se)
				$scene = Scene_Status.new(@status_window.index)
			end
			return
		end
	end
end
#------------------------------------------------------------------------------
# Window_RingMenu
#------------------------------------------------------------------------------
class Window_RingMenu < Window_Base
	STARTUP_FRAMES = 20
	MOVING_FRAMES = 5
	RING_R = 64
	ICON_ITEM = RPG::Cache.icon("034-Item03")
	ICON_SKILL = RPG::Cache.icon("044-Skill01")
	ICON_EQUIP = RPG::Cache.icon("001-Weapon01")
	ICON_STATUS = RPG::Cache.icon("050-Skill07")
	ICON_SAVE = RPG::Cache.icon("038-Item07")
	ICON_EXIT = RPG::Cache.icon("046-Skill03")
	ICON_DISABLE= RPG::Cache.icon("")
	SE_STARTUP = "056-Right02"
	MODE_START = 1
	MODE_WAIT = 2
	MODE_MOVER = 3
	MODE_MOVEL = 4
	attr_accessor :index
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize( center_x, center_y )
		super(0, 0, 640, 480)
		self.contents = Bitmap.new(width-32, height-32)
		self.contents.font.name = $ring_menu_text[0]
		self.contents.font.color = text_color($ring_menu_text[7])
		self.contents.font.size = $ring_menu_text[8]
		self.opacity = 0
		self.back_opacity = 0
		s1 = $ring_menu_text[1]
		s2 = $ring_menu_text[2]
		s3 = $ring_menu_text[3]
		s4 = $ring_menu_text[4]
		s5 = $ring_menu_text[5]
		s6 = $ring_menu_text[6]
		@commands = [ s1, s2, s3, s4, s5, s6 ]
		@item_max = 6
		@index = 0
		@items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_SAVE, ICON_EXIT ]
		@disabled = [ false, false, false, false, false, false ]
		@cx = center_x - 16
		@cy = center_y - 16
		setup_move_start
		refresh
	end
	#------------------------------------------------------------------------------
	# Update
	#------------------------------------------------------------------------------
	def update
		super
		refresh
	end
	#------------------------------------------------------------------------------
	# Refresh
	#------------------------------------------------------------------------------
	def refresh
		self.contents.clear
		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
		rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
		self.contents.draw_text(rect, @commands[@index],1)
	end
	#------------------------------------------------------------------------------
	# Refresh Start
	#------------------------------------------------------------------------------
	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 * Math.cos( d ) ).to_i
			draw_item(x, y, i)
		end
		@steps -= 1
		if @steps < 1
			@mode = MODE_WAIT
		end
	end
	#------------------------------------------------------------------------------
	# Refresh Wait
	#------------------------------------------------------------------------------
	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 * Math.cos( d * j ) ).to_i
			draw_item(x, y, i)
		end
	end
	#------------------------------------------------------------------------------
	# Refresh Move
	#------------------------------------------------------------------------------
	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 * Math.cos( d ) ).to_i
			draw_item(x, y, i)
		end
		@steps -= 1
		if @steps < 1
			@mode = MODE_WAIT
		end
	end
	#------------------------------------------------------------------------------
	# Draw Item
	#------------------------------------------------------------------------------
	def draw_item(x, y, i)
		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
	#------------------------------------------------------------------------------
	# Disable Item
	#------------------------------------------------------------------------------
	def disable_item(index)
		@disabled[index] = true
	end
	#------------------------------------------------------------------------------
	# Setup Move Start
	#------------------------------------------------------------------------------
	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
	#------------------------------------------------------------------------------
	# Setup Move Move
	#------------------------------------------------------------------------------
	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
	#------------------------------------------------------------------------------
	# Animation
	#------------------------------------------------------------------------------
	def animation?
		return @mode != MODE_WAIT
	end
end
#------------------------------------------------------------------------------
# Window_RingMenuStatus
#------------------------------------------------------------------------------
class Window_RingMenuStatus < Window_Selectable
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize
		super(204, 64, 232, 352)
		self.contents = Bitmap.new(width - 32, height - 32)
		self.contents.font.size = $chara_select[5]
		refresh
		self.active = false
		self.index = -1
	end
	#------------------------------------------------------------------------------
	# Refresh
	#------------------------------------------------------------------------------
	def refresh
		self.contents.clear
		self.windowskin = RPG::Cache.windowskin($chara_select[4])
		self.contents.font.name = $chara_select[0]
		self.contents.font.color = text_color($chara_select[1])
		@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 - 60, y + 65)
			draw_actor_name(actor, x, y + 2)
			draw_actor_hp(actor, x - 40, y + 26)
			draw_actor_sp(actor, x - 40, y + 50)
		end
	end
	#------------------------------------------------------------------------------
	# Update Cursor Rect
	#------------------------------------------------------------------------------
	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
#------------------------------------------------------------------------------
# Game_Map
#------------------------------------------------------------------------------
class Game_Map
	#------------------------------------------------------------------------------
	# Name
	#------------------------------------------------------------------------------
	def name
		$map_infos[@map_id]
	end
end
#------------------------------------------------------------------------------
# Scene_Title
#------------------------------------------------------------------------------
class Scene_Title
	$map_infos = load_data("Data/MapInfos.rxdata")
	for key in $map_infos.keys
		$map_infos[key] = $map_infos[key].name
	end
end
#------------------------------------------------------------------------------
# Window_Location
#------------------------------------------------------------------------------
class Window_Location < Window_Base
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize
		super(0, 0, $window_size[0], $window_size[1])
		self.contents = Bitmap.new(width - 32, height - 32)
		self.contents.font.name = $location_text[0]
		self.contents.font.size = $location_text[1]
		refresh
	end
	#------------------------------------------------------------------------------
	# Refresh
	#------------------------------------------------------------------------------
	def refresh
		self.contents.clear
		self.windowskin = RPG::Cache.windowskin($window_location_skin)
		self.contents.font.color = text_color($location_text[2])
		self.contents.draw_text(4, 0, 120, 32, $location_text[3])
		self.contents.font.color = text_color($location_text[4])
		self.contents.draw_text(4, 32, 120, 32, $game_map.name, 2)
	end
end
#------------------------------------------------------------------------------
# Window_MenuGold
#------------------------------------------------------------------------------
class Window_MenuGold < Window_Base
	#------------------------------------------------------------------------------
	# Initialize
	#------------------------------------------------------------------------------
	def initialize
		super(0, 0, $window_size[0], $window_size[1])
		self.contents = Bitmap.new(width - 32, height - 32)
		self.contents.font.name = $gold_text[0]
		self.contents.font.size = $gold_text[1]
		refresh
	end
	#------------------------------------------------------------------------------
	# Refresh
	#------------------------------------------------------------------------------
	def refresh
		self.contents.clear
		self.windowskin = RPG::Cache.windowskin($window_gold_skin)
		self.contents.font.color = text_color($gold_text[2])
		self.contents.draw_text(4, 0, 120, 32, $gold_text[4])
		self.contents.font.color = text_color($gold_text[3])
		self.contents.draw_text(4, 32, 120, 32, $game_party.gold.to_s, 2)
	end
end

 

 

 

Partecipante al Rpg2s.net Game Contest 2007/2008

http://www.rpg2s.net/contest/GameContest0708/userbar_r2sgc.gif

Gioco in Sviluppo: Hokuto no Ken RPG

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...