mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2026-07-21 23:27:00 +00:00
188 lines
6.7 KiB
Ruby
188 lines
6.7 KiB
Ruby
#===============================================================================
|
|
# Text entry screen - free typing.
|
|
#===============================================================================
|
|
class PokedexTextEntry
|
|
@@Characters=[
|
|
[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz").scan(/./),"[*]"],
|
|
[("0123456789 !@\#$%^&*() ~`-_+={}[] :;'\"<>,.?/ ").scan(/./),"[A]"],
|
|
]
|
|
USEKEYBOARD=true
|
|
|
|
def pbStartScene(helptext,minlength,maxlength,initialText,subject=0,pokemon=nil)
|
|
@sprites={}
|
|
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
|
|
@viewport.z=99999
|
|
if USEKEYBOARD
|
|
@sprites["entry"]=Window_TextEntry_Keyboard.new(initialText,
|
|
0,0,400-112,96,helptext,false)
|
|
Input.text_input = true
|
|
else
|
|
@sprites["entry"]=Window_TextEntry.new(initialText,0,0,400,96,helptext,false)
|
|
end
|
|
@sprites["entry"].x=(Graphics.width/2)-(@sprites["entry"].width/2)+32
|
|
@sprites["entry"].viewport=@viewport
|
|
@sprites["entry"].visible=true
|
|
@minlength=minlength
|
|
@maxlength=maxlength
|
|
@symtype=0
|
|
@sprites["entry"].maxlength=maxlength
|
|
if !USEKEYBOARD
|
|
@sprites["entry2"]=Window_CharacterEntry.new(@@Characters[@symtype][0])
|
|
@sprites["entry2"].setOtherCharset(@@Characters[@symtype][1])
|
|
@sprites["entry2"].viewport=@viewport
|
|
@sprites["entry2"].visible=true
|
|
@sprites["entry2"].x=(Graphics.width/2)-(@sprites["entry2"].width/2)
|
|
end
|
|
if minlength==0
|
|
@sprites["helpwindow"]=Window_UnformattedTextPokemon.newWithSize(
|
|
_INTL("Enter text using the keyboard. Press\nEnter to confirm, or Esc to cancel."),
|
|
32,Graphics.height-96,Graphics.width-64,96,@viewport
|
|
)
|
|
else
|
|
@sprites["helpwindow"]=Window_UnformattedTextPokemon.newWithSize(
|
|
_INTL("Enter text using the keyboard.\nPress Enter to confirm."),
|
|
32,Graphics.height-96,Graphics.width-64,96,@viewport
|
|
)
|
|
end
|
|
@sprites["helpwindow"].letterbyletter=false
|
|
@sprites["helpwindow"].viewport=@viewport
|
|
@sprites["helpwindow"].baseColor = pbColor(:LIGHT_TEXT_MAIN_COLOR)
|
|
@sprites["helpwindow"].shadowColor = pbColor(:LIGHT_TEXT_SHADOW_COLOR)
|
|
|
|
|
|
case subject
|
|
when 1 # Player
|
|
meta=GameData::Metadata.get_player($Trainer.character_ID)
|
|
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
|
|
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
|
|
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["subject"]=PokemonIconSprite.new(pokemon,@viewport)
|
|
@sprites["subject"].setOffset(PictureOrigin::Center)
|
|
@sprites["subject"].x=88
|
|
@sprites["subject"].y=54
|
|
@sprites["gender"]=BitmapSprite.new(32,32,@viewport)
|
|
@sprites["gender"].x=430
|
|
@sprites["gender"].y=54
|
|
@sprites["gender"].bitmap.clear
|
|
pbSetSystemFont(@sprites["gender"].bitmap)
|
|
textpos=[]
|
|
if pokemon.male?
|
|
textpos.push(["♂",0,-6,false,Color.new(0,128,248),Color.new(168,184,184)])
|
|
elsif pokemon.female?
|
|
textpos.push(["♀",0,-6,false,Color.new(248,24,24),Color.new(168,184,184)])
|
|
end
|
|
pbDrawTextPositions(@sprites["gender"].bitmap,textpos)
|
|
end
|
|
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["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
|
|
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
|
|
end
|
|
pbFadeInAndShow(@sprites)
|
|
end
|
|
|
|
def pbEntry1
|
|
ret=""
|
|
loop do
|
|
Graphics.update
|
|
Input.update
|
|
if Input.triggerex?(:ESCAPE) && @minlength==0
|
|
ret=""
|
|
break
|
|
elsif Input.triggerex?(:RETURN) && @sprites["entry"].text.length>=@minlength
|
|
ret=@sprites["entry"].text
|
|
break
|
|
end
|
|
@sprites["helpwindow"].update
|
|
@sprites["entry"].update
|
|
@sprites["subject"].update if @sprites["subject"]
|
|
end
|
|
Input.update
|
|
return ret
|
|
end
|
|
|
|
def pbEntry2
|
|
ret=""
|
|
loop do
|
|
Graphics.update
|
|
Input.update
|
|
@sprites["helpwindow"].update
|
|
@sprites["entry"].update
|
|
@sprites["entry2"].update
|
|
@sprites["subject"].update if @sprites["subject"]
|
|
if Input.trigger?(Input::USE)
|
|
index=@sprites["entry2"].command
|
|
if index==-3 # Confirm text
|
|
ret=@sprites["entry"].text
|
|
if ret.length<@minlength || ret.length>@maxlength
|
|
pbPlayBuzzerSE()
|
|
else
|
|
pbPlayDecisionSE()
|
|
break
|
|
end
|
|
elsif index==-1 # Insert a space
|
|
if @sprites["entry"].insert(" ")
|
|
pbPlayDecisionSE()
|
|
else
|
|
pbPlayBuzzerSE()
|
|
end
|
|
elsif index==-2 # Change character set
|
|
pbPlayDecisionSE()
|
|
@symtype+=1
|
|
@symtype=0 if @symtype>=@@Characters.length
|
|
@sprites["entry2"].setCharset(@@Characters[@symtype][0])
|
|
@sprites["entry2"].setOtherCharset(@@Characters[@symtype][1])
|
|
else # Insert given character
|
|
if @sprites["entry"].insert(@sprites["entry2"].character)
|
|
pbPlayDecisionSE()
|
|
else
|
|
pbPlayBuzzerSE()
|
|
end
|
|
end
|
|
next
|
|
end
|
|
end
|
|
Input.update
|
|
return ret
|
|
end
|
|
|
|
def pbEntry
|
|
return USEKEYBOARD ? pbEntry1 : pbEntry2
|
|
end
|
|
|
|
def pbEndScene
|
|
pbFadeOutAndHide(@sprites)
|
|
pbDisposeSpriteHash(@sprites)
|
|
@viewport.dispose
|
|
Input.text_input = false if USEKEYBOARD
|
|
end
|
|
end |