Added more characters to naming screen

This commit is contained in:
Maruno17
2021-05-21 20:05:32 +01:00
parent 38081305b0
commit ca8193aab4

View File

@@ -262,15 +262,17 @@ end
#=============================================================================== #===============================================================================
class PokemonEntryScene2 class PokemonEntryScene2
@@Characters = [ @@Characters = [
[("ABCDEFGHIJ ,."+"KLMNOPQRST '-"+"UVWXYZ ♂♀"+" "+"0123456789 ").scan(/./),_INTL("UPPER")], [("ABCDEFGHIJ ,." + "KLMNOPQRST '-" + "UVWXYZ ♂♀" + " " + "0123456789 ").scan(/./), _INTL("UPPER")],
[("abcdefghij ,."+"klmnopqrst '-"+"uvwxyz ♂♀"+" "+"0123456789 ").scan(/./),_INTL("lower")], [("abcdefghij ,." + "klmnopqrst '-" + "uvwxyz ♂♀" + " " + "0123456789 ").scan(/./), _INTL("lower")],
[(",.:;!? ♂♀ "+"\"'()<>[] "+"~@#%*&$ "+"+-=^_/\\| "+" ").scan(/./),_INTL("other")], [("ÀÁÂÄÃàáâäã Ææ" + "ÈÉÊË èéêë Çç" + "ÌÍÎÏ ìíîï Ññ" + "ÒÓÔÖÕòóôöõ Ýý" + "ÙÚÛÜ ùúûü ").scan(/./), _INTL("accents")],
[(",.'\":;!?¡¿ ♂♀" + "~@#*&$µ¶§ " + "()[]{}<>«» " + "+-×÷=±%¹²³¼½¾" + "^_/\\| ").scan(/./), _INTL("other")]
] ]
ROWS = 13 ROWS = 13
COLUMNS = 5 COLUMNS = 5
MODE1 = -5 MODE1 = -6
MODE2 = -4 MODE2 = -5
MODE3 = -3 MODE3 = -4
MODE4 = -3
BACK = -2 BACK = -2
OK = -1 OK = -1
@@ -290,36 +292,43 @@ class PokemonEntryScene2
end end
def updateCursorPos def updateCursorPos
value=@cursorPos value = @cursorPos
if value==PokemonEntryScene2::MODE1 # Upper case case value
@sprite.x=48 when PokemonEntryScene2::MODE1 # Upper case
@sprite.y=120 @sprite.x = 44
@cursortype=1 @sprite.y = 120
elsif value==PokemonEntryScene2::MODE2 # Lower case @cursortype = 1
@sprite.x=112 when PokemonEntryScene2::MODE2 # Lower case
@sprite.y=120 @sprite.x = 106
@cursortype=1 @sprite.y = 120
elsif value==PokemonEntryScene2::MODE3 # Other symbols @cursortype = 1
@sprite.x=176 when PokemonEntryScene2::MODE3 # Accents
@sprite.y=120 @sprite.x = 168
@cursortype=1 @sprite.y = 120
elsif value==PokemonEntryScene2::BACK # Back @cursortype = 1
@sprite.x=312 when PokemonEntryScene2::MODE4 # Other symbols
@sprite.y=120 @sprite.x = 230
@cursortype=2 @sprite.y = 120
elsif value==PokemonEntryScene2::OK # OK @cursortype = 1
@sprite.x=392 when PokemonEntryScene2::BACK # Back
@sprite.y=120 @sprite.x = 314
@cursortype=2 @sprite.y = 120
elsif value>=0 @cursortype = 2
@sprite.x=52+32*(value%PokemonEntryScene2::ROWS) when PokemonEntryScene2::OK # OK
@sprite.y=180+38*(value/PokemonEntryScene2::ROWS) @sprite.x = 394
@cursortype=0 @sprite.y = 120
@cursortype = 2
else
if value >= 0
@sprite.x = 52 + 32 * (value % PokemonEntryScene2::ROWS)
@sprite.y = 180 + 38 * (value / PokemonEntryScene2::ROWS)
@cursortype = 0
end
end end
end end
def visible=(value) def visible=(value)
@sprite.visible=value @sprite.visible = value
end end
def visible def visible
@@ -327,7 +336,7 @@ class PokemonEntryScene2
end end
def color=(value) def color=(value)
@sprite.color=value @sprite.color = value
end end
def color def color
@@ -344,9 +353,9 @@ class PokemonEntryScene2
@cursor3.update @cursor3.update
updateCursorPos updateCursorPos
case @cursortype case @cursortype
when 0 then @sprite.bitmap=@cursor1.bitmap when 0 then @sprite.bitmap = @cursor1.bitmap
when 1 then @sprite.bitmap=@cursor2.bitmap when 1 then @sprite.bitmap = @cursor2.bitmap
when 2 then @sprite.bitmap=@cursor3.bitmap when 2 then @sprite.bitmap = @cursor3.bitmap
end end
end end
@@ -365,178 +374,176 @@ class PokemonEntryScene2
def pbStartScene(helptext,minlength,maxlength,initialText,subject=0,pokemon=nil) def pbStartScene(helptext,minlength,maxlength,initialText,subject=0,pokemon=nil)
@sprites={} @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height) @viewport.z = 99999
@viewport.z=99999 @helptext = helptext
@helptext=helptext @helper = CharacterEntryHelper.new(initialText)
@helper=CharacterEntryHelper.new(initialText) # Create bitmaps
@bitmaps=[ @bitmaps = []
AnimatedBitmap.new("Graphics/Pictures/Naming/overlay_tab_1"), for i in 0...@@Characters.length
AnimatedBitmap.new("Graphics/Pictures/Naming/overlay_tab_2"), @bitmaps[i] = AnimatedBitmap.new(sprintf("Graphics/Pictures/Naming/overlay_tab_#{i + 1}"))
AnimatedBitmap.new("Graphics/Pictures/Naming/overlay_tab_3") b = @bitmaps[i].bitmap.clone
] pbSetSystemFont(b)
@bitmaps[3]=@bitmaps[0].bitmap.clone textPos = []
@bitmaps[4]=@bitmaps[1].bitmap.clone
@bitmaps[5]=@bitmaps[2].bitmap.clone
for i in 0...3
pos=0
pbSetSystemFont(@bitmaps[i+3])
textPos=[]
for y in 0...COLUMNS for y in 0...COLUMNS
for x in 0...ROWS for x in 0...ROWS
textPos.push([@@Characters[i][0][pos],44+x*32,12+y*38,2, pos = y * ROWS + x
Color.new(16,24,32), Color.new(160,160,160)]) textPos.push([@@Characters[i][0][pos], 44 + x * 32, 12 + y * 38, 2,
pos+=1 Color.new(16, 24, 32), Color.new(160, 160, 160)])
end end
end end
pbDrawTextPositions(@bitmaps[i+3],textPos) pbDrawTextPositions(b, textPos)
@bitmaps[@@Characters.length + i] = b
end end
@bitmaps[6]=BitmapWrapper.new(24,6) underline_bitmap = BitmapWrapper.new(24, 6)
@bitmaps[6].fill_rect(2,2,22,4,Color.new(168,184,184)) underline_bitmap.fill_rect(2, 2, 22, 4, Color.new(168, 184, 184))
@bitmaps[6].fill_rect(0,0,22,4,Color.new(16,24,32)) underline_bitmap.fill_rect(0, 0, 22, 4, Color.new(16, 24, 32))
@sprites["bg"]=IconSprite.new(0,0,@viewport) @bitmaps.push(underline_bitmap)
# Create sprites
@sprites = {}
@sprites["bg"] = IconSprite.new(0, 0, @viewport)
@sprites["bg"].setBitmap("Graphics/Pictures/Naming/bg") @sprites["bg"].setBitmap("Graphics/Pictures/Naming/bg")
case subject case subject
when 1 # Player when 1 # Player
meta=GameData::Metadata.get_player($Trainer.character_ID) meta = GameData::Metadata.get_player($Trainer.character_ID)
if meta if meta
@sprites["shadow"]=IconSprite.new(0,0,@viewport) @sprites["shadow"] = IconSprite.new(0, 0, @viewport)
@sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow") @sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow")
@sprites["shadow"].x=33*2 @sprites["shadow"].x = 66
@sprites["shadow"].y=32*2 @sprites["shadow"].y = 64
filename=pbGetPlayerCharset(meta,1,nil,true) filename = pbGetPlayerCharset(meta, 1, nil, true)
@sprites["subject"]=TrainerWalkingCharSprite.new(filename,@viewport) @sprites["subject"] = TrainerWalkingCharSprite.new(filename, @viewport)
charwidth=@sprites["subject"].bitmap.width charwidth = @sprites["subject"].bitmap.width
charheight=@sprites["subject"].bitmap.height charheight = @sprites["subject"].bitmap.height
@sprites["subject"].x = 44*2 - charwidth/8 @sprites["subject"].x = 88 - charwidth / 8
@sprites["subject"].y = 38*2 - charheight/4 @sprites["subject"].y = 76 - charheight / 4
end end
when 2 # Pokémon when 2 # Pokémon
if pokemon if pokemon
@sprites["shadow"]=IconSprite.new(0,0,@viewport) @sprites["shadow"] = IconSprite.new(0, 0, @viewport)
@sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow") @sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow")
@sprites["shadow"].x=33*2 @sprites["shadow"].x = 66
@sprites["shadow"].y=32*2 @sprites["shadow"].y = 64
@sprites["subject"]=PokemonIconSprite.new(pokemon,@viewport) @sprites["subject"] = PokemonIconSprite.new(pokemon, @viewport)
@sprites["subject"].setOffset(PictureOrigin::Center) @sprites["subject"].setOffset(PictureOrigin::Center)
@sprites["subject"].x=88 @sprites["subject"].x = 88
@sprites["subject"].y=54 @sprites["subject"].y = 54
@sprites["gender"]=BitmapSprite.new(32,32,@viewport) @sprites["gender"] = BitmapSprite.new(32, 32, @viewport)
@sprites["gender"].x=430 @sprites["gender"].x = 430
@sprites["gender"].y=54 @sprites["gender"].y = 54
@sprites["gender"].bitmap.clear @sprites["gender"].bitmap.clear
pbSetSystemFont(@sprites["gender"].bitmap) pbSetSystemFont(@sprites["gender"].bitmap)
textpos=[] textpos = []
if pokemon.male? if pokemon.male?
textpos.push([_INTL(""),0,-6,false,Color.new(0,128,248),Color.new(168,184,184)]) textpos.push([_INTL(""), 0, -6, false, Color.new(0, 128, 248), Color.new(168, 184, 184)])
elsif pokemon.female? elsif pokemon.female?
textpos.push([_INTL(""),0,-6,false,Color.new(248,24,24),Color.new(168,184,184)]) textpos.push([_INTL(""), 0, -6, false, Color.new(248, 24, 24), Color.new(168, 184, 184)])
end end
pbDrawTextPositions(@sprites["gender"].bitmap,textpos) pbDrawTextPositions(@sprites["gender"].bitmap, textpos)
end end
when 3 # NPC when 3 # NPC
@sprites["shadow"]=IconSprite.new(0,0,@viewport) @sprites["shadow"] = IconSprite.new(0, 0, @viewport)
@sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow") @sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow")
@sprites["shadow"].x=33*2 @sprites["shadow"].x = 66
@sprites["shadow"].y=32*2 @sprites["shadow"].y = 64
@sprites["subject"]=TrainerWalkingCharSprite.new(pokemon.to_s,@viewport) @sprites["subject"] = TrainerWalkingCharSprite.new(pokemon.to_s, @viewport)
charwidth=@sprites["subject"].bitmap.width charwidth = @sprites["subject"].bitmap.width
charheight=@sprites["subject"].bitmap.height charheight = @sprites["subject"].bitmap.height
@sprites["subject"].x = 44*2 - charwidth/8 @sprites["subject"].x = 88 - charwidth / 8
@sprites["subject"].y = 38*2 - charheight/4 @sprites["subject"].y = 76 - charheight / 4
when 4 # Storage box when 4 # Storage box
@sprites["subject"]=TrainerWalkingCharSprite.new(nil,@viewport) @sprites["subject"] = TrainerWalkingCharSprite.new(nil, @viewport)
@sprites["subject"].altcharset="Graphics/Pictures/Naming/icon_storage" @sprites["subject"].altcharset = "Graphics/Pictures/Naming/icon_storage"
@sprites["subject"].animspeed=4 @sprites["subject"].animspeed = 4
charwidth=@sprites["subject"].bitmap.width charwidth = @sprites["subject"].bitmap.width
charheight=@sprites["subject"].bitmap.height charheight = @sprites["subject"].bitmap.height
@sprites["subject"].x = 44*2 - charwidth/8 @sprites["subject"].x = 88 - charwidth / 8
@sprites["subject"].y = 26*2 - charheight/2 @sprites["subject"].y = 52 - charheight / 2
end end
@sprites["bgoverlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport) @sprites["bgoverlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
pbDoUpdateOverlay pbDoUpdateOverlay
@blanks=[] @blanks = []
@mode=0 @mode = 0
@minlength=minlength @minlength = minlength
@maxlength=maxlength @maxlength = maxlength
@maxlength.times { |i| @maxlength.times { |i|
@sprites["blank#{i}"]=SpriteWrapper.new(@viewport) @sprites["blank#{i}"] = SpriteWrapper.new(@viewport)
@sprites["blank#{i}"].bitmap=@bitmaps[6] @sprites["blank#{i}"].x = 160 + 24 * i
@sprites["blank#{i}"].x=160+24*i @sprites["blank#{i}"].bitmap = @bitmaps[@bitmaps.length - 1]
@blanks[i]=0 @blanks[i] = 0
} }
@sprites["bottomtab"]=SpriteWrapper.new(@viewport) # Current tab @sprites["bottomtab"] = SpriteWrapper.new(@viewport) # Current tab
@sprites["bottomtab"].x=22 @sprites["bottomtab"].x = 22
@sprites["bottomtab"].y=162 @sprites["bottomtab"].y = 162
@sprites["bottomtab"].bitmap=@bitmaps[0+3] @sprites["bottomtab"].bitmap = @bitmaps[@@Characters.length]
@sprites["toptab"]=SpriteWrapper.new(@viewport) # Next tab @sprites["toptab"]=SpriteWrapper.new(@viewport) # Next tab
@sprites["toptab"].x=22-504 @sprites["toptab"].x = 22 - 504
@sprites["toptab"].y=162 @sprites["toptab"].y = 162
@sprites["toptab"].bitmap=@bitmaps[1+3] @sprites["toptab"].bitmap = @bitmaps[@@Characters.length + 1]
@sprites["controls"]=IconSprite.new(0,0,@viewport) @sprites["controls"] = IconSprite.new(0, 0, @viewport)
@sprites["controls"].x = 16
@sprites["controls"].y = 96
@sprites["controls"].setBitmap(_INTL("Graphics/Pictures/Naming/overlay_controls")) @sprites["controls"].setBitmap(_INTL("Graphics/Pictures/Naming/overlay_controls"))
@sprites["controls"].x=16 @init = true
@sprites["controls"].y=96 @sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
@init=true
@sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
pbDoUpdateOverlay2 pbDoUpdateOverlay2
@sprites["cursor"]=NameEntryCursor.new(@viewport) @sprites["cursor"] = NameEntryCursor.new(@viewport)
@cursorpos=0 @cursorpos = 0
@refreshOverlay=true @refreshOverlay = true
@sprites["cursor"].setCursorPos(@cursorpos) @sprites["cursor"].setCursorPos(@cursorpos)
pbFadeInAndShow(@sprites) { pbUpdate } pbFadeInAndShow(@sprites) { pbUpdate }
end end
def pbUpdateOverlay def pbUpdateOverlay
@refreshOverlay=true @refreshOverlay = true
end end
def pbDoUpdateOverlay2 def pbDoUpdateOverlay2
overlay=@sprites["overlay"].bitmap overlay = @sprites["overlay"].bitmap
overlay.clear overlay.clear
modeIcon=[[_INTL("Graphics/Pictures/Naming/icon_mode"),48+@mode*64,120,@mode*60,0,60,44]] modeIcon = [[_INTL("Graphics/Pictures/Naming/icon_mode"), 44 + @mode * 62, 120, @mode * 60, 0, 60, 44]]
pbDrawImagePositions(overlay,modeIcon) pbDrawImagePositions(overlay, modeIcon)
end end
def pbDoUpdateOverlay def pbDoUpdateOverlay
return if !@refreshOverlay return if !@refreshOverlay
@refreshOverlay=false @refreshOverlay = false
bgoverlay=@sprites["bgoverlay"].bitmap bgoverlay = @sprites["bgoverlay"].bitmap
bgoverlay.clear bgoverlay.clear
pbSetSystemFont(bgoverlay) pbSetSystemFont(bgoverlay)
textPositions=[ textPositions = [
[@helptext,160,6,false,Color.new(16,24,32),Color.new(168,184,184)] [@helptext, 160, 6, false, Color.new(16, 24, 32), Color.new(168, 184, 184)]
] ]
chars=@helper.textChars chars = @helper.textChars
x=166 x = 166
for ch in chars for ch in chars
textPositions.push([ch,x,42,false,Color.new(16,24,32),Color.new(168,184,184)]) textPositions.push([ch, x, 42, false, Color.new(16, 24, 32), Color.new(168, 184, 184)])
x+=24 x += 24
end end
pbDrawTextPositions(bgoverlay,textPositions) pbDrawTextPositions(bgoverlay, textPositions)
end end
def pbChangeTab(newtab=@mode+1) def pbChangeTab(newtab = @mode + 1)
pbSEPlay("GUI naming tab swap start") pbSEPlay("GUI naming tab swap start")
@sprites["cursor"].visible = false @sprites["cursor"].visible = false
@sprites["toptab"].bitmap = @bitmaps[(newtab%3)+3] @sprites["toptab"].bitmap = @bitmaps[(newtab % @@Characters.length) + @@Characters.length]
# Move bottom (old) tab down off the screen, and move top (new) tab right # Move bottom (old) tab down off the screen, and move top (new) tab right
# onto the screen # onto the screen
deltaX = 48*20/Graphics.frame_rate deltaX = 48 * 20 / Graphics.frame_rate
deltaY = 24*20/Graphics.frame_rate deltaY = 24 * 20 / Graphics.frame_rate
loop do loop do
if @sprites["bottomtab"].y<414 if @sprites["bottomtab"].y < 414
@sprites["bottomtab"].y += deltaY @sprites["bottomtab"].y += deltaY
@sprites["bottomtab"].y = 414 if @sprites["bottomtab"].y>414 @sprites["bottomtab"].y = 414 if @sprites["bottomtab"].y > 414
end end
if @sprites["toptab"].x<22 if @sprites["toptab"].x < 22
@sprites["toptab"].x += deltaX @sprites["toptab"].x += deltaX
@sprites["toptab"].x = 22 if @sprites["toptab"].x>22 @sprites["toptab"].x = 22 if @sprites["toptab"].x > 22
end end
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
break if @sprites["toptab"].x>=22 && @sprites["bottomtab"].y>=414 break if @sprites["toptab"].x >= 22 && @sprites["bottomtab"].y >= 414
end end
# Swap top and bottom tab around # Swap top and bottom tab around
@sprites["toptab"].x, @sprites["bottomtab"].x = @sprites["bottomtab"].x, @sprites["toptab"].x @sprites["toptab"].x, @sprites["bottomtab"].x = @sprites["bottomtab"].x, @sprites["toptab"].x
@@ -546,29 +553,29 @@ class PokemonEntryScene2
Input.update Input.update
pbUpdate pbUpdate
# Set the current mode # Set the current mode
@mode = (newtab)%3 @mode = newtab % @@Characters.length
# Set the top tab up to be the next tab # Set the top tab up to be the next tab
newtab = @bitmaps[((@mode+1)%3)+3] newtab = @bitmaps[((@mode + 1) % @@Characters.length) + @@Characters.length]
@sprites["cursor"].visible = true @sprites["cursor"].visible = true
@sprites["toptab"].bitmap = newtab @sprites["toptab"].bitmap = newtab
@sprites["toptab"].x = 22-504 @sprites["toptab"].x = 22 - 504
@sprites["toptab"].y = 162 @sprites["toptab"].y = 162
pbSEPlay("GUI naming tab swap end") pbSEPlay("GUI naming tab swap end")
pbDoUpdateOverlay2 pbDoUpdateOverlay2
end end
def pbUpdate def pbUpdate
for i in 0...3 for i in 0...@@Characters.length
@bitmaps[i].update @bitmaps[i].update
end end
if @init || Graphics.frame_count%5==0 if @init || Graphics.frame_count % 5 == 0
@init = false @init = false
cursorpos = @helper.cursor cursorpos = @helper.cursor
cursorpos = @maxlength-1 if cursorpos>=@maxlength cursorpos = @maxlength - 1 if cursorpos >= @maxlength
cursorpos = 0 if cursorpos<0 cursorpos = 0 if cursorpos < 0
@maxlength.times { |i| @maxlength.times { |i|
@blanks[i] = (i==cursorpos) ? 1 : 0 @blanks[i] = (i == cursorpos) ? 1 : 0
@sprites["blank#{i}"].y = [78,82][@blanks[i]] @sprites["blank#{i}"].y = [78, 82][@blanks[i]]
} }
end end
pbDoUpdateOverlay pbDoUpdateOverlay
@@ -576,106 +583,102 @@ class PokemonEntryScene2
end end
def pbColumnEmpty?(m) def pbColumnEmpty?(m)
return false if m>=ROWS-1 return false if m >= ROWS - 1
chset=@@Characters[@mode][0] chset = @@Characters[@mode][0]
return ( COLUMNS.times do |i|
chset[m]==" " && return false if chset[i * ROWS + m] != " "
chset[m+((ROWS-1))]==" " && end
chset[m+((ROWS-1)*2)]==" " && return true
chset[m+((ROWS-1)*3)]==" "
)
end end
def wrapmod(x,y) def wrapmod(x, y)
result=x%y result = x % y
result+=y if result<0 result += y if result < 0
return result return result
end end
def pbMoveCursor def pbMoveCursor
oldcursor=@cursorpos oldcursor = @cursorpos
cursordiv=@cursorpos/ROWS cursordiv = @cursorpos / ROWS # The row the cursor is in
cursormod=@cursorpos%ROWS cursormod = @cursorpos % ROWS # The column the cursor is in
cursororigin=@cursorpos-cursormod cursororigin = @cursorpos - cursormod
if Input.repeat?(Input::LEFT) if Input.repeat?(Input::LEFT)
if @cursorpos<0 # Controls if @cursorpos < 0 # Controls
@cursorpos-=1 @cursorpos -= 1
@cursorpos=OK if @cursorpos<MODE1 @cursorpos = OK if @cursorpos < MODE1
else else
begin begin
cursormod=wrapmod((cursormod-1),ROWS) cursormod = wrapmod(cursormod - 1, ROWS)
@cursorpos=cursororigin+cursormod @cursorpos = cursororigin + cursormod
end while pbColumnEmpty?(cursormod) end while pbColumnEmpty?(cursormod)
end end
elsif Input.repeat?(Input::RIGHT) elsif Input.repeat?(Input::RIGHT)
if @cursorpos<0 # Controls if @cursorpos < 0 # Controls
@cursorpos+=1 @cursorpos += 1
@cursorpos=MODE1 if @cursorpos>OK @cursorpos = MODE1 if @cursorpos > OK
else else
begin begin
cursormod=wrapmod((cursormod+1),ROWS) cursormod = wrapmod(cursormod + 1, ROWS)
@cursorpos=cursororigin+cursormod @cursorpos = cursororigin + cursormod
end while pbColumnEmpty?(cursormod) end while pbColumnEmpty?(cursormod)
end end
elsif Input.repeat?(Input::UP) elsif Input.repeat?(Input::UP)
if @cursorpos<0 # Controls if @cursorpos < 0 # Controls
case @cursorpos case @cursorpos
when MODE1 then @cursorpos = ROWS*(COLUMNS-1) when MODE1 then @cursorpos = ROWS * (COLUMNS - 1)
when MODE2 then @cursorpos = ROWS*(COLUMNS-1)+2 when MODE2 then @cursorpos = ROWS * (COLUMNS - 1) + 2
when MODE3 then @cursorpos = ROWS*(COLUMNS-1)+4 when MODE3 then @cursorpos = ROWS * (COLUMNS - 1) + 4
when BACK then @cursorpos = ROWS*(COLUMNS-1)+8 when MODE4 then @cursorpos = ROWS * (COLUMNS - 1) + 6
when OK then @cursorpos = ROWS*(COLUMNS-1)+11 when BACK then @cursorpos = ROWS * (COLUMNS - 1) + 9
when OK then @cursorpos = ROWS * (COLUMNS - 1) + 11
end end
elsif @cursorpos<ROWS # Top row of letters elsif @cursorpos < ROWS # Top row of letters
case @cursorpos case @cursorpos
when 0, 1 then @cursorpos = MODE1 when 0, 1 then @cursorpos = MODE1
when 2, 3 then @cursorpos = MODE2 when 2, 3 then @cursorpos = MODE2
when 4, 5, 6 then @cursorpos = MODE3 when 4, 5 then @cursorpos = MODE3
when 7, 8, 9, 10 then @cursorpos = BACK when 6, 7 then @cursorpos = MODE4
when 11, 12 then @cursorpos = OK when 8, 9, 10 then @cursorpos = BACK
when 11, 12 then @cursorpos = OK
end end
else else
cursordiv=wrapmod((cursordiv-1),COLUMNS) cursordiv = wrapmod(cursordiv - 1, COLUMNS)
@cursorpos=(cursordiv*ROWS)+cursormod @cursorpos = cursordiv * ROWS + cursormod
end end
elsif Input.repeat?(Input::DOWN) elsif Input.repeat?(Input::DOWN)
if @cursorpos<0 # Controls if @cursorpos < 0 # Controls
case @cursorpos case @cursorpos
when MODE1 then @cursorpos = 0 when MODE1 then @cursorpos = 0
when MODE2 then @cursorpos = 2 when MODE2 then @cursorpos = 2
when MODE3 then @cursorpos = 4 when MODE3 then @cursorpos = 4
when BACK then @cursorpos = 8 when MODE4 then @cursorpos = 6
when BACK then @cursorpos = 9
when OK then @cursorpos = 11 when OK then @cursorpos = 11
end end
elsif @cursorpos>=ROWS*(COLUMNS-1) # Bottom row of letters elsif @cursorpos >= ROWS * (COLUMNS - 1) # Bottom row of letters
case @cursorpos case cursormod
when ROWS*(COLUMNS-1),ROWS*(COLUMNS-1)+1 when 0, 1 then @cursorpos = MODE1
@cursorpos = MODE1 when 2, 3 then @cursorpos = MODE2
when ROWS*(COLUMNS-1)+2,ROWS*(COLUMNS-1)+3 when 4, 5 then @cursorpos = MODE3
@cursorpos = MODE2 when 6, 7 then @cursorpos = MODE4
when ROWS*(COLUMNS-1)+4,ROWS*(COLUMNS-1)+5,ROWS*(COLUMNS-1)+6 when 8, 9, 10 then @cursorpos = BACK
@cursorpos = MODE3 else @cursorpos = OK
when ROWS*(COLUMNS-1)+7,ROWS*(COLUMNS-1)+8,ROWS*(COLUMNS-1)+9,ROWS*(COLUMNS-1)+10
@cursorpos = BACK
when ROWS*(COLUMNS-1)+11,ROWS*(COLUMNS-1)+12
@cursorpos = OK
end end
else else
cursordiv=wrapmod((cursordiv+1),COLUMNS) cursordiv = wrapmod(cursordiv + 1, COLUMNS)
@cursorpos=(cursordiv*ROWS)+cursormod @cursorpos = cursordiv * ROWS + cursormod
end end
end end
if @cursorpos!=oldcursor # Cursor position changed if @cursorpos != oldcursor # Cursor position changed
@sprites["cursor"].setCursorPos(@cursorpos) @sprites["cursor"].setCursorPos(@cursorpos)
pbPlayCursorSE() pbPlayCursorSE
return true return true
else
return false
end end
return false
end end
def pbEntry def pbEntry
ret="" ret = ""
loop do loop do
Graphics.update Graphics.update
Input.update Input.update
@@ -688,38 +691,40 @@ class PokemonEntryScene2
@sprites["cursor"].setCursorPos(@cursorpos) @sprites["cursor"].setCursorPos(@cursorpos)
elsif Input.trigger?(Input::BACK) elsif Input.trigger?(Input::BACK)
@helper.delete @helper.delete
pbPlayCancelSE() pbPlayCancelSE
pbUpdateOverlay pbUpdateOverlay
elsif Input.trigger?(Input::USE) elsif Input.trigger?(Input::USE)
case @cursorpos case @cursorpos
when BACK # Backspace when BACK # Backspace
@helper.delete @helper.delete
pbPlayCancelSE() pbPlayCancelSE
pbUpdateOverlay pbUpdateOverlay
when OK # Done when OK # Done
pbSEPlay("GUI naming confirm") pbSEPlay("GUI naming confirm")
if @helper.length>=@minlength if @helper.length >= @minlength
ret=@helper.text ret = @helper.text
break break
end end
when MODE1 when MODE1
pbChangeTab(0) if @mode!=0 pbChangeTab(0) if @mode != 0
when MODE2 when MODE2
pbChangeTab(1) if @mode!=1 pbChangeTab(1) if @mode != 1
when MODE3 when MODE3
pbChangeTab(2) if @mode!=2 pbChangeTab(2) if @mode != 2
when MODE4
pbChangeTab(3) if @mode != 3
else else
cursormod=@cursorpos%ROWS cursormod = @cursorpos % ROWS
cursordiv=@cursorpos/ROWS cursordiv = @cursorpos / ROWS
charpos=cursordiv*(ROWS)+cursormod charpos = cursordiv * ROWS + cursormod
chset=@@Characters[@mode][0] chset = @@Characters[@mode][0]
if @helper.length>=@maxlength if @helper.length >= @maxlength
@helper.delete @helper.delete
end end
@helper.insert(chset[charpos]) @helper.insert(chset[charpos])
pbPlayCursorSE() pbPlayCursorSE
if @helper.length>=@maxlength if @helper.length >= @maxlength
@cursorpos=OK @cursorpos = OK
@sprites["cursor"].setCursorPos(@cursorpos) @sprites["cursor"].setCursorPos(@cursorpos)
end end
pbUpdateOverlay pbUpdateOverlay