[REQUEST][XP]Disc Custom Menu System

Started by GAX, November 21, 2009, 04:18:04 pm

Previous topic - Next topic

GAX

Alrighty...time for a request, this one being for a project that I'm nearly done with.  Here's the way the menu is supposed to look:


When selecting a character using Equip, Skill, or just the Character/Status selection, then it should display a battle animation on the character.  When cycling through characters,, they will rotate positions.  The info bar at the top will display a description of the menu selection in the bottom area, and the character's name while selecting a character.

Also, the black space in the background would be a wallpaper.  I've supplied a PSD file including the resources that should be needed to make this system work.
Disc Menu Resource and Example File

Thanks in advance for whoever can handle this, the only system I'm currently using to modify my menu system is that the menu has its own music.

Rule 2: ShowHide
Quote from: Rule No.2Keep your signatures at reasonable size. The pictures in your signature may altogether be no more than 200kB and take up an area of 1600px2. That means 2 pictures of 400x200 are fine, one picture of 800x200 is fine and so on. Also your pictures height must not exceed 200 pixels, width can be as big as you want as long as your pictures match the other criteria. Every signature not matching this criteria is a subject of the moderator team to remove and leave this rule as message in your signature.

Jackolas


RoseSkye


GAX

November 21, 2009, 06:47:49 pm #3 Last Edit: November 21, 2009, 06:52:28 pm by GuardianAngelX72
No spam posts please...

Anyways, if anyone could pick this up soon and contact me, that'd be great =3

EDIT:  The Game Data selection should bring up a menu simmilar to the Exit Game menu, but with the options Save Game, Load Game, and Return.  In the bottom left corner it should display the time played and the total gold collected by the player.  Forgot that =/

Rule 2: ShowHide
Quote from: Rule No.2Keep your signatures at reasonable size. The pictures in your signature may altogether be no more than 200kB and take up an area of 1600px2. That means 2 pictures of 400x200 are fine, one picture of 800x200 is fine and so on. Also your pictures height must not exceed 200 pixels, width can be as big as you want as long as your pictures match the other criteria. Every signature not matching this criteria is a subject of the moderator team to remove and leave this rule as message in your signature.

fugibo

Hey, that was definitely on-topic. I don't know what you're on, but you need to get off it RIGHT NOW.

[Faint]

too advanced for me but couldn't this be done with a script kind of like the ring menu? Except use the ring menu for the actors and make the disc/platform stationary. Just a suggestion.
Scripts by me - State Requirement Skills
current project - Project: AURA

GAX

The platform is stationary, only the characters rotate along it.  Instead of a selection highlight or arrow, the front character would have an animation applied to them.

Rule 2: ShowHide
Quote from: Rule No.2Keep your signatures at reasonable size. The pictures in your signature may altogether be no more than 200kB and take up an area of 1600px2. That means 2 pictures of 400x200 are fine, one picture of 800x200 is fine and so on. Also your pictures height must not exceed 200 pixels, width can be as big as you want as long as your pictures match the other criteria. Every signature not matching this criteria is a subject of the moderator team to remove and leave this rule as message in your signature.

G_G

gax I'll try to make this once your title screen is done, I've been pretty busy lately havent been able to do much.
How soon do you need your title screen?

And the menu I'll try to do when the title is done.

GAX

Title would be nice within the next week or so, don't worry too much about it.

Thanks G_g, really pulling my eggs out of the fryer on this one.

Rule 2: ShowHide
Quote from: Rule No.2Keep your signatures at reasonable size. The pictures in your signature may altogether be no more than 200kB and take up an area of 1600px2. That means 2 pictures of 400x200 are fine, one picture of 800x200 is fine and so on. Also your pictures height must not exceed 200 pixels, width can be as big as you want as long as your pictures match the other criteria. Every signature not matching this criteria is a subject of the moderator team to remove and leave this rule as message in your signature.

Blizzard

Basically my battle ring menu as character selection window. ;)

I hope I can find some time in the next few days to make the ring menu tutorial I've been promising LB to make. #_#
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Fantasist

Here's my version of the ring command tweaked for GAX's needs. It's made in such a way that you can simply replace a command window with a ring command, without even changing the window position. You just need to take care of the radius of the ring (which is about half the command window's width). Instead of giving an array of strings for commands, give an array of bitmaps. In this case, it would be an array of bitmaps of the actors.

Ring Command: ShowHide

