mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
240 lines
7.5 KiB
Ruby
240 lines
7.5 KiB
Ruby
class FusionMovesOptionsScene < PokemonOption_Scene
|
|
attr_accessor :move1
|
|
attr_accessor :move2
|
|
attr_accessor :move3
|
|
attr_accessor :move4
|
|
|
|
def initialize(poke1, poke2)
|
|
@poke1 = poke1
|
|
@poke2 = poke2
|
|
|
|
@move1 = @poke1.moves[0]
|
|
@move2 = @poke1.moves[1]
|
|
@move3 = @poke1.moves[2]
|
|
@move4 = @poke1.moves[3]
|
|
|
|
|
|
@index1=0
|
|
@index2=0
|
|
@index3=0
|
|
@index4=0
|
|
|
|
|
|
@selBaseColor = Color.new(48,96,216)
|
|
@selShadowColor = Color.new(32,32,32)
|
|
end
|
|
|
|
def initUIElements
|
|
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
|
|
_INTL(""), 0, 0, Graphics.width, 64, @viewport)
|
|
@sprites["textbox"] = pbCreateMessageWindow
|
|
@sprites["textbox"].letterbyletter = false
|
|
pbSetSystemFont(@sprites["textbox"].contents)
|
|
end
|
|
|
|
|
|
|
|
def pbStartScene(inloadscreen = false)
|
|
super
|
|
@typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
|
|
@sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
|
|
@sprites["overlay"].z = 9999
|
|
pbSetSystemFont(@sprites["overlay"].bitmap)
|
|
|
|
@sprites["option"].nameBaseColor = Color.new(35, 130, 200)
|
|
@sprites["option"].nameShadowColor = Color.new(20, 75, 115)
|
|
@changedColor = true
|
|
for i in 0...@PokemonOptions.length
|
|
@sprites["option"][i] = (@PokemonOptions[i].get || 0)
|
|
end
|
|
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
|
|
_INTL("Select moves"), 0, 0, Graphics.width, 64, @viewport)
|
|
@sprites["title"].setSkin("Graphics/Windowskins/invisible")
|
|
@sprites["option"].setSkin("Graphics/Windowskins/invisible")
|
|
@sprites["textbox"].setSkin("Graphics/Windowskins/invisible")
|
|
# @sprites["textbox"].text = _INTL("Select moves")
|
|
updateDescription(0)
|
|
pbFadeInAndShow(@sprites) { pbUpdate }
|
|
end
|
|
|
|
def draw_empty_move_info
|
|
# code here
|
|
end
|
|
|
|
def draw_move_info(pokemonMove)
|
|
move = GameData::Move.get(pokemonMove.id)
|
|
move_base_color = Color.new(50, 40, 230)
|
|
move_base_shadow = Color.new(14, 14, 114)
|
|
|
|
label_base_color = Color.new(248, 248, 248)
|
|
label_shadow_color = Color.new(104, 104, 104)
|
|
|
|
value_base_color = Color.new(248, 248, 248)
|
|
value_shadow_color = Color.new(104, 104, 104)
|
|
|
|
@sprites["title"].text = _INTL("{1}", move.real_name)
|
|
|
|
damage = move.base_damage == 0 ? "-" : move.base_damage.to_s
|
|
accuracy = move.accuracy == 0 ? "100" : move.accuracy.to_s
|
|
pp = move.total_pp.to_s
|
|
if !move
|
|
damage="-"
|
|
accuracy="-"
|
|
pp="-"
|
|
end
|
|
|
|
textpos = [
|
|
[_INTL("Type"), 20, 84, 0, label_base_color, label_shadow_color],
|
|
[_INTL("Category"), 20, 116, 0, label_base_color, label_shadow_color],
|
|
|
|
[_INTL("Power"), 20, 148, 0, label_base_color, label_shadow_color],
|
|
[_INTL("{1}", damage), 140, 148, 0, value_base_color, value_shadow_color],
|
|
|
|
[_INTL("Accuracy"), 20, 180, 0, label_base_color, label_shadow_color],
|
|
[_INTL("{1}%", accuracy), 140, 180, 0, value_base_color, value_shadow_color],
|
|
|
|
[_INTL("PP"), 20, 212, 0, label_base_color, label_shadow_color], #move.total_pp
|
|
[_INTL("{1}", pp), 140, 212, 0, value_base_color, value_shadow_color] #move.total_pp
|
|
|
|
]
|
|
imagepos = []
|
|
|
|
yPos = 90
|
|
type_number = GameData::Type.get(move.type).id_number
|
|
category = move.category
|
|
imagepos.push(["Graphics/Pictures/types", 120, 94, 0, type_number * 28, 64, 28]) #248
|
|
imagepos.push(["Graphics/Pictures/category", 120, 124, 0, category * 28, 64, 28])
|
|
if !move
|
|
imagepos=[]
|
|
end
|
|
@sprites["overlay"].bitmap.clear
|
|
pbDrawTextPositions(@sprites["overlay"].bitmap, textpos)
|
|
pbDrawImagePositions(@sprites["overlay"].bitmap, imagepos)
|
|
|
|
end
|
|
|
|
def draw_pokemon_type
|
|
type1_number = GameData::Type.get(@poke1.type1).id_number
|
|
type2_number = GameData::Type.get(@poke1.type2).id_number
|
|
type1rect = Rect.new(0, type1_number * 28, 64, 28)
|
|
type2rect = Rect.new(0, type2_number * 28, 64, 28)
|
|
if @poke1.type1 == @poke1.type2
|
|
overlay.blt(130, 78, @typebitmap.bitmap, type1rect)
|
|
else
|
|
overlay.blt(96, 78, @typebitmap.bitmap, type1rect)
|
|
overlay.blt(166, 78, @typebitmap.bitmap, type2rect)
|
|
end
|
|
end
|
|
|
|
def updateDescription(index)
|
|
index = 0 if !index
|
|
begin
|
|
move = getMoveForIndex(index)
|
|
draw_move_info(move)
|
|
new_description = getMoveDescription(move)
|
|
@sprites["textbox"].text = _INTL(new_description)
|
|
rescue
|
|
@sprites["textbox"].text = getDefaultDescription
|
|
end
|
|
end
|
|
|
|
def getDefaultDescription
|
|
return _INTL("No move selected")
|
|
end
|
|
|
|
def getMoveForIndex(index)
|
|
case index
|
|
when 0
|
|
return @move1
|
|
when 1
|
|
return @move2
|
|
when 2
|
|
return @move3
|
|
when 3
|
|
return @move4
|
|
end
|
|
return nil
|
|
end
|
|
|
|
def pbFadeInAndShow(sprites, visiblesprites = nil)
|
|
return if !@changedColor
|
|
super
|
|
end
|
|
|
|
def getMoveName(move)
|
|
return " - " if !@sprites["option"] && !move
|
|
move = @poke1.moves[@sprites["option"].index] if !move
|
|
return GameData::Move.get(move.id).real_name
|
|
end
|
|
|
|
def getMoveDescription(move)
|
|
return " - " if !@sprites["option"] && !move
|
|
move = @poke1.moves[@sprites["option"].index] if !move
|
|
return GameData::Move.get(move.id).real_description
|
|
end
|
|
|
|
def pbGetOptions(inloadscreen = false)
|
|
options = [
|
|
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[0])), _INTL(getMoveName(@poke2.moves[0]))],
|
|
proc { 0 },
|
|
proc { |value|
|
|
@move1 = value == 0 ? @poke1.moves[0] : @poke2.moves[0]
|
|
}, [getMoveDescription(@poke1.moves[0]), getMoveDescription(@poke2.moves[0])]
|
|
),
|
|
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[1])), _INTL(getMoveName(@poke2.moves[1]))],
|
|
proc { 0 },
|
|
proc { |value|
|
|
@move2 = value == 0 ? @poke1.moves[1] : @poke2.moves[1]
|
|
}, [getMoveDescription(@poke1.moves[1]), getMoveDescription(@poke2.moves[1])]
|
|
),
|
|
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[2])), _INTL(getMoveName(@poke2.moves[2]))],
|
|
proc { 0 },
|
|
proc { |value|
|
|
@move3 = value == 0 ? @poke1.moves[2] : @poke2.moves[2]
|
|
}, [getMoveDescription(@poke1.moves[2]), getMoveDescription(@poke2.moves[2])]
|
|
),
|
|
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[3])), _INTL(getMoveName(@poke2.moves[3]))],
|
|
proc { 0 },
|
|
proc { |value|
|
|
@move4 = value == 0 ? @poke1.moves[3] : @poke2.moves[3]
|
|
}, [getMoveDescription(@poke1.moves[3]), getMoveDescription(@poke2.moves[3])]
|
|
)
|
|
]
|
|
return options
|
|
end
|
|
|
|
def isConfirmedOnKeyPress
|
|
return true
|
|
end
|
|
|
|
def initOptionsWindow
|
|
optionsWindow = Window_PokemonOptionFusionMoves.new(@PokemonOptions, 0,
|
|
@sprites["title"].height, Graphics.width,
|
|
Graphics.height - @sprites["title"].height - @sprites["textbox"].height)
|
|
optionsWindow.viewport = @viewport
|
|
optionsWindow.visible = true
|
|
return optionsWindow
|
|
end
|
|
|
|
end
|
|
|
|
|
|
class Window_PokemonOptionFusionMoves < Window_PokemonOption
|
|
def initialize(options, x, y, width, height)
|
|
super
|
|
@mustUpdateOptions=true
|
|
@mustUpdateDescription=true
|
|
@confirmed=false
|
|
end
|
|
|
|
def drawCursor(index,rect)
|
|
if self.index==index
|
|
pbCopyBitmap(self.contents, @selarrow.bitmap,rect.x+175,rect.y)
|
|
end
|
|
return Rect.new(rect.x+16,rect.y,rect.width-16,rect.height)
|
|
end
|
|
|
|
def dont_draw_item(index)
|
|
return index == @options.length
|
|
end
|
|
end |