class CharacterSelectionMenuView attr_accessor :name_sprite attr_accessor :viewport attr_accessor :sprites attr_accessor :textValues OPTIONS_START_Y = 66 CURSOR_Y_MARGIN = 50 CURSOR_X_MARGIN = 76 CHECKMARK_Y_MARGIN = 20 CHECKMARK_WIDTH = 50 OPTIONS_LABEL_X = 50 OPTIONS_LABEL_WIDTH = 100 OPTIONS_VALUE_X = 194 SELECTOR_X = 120 SELECTOR_STAGGER_OFFSET = 26 ARROW_LEFT_X_POSITION = 75 ARROW_RIGHT_X_POSITION = 275 ARROWS_Y_OFFSET = 10 # 20 CONFIRM_X = 296 CONFIRM_Y = 322 STAGGER_OFFSET_1 = 26 STAGGER_OFFSET_2 = 50 def initialize @presenter = CharacterSelectMenuPresenter.new(self) @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height) @sprites = {} @textValues = {} @max_index = 5 end def init_graphics() @sprites["bg"] = IconSprite.new(@viewport) @sprites["bg"].setBitmap("Graphics/Pictures/trainer_application_form") @sprites["select"] = IconSprite.new(@viewport) @sprites["select"].setBitmap("Graphics/Pictures/cc_selection_box") @sprites["select"].x = get_cursor_x_position(0) # OPTIONS_LABEL_X + OPTIONS_LABEL_WIDTH + CURSOR_X_MARGIN @sprites["select"].y = OPTIONS_START_Y @sprites["select"].visible = true @sprites["leftarrow"] = AnimatedSprite.new("Graphics/Pictures/leftarrow", 8, 40, 28, 2, @viewport) @sprites["leftarrow"].x = ARROW_LEFT_X_POSITION @sprites["leftarrow"].y = 0 @sprites["leftarrow"].visible = false @sprites["leftarrow"].play @sprites["rightarrow"] = AnimatedSprite.new("Graphics/Pictures/rightarrow", 8, 40, 28, 2, @viewport) @sprites["rightarrow"].x = ARROW_RIGHT_X_POSITION @sprites["rightarrow"].y = 0 @sprites["rightarrow"].visible = false @sprites["rightarrow"].play end def setMaxIndex(maxIndex) @max_index = maxIndex end def init_labels() @textValues["confirm"].dispose if @textValues["confirm"] yposition = CONFIRM_Y xposition = CONFIRM_X+CURSOR_X_MARGIN baseColor= baseColor ? baseColor : Color.new(72,72,72) shadowColor= shadowColor ? shadowColor : Color.new(160,160,160) @textValues["confirm"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport) textPosition=[ [_INTL("Confirm"),xposition,yposition,2,baseColor,shadowColor], ] pbSetSystemFont(@textValues["confirm"].bitmap) pbDrawTextPositions(@textValues["confirm"].bitmap,textPosition) #Kernel.pbDisplayText("Confirm", (CONFIRM_X+CURSOR_X_MARGIN), CONFIRM_Y) end def start init_graphics() init_labels() @presenter.setInitialValues() @presenter.main() end def start_rival init_graphics() @sprites["bg"].setBitmap("Graphics/Pictures/trainer_application_form_rival") init_labels() @presenter.main_rival() end def get_cursor_y_position(index) return CONFIRM_Y if index == @max_index return index * CURSOR_Y_MARGIN + OPTIONS_START_Y end def get_cursor_x_position(index) return CONFIRM_X if index == @max_index return SELECTOR_X + getTextBoxStaggerOffset(index) end def get_value_x_position(index) return (OPTIONS_VALUE_X + getTextBoxStaggerOffset(index)) end def getTextBoxStaggerOffset(index) case index when 1 return STAGGER_OFFSET_1 when 2 return STAGGER_OFFSET_2 when 3 return STAGGER_OFFSET_1 end return 0 end def showSideArrows(y_index) y_position = get_cursor_y_position(y_index) @sprites["rightarrow"].y = y_position + ARROWS_Y_OFFSET @sprites["leftarrow"].y = y_position + ARROWS_Y_OFFSET @sprites["leftarrow"].x = getTextBoxStaggerOffset(y_index) + ARROW_LEFT_X_POSITION @sprites["rightarrow"].x = getTextBoxStaggerOffset(y_index) + ARROW_RIGHT_X_POSITION @sprites["rightarrow"].visible = true @sprites["leftarrow"].visible = true end def hideSideArrows() @sprites["rightarrow"].visible = false @sprites["leftarrow"].visible = false end def displayAge(age, y_index) y_position = get_cursor_y_position(y_index) x_position = get_value_x_position(y_index) Kernel.pbClearNumber() Kernel.pbDisplayNumber(age, x_position, y_position) end def displayText(spriteId, text, y_index) @textValues[spriteId].dispose if @textValues[spriteId] yposition = get_cursor_y_position(y_index) xposition = get_value_x_position(y_index) baseColor = baseColor ? baseColor : Color.new(72, 72, 72) shadowColor = shadowColor ? shadowColor : Color.new(160, 160, 160) @textValues[spriteId] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport) text1 = _INTL(text) textPosition = [ [text1, xposition, yposition, 2, baseColor, shadowColor], ] pbSetSystemFont(@textValues[spriteId].bitmap) pbDrawTextPositions(@textValues[spriteId].bitmap, textPosition) end def updateGraphics() Graphics.update Input.update if @sprites @sprites["rightarrow"].update @sprites["leftarrow"].update end end end