#============================================================================
# ** Ring Command
#----------------------------------------------------------------------------
# by Fantasist
# Version GAX1
# 22-Nov-2009
#----------------------------------------------------------------------------
# Version History:
#
#   1.0 - First functional version
#   GAX1 - Alteration made for GuardianAngelX72's menu system
#----------------------------------------------------------------------------
# Description:
#
#     A rotating ring with pictures, can be used as a command window.
#----------------------------------------------------------------------------
# Compatibility:
#
#     Should not cause any problems. Not tested with the SDK.
#----------------------------------------------------------------------------
# Instructions:
#
#     Place this script anywhere below 'Scene_Debug' and above 'Main'.
#
# Usage:
#
#   Make the ring like this:
#
#        Ring_Command.new(x, y, radius, commands)
#
#     where
#       x, y: Position if the ring (top-left corner, not the center).
#       radius: Radius of the ring.
#       commands: An array of bitmaps.
#----------------------------------------------------------------------------
# Configuration:
#
# class Icon_Ring:
#
#             Icon_BG: Background to be used behind all ring icons (optional)
#        Icon_Disable: Icon overlay for 'disabled' options (optional, but
#                      there's no other way to show a disabled icon.
#   Select_Indication: nil - No indication
#                        0 - Blink
#                 <number> - ID of animation
#
# class Ring_Command:
#
#     Frames: Movement Speed. Larger number means slower movement.
#      Depth: Depth of the ring, meaning the 'tilt' factor.
#----------------------------------------------------------------------------
# Issues:
#
#     None so far.
#----------------------------------------------------------------------------
# Credits and Thanks:
#
#   Credits: Fantasist for making this.
#   Thanks: Chaos Project (Game) for inspiration
#----------------------------------------------------------------------------
# Notes:
#
#   If you have any comments or problems, you can find me at:
#
#    - forum.chaos-project.com
#
#   Enjoy ^_^
#============================================================================

#=============================================================================
# ** Icon_Ring
#=============================================================================

class Icon_Ring < RPG::Sprite
 
  Icon_BG = ''          # Background to be used behind all ring icons (optional)
  Icon_Disable = ''     # Icon overlay for 'disabled' options (optional, but
                        # there's noother way to show a disabled icon.
  Select_Indication = 1 # nil: No indication
                        # 0: Blink
                        # Any number > 0: ID of animation
 
 
  def initialize(item, disabled=false)
    super()
    @item = item
    self.bitmap = make_bmp(item, disabled)
    self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2
  end
 
  def make_bmp(item, disabled=false)
    bg = RPG::Cache.icon(Icon_BG).clone rescue Bitmap.new(32, 32)
    result = nil
    # Draw item
    if item.is_a?(Numeric)
      bg.draw_text(0, 0, bg.width, bg.height, item.to_s, 1)
      result = bg
    elsif item.is_a?(String)
      bg.draw_text(0, 0, bg.width, bg.height, item, 1)
      result = bg
    elsif item.is_a?(Bitmap)
      b = Bitmap.new(item.width, item.height)
      b.blt(b.width/2 - bg.width/2, b.height/2 - bg.height/2, bg, bg.rect)
      b.blt(b.width/2 - item.width/2, b.height/2 - item.height/2, item, item.rect)
      result = b
    end
    # Disable
    disable(result) if disabled
    return result
  end
 
  def disable(bmp=self.bitmap)
    return if bmp.nil? || bmp.disposed?
    x = RPG::Cache.icon(Icon_Disable) rescue Bitmap.new(32, 32)
    bmp.blt(bmp.width/2 - x.rect.width/2, bmp.height/2 - x.rect.height/2, x, x.rect)
  end
 
  def enable
    self.bitmap = make_bmp(@item)
  end
 
  def select
    return if Select_Indication == nil
    if Select_Indication <= 0
      self.blink_on
    else
      animation = $data_animations[Select_Indication]
      self.loop_animation(animation) rescue self.blink_on
    end
  end
 
  def deselect
    self.blink_off
    self.loop_animation(nil)
  end
 
end

#=============================================================================
# ** Ring_Command
#=============================================================================

