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

@@ -264,13 +264,15 @@ class PokemonEntryScene2
@@Characters = [
[("ABCDEFGHIJ ,." + "KLMNOPQRST '-" + "UVWXYZ ♂♀" + " " + "0123456789 ").scan(/./), _INTL("UPPER")],
[("abcdefghij ,." + "klmnopqrst '-" + "uvwxyz ♂♀" + " " + "0123456789 ").scan(/./), _INTL("lower")],
[(",.:;!? ♂♀ "+"\"'()<>[] "+"~@#%*&$ "+"+-=^_/\\| "+" ").scan(/./),_INTL("other")],
[("ÀÁÂÄÃàáâäã Ææ" + "ÈÉÊË èéêë Çç" + "ÌÍÎÏ ìíîï Ññ" + "ÒÓÔÖÕòóôöõ Ýý" + "ÙÚÛÜ ùúûü ").scan(/./), _INTL("accents")],
[(",.'\":;!?¡¿ ♂♀" + "~@#*&$µ¶§ " + "()[]{}<>«» " + "+-×÷=±%¹²³¼½¾" + "^_/\\| ").scan(/./), _INTL("other")]
]
ROWS = 13
COLUMNS = 5
MODE1 = -5
MODE2 = -4
MODE3 = -3
MODE1 = -6
MODE2 = -5
MODE3 = -4
MODE4 = -3
BACK = -2
OK = -1
@@ -291,32 +293,39 @@ class PokemonEntryScene2
def updateCursorPos
value = @cursorPos
if value==PokemonEntryScene2::MODE1 # Upper case
@sprite.x=48
case value
when PokemonEntryScene2::MODE1 # Upper case
@sprite.x = 44
@sprite.y = 120
@cursortype = 1
elsif value==PokemonEntryScene2::MODE2 # Lower case
@sprite.x=112
when PokemonEntryScene2::MODE2 # Lower case
@sprite.x = 106
@sprite.y = 120
@cursortype = 1
elsif value==PokemonEntryScene2::MODE3 # Other symbols
@sprite.x=176
when PokemonEntryScene2::MODE3 # Accents
@sprite.x = 168
@sprite.y = 120
@cursortype = 1
elsif value==PokemonEntryScene2::BACK # Back
@sprite.x=312
when PokemonEntryScene2::MODE4 # Other symbols
@sprite.x = 230
@sprite.y = 120
@cursortype = 1
when PokemonEntryScene2::BACK # Back
@sprite.x = 314
@sprite.y = 120
@cursortype = 2
elsif value==PokemonEntryScene2::OK # OK
@sprite.x=392
when PokemonEntryScene2::OK # OK
@sprite.x = 394
@sprite.y = 120
@cursortype = 2
elsif value>=0
else
if value >= 0
@sprite.x = 52 + 32 * (value % PokemonEntryScene2::ROWS)
@sprite.y = 180 + 38 * (value / PokemonEntryScene2::ROWS)
@cursortype = 0
end
end
end
def visible=(value)
@sprite.visible = value
@@ -365,35 +374,33 @@ class PokemonEntryScene2
def pbStartScene(helptext,minlength,maxlength,initialText,subject=0,pokemon=nil)
@sprites={}
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
@helptext = helptext
@helper = CharacterEntryHelper.new(initialText)
@bitmaps=[
AnimatedBitmap.new("Graphics/Pictures/Naming/overlay_tab_1"),
AnimatedBitmap.new("Graphics/Pictures/Naming/overlay_tab_2"),
AnimatedBitmap.new("Graphics/Pictures/Naming/overlay_tab_3")
]
@bitmaps[3]=@bitmaps[0].bitmap.clone
@bitmaps[4]=@bitmaps[1].bitmap.clone
@bitmaps[5]=@bitmaps[2].bitmap.clone
for i in 0...3
pos=0
pbSetSystemFont(@bitmaps[i+3])
# Create bitmaps
@bitmaps = []
for i in 0...@@Characters.length
@bitmaps[i] = AnimatedBitmap.new(sprintf("Graphics/Pictures/Naming/overlay_tab_#{i + 1}"))
b = @bitmaps[i].bitmap.clone
pbSetSystemFont(b)
textPos = []
for y in 0...COLUMNS
for x in 0...ROWS
pos = y * ROWS + x
textPos.push([@@Characters[i][0][pos], 44 + x * 32, 12 + y * 38, 2,
Color.new(16, 24, 32), Color.new(160, 160, 160)])
pos+=1
end
end
pbDrawTextPositions(@bitmaps[i+3],textPos)
pbDrawTextPositions(b, textPos)
@bitmaps[@@Characters.length + i] = b
end
@bitmaps[6]=BitmapWrapper.new(24,6)
@bitmaps[6].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 = BitmapWrapper.new(24, 6)
underline_bitmap.fill_rect(2, 2, 22, 4, Color.new(168, 184, 184))
underline_bitmap.fill_rect(0, 0, 22, 4, Color.new(16, 24, 32))
@bitmaps.push(underline_bitmap)
# Create sprites
@sprites = {}
@sprites["bg"] = IconSprite.new(0, 0, @viewport)
@sprites["bg"].setBitmap("Graphics/Pictures/Naming/bg")
case subject
@@ -402,21 +409,21 @@ class PokemonEntryScene2
if meta
@sprites["shadow"] = IconSprite.new(0, 0, @viewport)
@sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow")
@sprites["shadow"].x=33*2
@sprites["shadow"].y=32*2
@sprites["shadow"].x = 66
@sprites["shadow"].y = 64
filename = pbGetPlayerCharset(meta, 1, nil, true)
@sprites["subject"] = TrainerWalkingCharSprite.new(filename, @viewport)
charwidth = @sprites["subject"].bitmap.width
charheight = @sprites["subject"].bitmap.height
@sprites["subject"].x = 44*2 - charwidth/8
@sprites["subject"].y = 38*2 - charheight/4
@sprites["subject"].x = 88 - charwidth / 8
@sprites["subject"].y = 76 - charheight / 4
end
when 2 # Pokémon
if pokemon
@sprites["shadow"] = IconSprite.new(0, 0, @viewport)
@sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow")
@sprites["shadow"].x=33*2
@sprites["shadow"].y=32*2
@sprites["shadow"].x = 66
@sprites["shadow"].y = 64
@sprites["subject"] = PokemonIconSprite.new(pokemon, @viewport)
@sprites["subject"].setOffset(PictureOrigin::Center)
@sprites["subject"].x = 88
@@ -437,21 +444,21 @@ class PokemonEntryScene2
when 3 # NPC
@sprites["shadow"] = IconSprite.new(0, 0, @viewport)
@sprites["shadow"].setBitmap("Graphics/Pictures/Naming/icon_shadow")
@sprites["shadow"].x=33*2
@sprites["shadow"].y=32*2
@sprites["shadow"].x = 66
@sprites["shadow"].y = 64
@sprites["subject"] = TrainerWalkingCharSprite.new(pokemon.to_s, @viewport)
charwidth = @sprites["subject"].bitmap.width
charheight = @sprites["subject"].bitmap.height
@sprites["subject"].x = 44*2 - charwidth/8
@sprites["subject"].y = 38*2 - charheight/4
@sprites["subject"].x = 88 - charwidth / 8
@sprites["subject"].y = 76 - charheight / 4
when 4 # Storage box
@sprites["subject"] = TrainerWalkingCharSprite.new(nil, @viewport)
@sprites["subject"].altcharset = "Graphics/Pictures/Naming/icon_storage"
@sprites["subject"].animspeed = 4
charwidth = @sprites["subject"].bitmap.width
charheight = @sprites["subject"].bitmap.height
@sprites["subject"].x = 44*2 - charwidth/8
@sprites["subject"].y = 26*2 - charheight/2
@sprites["subject"].x = 88 - charwidth / 8
@sprites["subject"].y = 52 - charheight / 2
end
@sprites["bgoverlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
pbDoUpdateOverlay
@@ -461,22 +468,22 @@ class PokemonEntryScene2
@maxlength = maxlength
@maxlength.times { |i|
@sprites["blank#{i}"] = SpriteWrapper.new(@viewport)
@sprites["blank#{i}"].bitmap=@bitmaps[6]
@sprites["blank#{i}"].x = 160 + 24 * i
@sprites["blank#{i}"].bitmap = @bitmaps[@bitmaps.length - 1]
@blanks[i] = 0
}
@sprites["bottomtab"] = SpriteWrapper.new(@viewport) # Current tab
@sprites["bottomtab"].x = 22
@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"].x = 22 - 504
@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"].setBitmap(_INTL("Graphics/Pictures/Naming/overlay_controls"))
@sprites["controls"].x = 16
@sprites["controls"].y = 96
@sprites["controls"].setBitmap(_INTL("Graphics/Pictures/Naming/overlay_controls"))
@init = true
@sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
pbDoUpdateOverlay2
@@ -494,7 +501,7 @@ class PokemonEntryScene2
def pbDoUpdateOverlay2
overlay = @sprites["overlay"].bitmap
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)
end
@@ -519,7 +526,7 @@ class PokemonEntryScene2
def pbChangeTab(newtab = @mode + 1)
pbSEPlay("GUI naming tab swap start")
@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
# onto the screen
deltaX = 48 * 20 / Graphics.frame_rate
@@ -546,9 +553,9 @@ class PokemonEntryScene2
Input.update
pbUpdate
# Set the current mode
@mode = (newtab)%3
@mode = newtab % @@Characters.length
# 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["toptab"].bitmap = newtab
@sprites["toptab"].x = 22 - 504
@@ -558,7 +565,7 @@ class PokemonEntryScene2
end
def pbUpdate
for i in 0...3
for i in 0...@@Characters.length
@bitmaps[i].update
end
if @init || Graphics.frame_count % 5 == 0
@@ -578,12 +585,10 @@ class PokemonEntryScene2
def pbColumnEmpty?(m)
return false if m >= ROWS - 1
chset = @@Characters[@mode][0]
return (
chset[m]==" " &&
chset[m+((ROWS-1))]==" " &&
chset[m+((ROWS-1)*2)]==" " &&
chset[m+((ROWS-1)*3)]==" "
)
COLUMNS.times do |i|
return false if chset[i * ROWS + m] != " "
end
return true
end
def wrapmod(x, y)
@@ -594,8 +599,8 @@ class PokemonEntryScene2
def pbMoveCursor
oldcursor = @cursorpos
cursordiv=@cursorpos/ROWS
cursormod=@cursorpos%ROWS
cursordiv = @cursorpos / ROWS # The row the cursor is in
cursormod = @cursorpos % ROWS # The column the cursor is in
cursororigin = @cursorpos - cursormod
if Input.repeat?(Input::LEFT)
if @cursorpos < 0 # Controls
@@ -603,7 +608,7 @@ class PokemonEntryScene2
@cursorpos = OK if @cursorpos < MODE1
else
begin
cursormod=wrapmod((cursormod-1),ROWS)
cursormod = wrapmod(cursormod - 1, ROWS)
@cursorpos = cursororigin + cursormod
end while pbColumnEmpty?(cursormod)
end
@@ -613,7 +618,7 @@ class PokemonEntryScene2
@cursorpos = MODE1 if @cursorpos > OK
else
begin
cursormod=wrapmod((cursormod+1),ROWS)
cursormod = wrapmod(cursormod + 1, ROWS)
@cursorpos = cursororigin + cursormod
end while pbColumnEmpty?(cursormod)
end
@@ -623,20 +628,22 @@ class PokemonEntryScene2
when MODE1 then @cursorpos = ROWS * (COLUMNS - 1)
when MODE2 then @cursorpos = ROWS * (COLUMNS - 1) + 2
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 BACK then @cursorpos = ROWS * (COLUMNS - 1) + 9
when OK then @cursorpos = ROWS * (COLUMNS - 1) + 11
end
elsif @cursorpos < ROWS # Top row of letters
case @cursorpos
when 0, 1 then @cursorpos = MODE1
when 2, 3 then @cursorpos = MODE2
when 4, 5, 6 then @cursorpos = MODE3
when 7, 8, 9, 10 then @cursorpos = BACK
when 4, 5 then @cursorpos = MODE3
when 6, 7 then @cursorpos = MODE4
when 8, 9, 10 then @cursorpos = BACK
when 11, 12 then @cursorpos = OK
end
else
cursordiv=wrapmod((cursordiv-1),COLUMNS)
@cursorpos=(cursordiv*ROWS)+cursormod
cursordiv = wrapmod(cursordiv - 1, COLUMNS)
@cursorpos = cursordiv * ROWS + cursormod
end
elsif Input.repeat?(Input::DOWN)
if @cursorpos < 0 # Controls
@@ -644,34 +651,30 @@ class PokemonEntryScene2
when MODE1 then @cursorpos = 0
when MODE2 then @cursorpos = 2
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
end
elsif @cursorpos >= ROWS * (COLUMNS - 1) # Bottom row of letters
case @cursorpos
when ROWS*(COLUMNS-1),ROWS*(COLUMNS-1)+1
@cursorpos = MODE1
when ROWS*(COLUMNS-1)+2,ROWS*(COLUMNS-1)+3
@cursorpos = MODE2
when ROWS*(COLUMNS-1)+4,ROWS*(COLUMNS-1)+5,ROWS*(COLUMNS-1)+6
@cursorpos = MODE3
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
case cursormod
when 0, 1 then @cursorpos = MODE1
when 2, 3 then @cursorpos = MODE2
when 4, 5 then @cursorpos = MODE3
when 6, 7 then @cursorpos = MODE4
when 8, 9, 10 then @cursorpos = BACK
else @cursorpos = OK
end
else
cursordiv=wrapmod((cursordiv+1),COLUMNS)
@cursorpos=(cursordiv*ROWS)+cursormod
cursordiv = wrapmod(cursordiv + 1, COLUMNS)
@cursorpos = cursordiv * ROWS + cursormod
end
end
if @cursorpos != oldcursor # Cursor position changed
@sprites["cursor"].setCursorPos(@cursorpos)
pbPlayCursorSE()
pbPlayCursorSE
return true
else
return false
end
return false
end
def pbEntry
@@ -688,13 +691,13 @@ class PokemonEntryScene2
@sprites["cursor"].setCursorPos(@cursorpos)
elsif Input.trigger?(Input::BACK)
@helper.delete
pbPlayCancelSE()
pbPlayCancelSE
pbUpdateOverlay
elsif Input.trigger?(Input::USE)
case @cursorpos
when BACK # Backspace
@helper.delete
pbPlayCancelSE()
pbPlayCancelSE
pbUpdateOverlay
when OK # Done
pbSEPlay("GUI naming confirm")
@@ -708,16 +711,18 @@ class PokemonEntryScene2
pbChangeTab(1) if @mode != 1
when MODE3
pbChangeTab(2) if @mode != 2
when MODE4
pbChangeTab(3) if @mode != 3
else
cursormod = @cursorpos % ROWS
cursordiv = @cursorpos / ROWS
charpos=cursordiv*(ROWS)+cursormod
charpos = cursordiv * ROWS + cursormod
chset = @@Characters[@mode][0]
if @helper.length >= @maxlength
@helper.delete
end
@helper.insert(chset[charpos])
pbPlayCursorSE()
pbPlayCursorSE
if @helper.length >= @maxlength
@cursorpos = OK
@sprites["cursor"].setCursorPos(@cursorpos)