class Ring_Command < Sprite
 
  Frames = 6 # Movement Speed. Larger number means slower movement
  Depth = 6 # Depth of the ring, meaning the 'tilt' factor.
 
  attr_reader :index
  attr_reader :radius
  attr_reader :commands
  attr_accessor :active
 
  # Dummy values for window compatibility
  attr_accessor :windowskin, :contents, :stretch, :cursor_rect, :pause,
                :back_opacity, :contents_opacity
 
  def initialize(x=320, y=240, r=200, commands=15, win_w=0, win_h=0)
    super()
    set_icons(commands)
    @unit_angle = 360.0/@commands.size
    @win_offset = [win_w/2, win_h]
    self.radius, self.x, self.y = r, x, y
    self.index = 0
    self.active = false
    @moving = 0
  end
 
  def set_icons(commands)
    # Dispose previous icons
    if @commands != nil
      @commands.each {|sprite|
      sprite.bitmap.dispose
      sprite.dispose}
    end
    # Make icons
    @commands = []
    if commands.is_a?(Array)
      commands.each {|item| @commands.push(Icon_Ring.new(item))}
    elsif commands.is_a?(Integer)
      (1..commands).each {|i| @commands.push(Icon_Ring.new(i))}
    end
  end
 
  def set_items(ang=self.angle)
    @commands.each_index {|i|
    @commands[i].deselect
    @commands[i].x = self.x + self.radius * sin(ang + @unit_angle * i)
    @commands[i].y = self.y + self.radius/Depth * cos(ang + @unit_angle * i)
    @commands[i].z = self.z + @commands[i].y
    unless Depth == 1
      multiplier = (@commands[i].y - (self.y-self.radius/Depth)).to_f / (2*self.radius/Depth)
      zoom = 0.8 + 0.2 * multiplier
      @commands[i].zoom_x = @commands[i].zoom_y = zoom
    end
    }
  end
 
  def move(dir=0)
    @moving = (dir == 0 ? Frames : -Frames)
  end
 
  def update
    if self.active
      @commands[@index].update
      @commands[@index].select
      if @moving != 0
        ang = (@unit_angle / Frames)
        self.angle += (@moving > 0 ? ang : -ang)
        self.angle -= 360 if self.angle > 360.0
        self.angle += 360 if self.angle < -360.0
        set_items
        @moving += (@moving < 0 ? 1 : -1)
      else
        if Input.repeat?(Input::RIGHT)
          $game_system.se_play($data_system.cursor_se)
          move(1)
          @index = (@index + 1) % @commands.size
        elsif Input.repeat?(Input::LEFT)
          $game_system.se_play($data_system.cursor_se)
          move(0)
          @index = (@index + @commands.size - 1) % @commands.size
        end
      end
    end
  end
 
  def disable_item(index)
    @commands[index].disable
  end
 
  def sin(val)
    Math.sin(Math::PI*val/180)
  end
 
  def cos(val)
    Math.cos(Math::PI*val/180)
  end
 
  def dispose
    super
    @commands.each {|sp|
    sp.bitmap.dispose
    sp.dispose}
  end
 
  def visible=(val)
    super(val)
    @commands.each {|sp| sp.visible = val}
  end
 
  def active=(val)
    @active = val
    @commands.each {|c| c.deselect} unless val
  end
 
  def index=(i)
    @index = i
    self.angle = i * @unit_angle
    set_items
  end
 
  def radius=(r)
    @radius = r
    set_items
  end
 
  def commands=(commands)
    #dispose previous icons
    if @commands != nil
      @commands.each {|sp|
      sp.bitmap.dispose
      sp.dispose}
    end
    @commands = commands
    @unit_angle = 360.0/@commands.size
    self.angle = 0
    self.index = 0
  end
 
  def x=(x)
    super(x+@win_offset[0])
    set_items
  end
 
  def y=(y)
    super(y+@win_offset[1])
    set_items
  end
 
end


It's not really optimized, I quickly polished an older version I have on the HDD, but it should do for this purpose.
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)


The best of freeware reviews: Gizmo's Freeware Reviews




G_G


[Faint]

either everyone had the same idea, or I actually gave a good suggestion lol :^_^':
Scripts by me - State Requirement Skills
current project - Project: AURA

GAX

lol, bit of a combination [Faint].

Hopefully this gets done soon...but seeing how I'm still waiting on the title from G_G, I might aswell not hold my breath...*Goes back to mapping for Chaotic Fury*

Rule 2: ShowHide
Quote from: Rule No.2Keep your signatures at reasonable size. The pictures in your signature may altogether be no more than 200kB and take up an area of 1600px2. That means 2 pictures of 400x200 are fine, one picture of 800x200 is fine and so on. Also your pictures height must not exceed 200 pixels, width can be as big as you want as long as your pictures match the other criteria. Every signature not matching this criteria is a subject of the moderator team to remove and leave this rule as message in your signature.

G_G

Hey I'll have to give you the menu this saturday. I had to go to my Grandma's on Monday therefore could not give it to you. But don't worry you'll get it :)