mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 21:24:59 +00:00
Finished FPS agnosticism, removed particle engine
This commit is contained in:
@@ -15,30 +15,31 @@
|
||||
#
|
||||
#===============================================================================
|
||||
class HallOfFame_Scene
|
||||
# When true, all pokémon will be in one line
|
||||
# When false, all pokémon will be in two lines
|
||||
# When true, all pokémon will be in one line.
|
||||
# When false, all pokémon will be in two lines.
|
||||
SINGLE_ROW_OF_POKEMON = false
|
||||
# Make the pokémon movement ON in hall entry
|
||||
# Make the pokémon movement ON in hall entry.
|
||||
ANIMATION = true
|
||||
# Speed in pokémon movement in hall entry. Don't use less than 2!
|
||||
ANIMATIONSPEED = 32
|
||||
# Time in seconds for a Pokémon to slide to its position from off-screen.
|
||||
APPEAR_SPEED = 0.4
|
||||
# Entry wait time (in seconds) between showing each Pokémon (and trainer).
|
||||
# Waits for twice this tme when showing "Welcome to the Hall of Fame!".
|
||||
ENTRY_WAIT_TIME = 3.0
|
||||
# Wait time (in seconds) when showing "Welcome to the Hall of Fame!".
|
||||
WELCOME_WAIT_TIME = 4.0
|
||||
# Maximum number limit of simultaneous hall entries saved.
|
||||
# 0 = Doesn't save any hall. -1 = no limit
|
||||
# Prefer to use larger numbers (like 500 and 1000) than don't put a limit
|
||||
# If a player exceed this limit, the first one will be removed
|
||||
# Prefer to use larger numbers (like 500 and 1000) than don't put a limit.
|
||||
# If a player exceed this limit, the first one will be removed.
|
||||
HALL_ENTRIES_LIMIT = 50
|
||||
# The entry music name. Put "" to doesn't play anything
|
||||
# The entry music name. Put "" to doesn't play anything.
|
||||
HALL_OF_FAME_BGM = "Hall of Fame"
|
||||
# Allow eggs to be show and saved in hall
|
||||
# Allow eggs to be show and saved in hall.
|
||||
ALLOW_EGGS = true
|
||||
# Remove the hallbars when the trainer sprite appears
|
||||
# Remove the hallbars when the trainer sprite appears.
|
||||
REMOVE_BARS_WHEN_SHOWING_TRAINER = true
|
||||
# The final fade speed on entry
|
||||
# The final fade speed on entry.
|
||||
FINAL_FADE_DURATION = 1.0
|
||||
# Sprite's opacity value when it isn't selected
|
||||
# Sprite's opacity value when it isn't selected.
|
||||
OPACITY = 64
|
||||
TEXT_BASE_COLOR = Color.new(248, 248, 248)
|
||||
TEXT_SHADOW_COLOR = Color.new(0, 0, 0)
|
||||
@@ -68,8 +69,7 @@ class HallOfFame_Scene
|
||||
@useMusic = (HALL_OF_FAME_BGM && HALL_OF_FAME_BGM != "")
|
||||
pbBGMPlay(HALL_OF_FAME_BGM) if @useMusic
|
||||
saveHallEntry
|
||||
@xmovement = []
|
||||
@ymovement = []
|
||||
@movements = []
|
||||
createBattlers
|
||||
pbFadeInAndShow(@sprites) { pbUpdate }
|
||||
end
|
||||
@@ -92,14 +92,15 @@ class HallOfFame_Scene
|
||||
end
|
||||
|
||||
def slowFadeOut(duration)
|
||||
col = Color.new(0, 0, 0, 0)
|
||||
timer_start = System.uptime
|
||||
loop do
|
||||
alpha = lerp(255, 0, duration, timer_start, System.uptime)
|
||||
pbSetSpritesToColor(@sprites, Color.new(0, 0, 0, alpha))
|
||||
col.alpha = lerp(0, 255, duration, timer_start, System.uptime)
|
||||
@viewport.color = col
|
||||
Graphics.update
|
||||
Input.update
|
||||
pbUpdate
|
||||
break if alpha == 0
|
||||
break if col.alpha == 255
|
||||
end
|
||||
end
|
||||
|
||||
@@ -132,120 +133,94 @@ class HallOfFame_Scene
|
||||
# Return the x/y point position in screen for battler index number
|
||||
# Don't use odd numbers!
|
||||
def xpointformula(battlernumber)
|
||||
ret = 0
|
||||
if SINGLE_ROW_OF_POKEMON
|
||||
ret = ((60 * (battlernumber / 2)) + 48) * (xpositionformula(battlernumber) - 1)
|
||||
ret += (Graphics.width / 2) - 56
|
||||
else
|
||||
ret = 32 + (160 * xpositionformula(battlernumber))
|
||||
ret = ((60 * (battlernumber / 2)) + 48) * (xpositionformula(battlernumber) - 1) # -48, 48, -108, 108, -168, 168
|
||||
return ret + (Graphics.width / 2) # 208, 304, 148, 364, 88, 424
|
||||
end
|
||||
return ret
|
||||
return 96 + (160 * xpositionformula(battlernumber)) # 256, 96, 456, 256, 456, 96
|
||||
end
|
||||
|
||||
def ypointformula(battlernumber)
|
||||
ret = 0
|
||||
if SINGLE_ROW_OF_POKEMON
|
||||
ret = 96 - (8 * (battlernumber / 2))
|
||||
else
|
||||
ret = 32 + (128 * ypositionformula(battlernumber) / 2)
|
||||
end
|
||||
return ret
|
||||
return 180 - (32 * (battlernumber / 2)) if SINGLE_ROW_OF_POKEMON # 180, 180, 148, 148, 116, 116
|
||||
return 96 + (64 * ypositionformula(battlernumber)) # 90, 90, 90, 160, 160, 160
|
||||
end
|
||||
|
||||
# Returns 0, 1 or 2 as the x/y column value
|
||||
# Returns 0, 1 or 2 as the x position value (left, middle, right column)
|
||||
def xpositionformula(battlernumber)
|
||||
ret = 0
|
||||
if SINGLE_ROW_OF_POKEMON
|
||||
ret = (battlernumber % 2) * 2
|
||||
else
|
||||
ret = (battlernumber / 3).even? ? (19 - battlernumber) % 3 : (19 + battlernumber) % 3
|
||||
end
|
||||
return ret
|
||||
return (battlernumber % 2) * 2 if SINGLE_ROW_OF_POKEMON # 0, 2, 0, 2, 0, 2
|
||||
return (1 - battlernumber) % 3 if (battlernumber / 3).even? # First 3 mons: 1, 0, 2
|
||||
return (1 + battlernumber) % 3 # Second 3 mons: 1, 2, 0
|
||||
end
|
||||
|
||||
# Returns 0, 1 or 2 as the y position value (top, middle, bottom row)
|
||||
def ypositionformula(battlernumber)
|
||||
ret = 0
|
||||
if SINGLE_ROW_OF_POKEMON
|
||||
ret = 1
|
||||
else
|
||||
ret = ((battlernumber / 3) % 2) * 2
|
||||
end
|
||||
return ret
|
||||
return 1 if SINGLE_ROW_OF_POKEMON # 1, 1, 1, 1, 1, 1
|
||||
return ((battlernumber / 3) % 2) * 2 # 0, 0, 0, 2, 2, 2
|
||||
end
|
||||
|
||||
def moveSprite(i)
|
||||
spritename = (i > -1) ? "pokemon#{i}" : "trainer"
|
||||
speed = (i > -1) ? ANIMATIONSPEED : 2
|
||||
if !ANIMATION # Skips animation
|
||||
@sprites[spritename].x -= speed * @xmovement[i]
|
||||
@xmovement[i] = 0
|
||||
@sprites[spritename].y -= speed * @ymovement[i]
|
||||
@ymovement[i] = 0
|
||||
end
|
||||
if @xmovement[i] != 0
|
||||
direction = (@xmovement[i] > 0) ? -1 : 1
|
||||
@sprites[spritename].x += speed * direction
|
||||
@xmovement[i] += direction
|
||||
end
|
||||
if @ymovement[i] != 0
|
||||
direction = (@ymovement[i] > 0) ? -1 : 1
|
||||
@sprites[spritename].y += speed * direction
|
||||
@ymovement[i] += direction
|
||||
if !ANIMATION # Skips animation, place directly in end position
|
||||
@sprites[spritename].x = @movements[i][1]
|
||||
@sprites[spritename].y = @movements[i][3]
|
||||
@movements[i][0] = @movements[i][1]
|
||||
@movements[i][2] = @movements[i][3]
|
||||
return
|
||||
end
|
||||
@movements[i][4] = System.uptime if !@movements[i][4]
|
||||
speed = (i > -1) ? APPEAR_SPEED : APPEAR_SPEED * 3
|
||||
@sprites[spritename].x = lerp(@movements[i][0], @movements[i][1], speed, @movements[i][4], System.uptime)
|
||||
@sprites[spritename].y = lerp(@movements[i][2], @movements[i][3], speed, @movements[i][4], System.uptime)
|
||||
@movements[i][0] = @movements[i][1] if @sprites[spritename].x == @movements[i][1]
|
||||
@movements[i][2] = @movements[i][3] if @sprites[spritename].y == @movements[i][3]
|
||||
end
|
||||
|
||||
def createBattlers(hide = true)
|
||||
# Movement in animation
|
||||
6.times do |i|
|
||||
# Clear all 6 pokémon sprites and dispose the ones that exists every time
|
||||
Settings::MAX_PARTY_SIZE.times do |i|
|
||||
# Clear all pokémon sprites and dispose the ones that exists every time
|
||||
# that this method is call
|
||||
restartSpritePosition(@sprites, "pokemon#{i}")
|
||||
next if i >= @hallEntry.size
|
||||
xpoint = xpointformula(i)
|
||||
ypoint = ypointformula(i)
|
||||
pok = @hallEntry[i]
|
||||
end_x = xpointformula(i)
|
||||
end_y = ypointformula(i)
|
||||
@sprites["pokemon#{i}"] = PokemonSprite.new(@viewport)
|
||||
@sprites["pokemon#{i}"].setOffset(PictureOrigin::TOP_LEFT)
|
||||
@sprites["pokemon#{i}"].setPokemonBitmap(pok)
|
||||
@sprites["pokemon#{i}"].setPokemonBitmap(@hallEntry[i])
|
||||
# This method doesn't put the exact coordinates
|
||||
@sprites["pokemon#{i}"].x = xpoint
|
||||
@sprites["pokemon#{i}"].y = ypoint
|
||||
if @sprites["pokemon#{i}"].bitmap && !@sprites["pokemon#{i}"].disposed?
|
||||
@sprites["pokemon#{i}"].x += (128 - @sprites["pokemon#{i}"].bitmap.width) / 2
|
||||
@sprites["pokemon#{i}"].y += (128 - @sprites["pokemon#{i}"].bitmap.height) / 2
|
||||
end
|
||||
@sprites["pokemon#{i}"].z = 7 - i if SINGLE_ROW_OF_POKEMON
|
||||
@sprites["pokemon#{i}"].x = end_x
|
||||
@sprites["pokemon#{i}"].y = end_y
|
||||
@sprites["pokemon#{i}"].z = Settings::MAX_PARTY_SIZE - i if SINGLE_ROW_OF_POKEMON
|
||||
next if !hide
|
||||
# Animation distance calculation
|
||||
horizontal = 1 - xpositionformula(i)
|
||||
vertical = 1 - ypositionformula(i)
|
||||
xdistance = (horizontal == -1) ? -@sprites["pokemon#{i}"].bitmap.width : Graphics.width
|
||||
ydistance = (vertical == -1) ? -@sprites["pokemon#{i}"].bitmap.height : Graphics.height
|
||||
xdistance = ((xdistance - @sprites["pokemon#{i}"].x) / ANIMATIONSPEED).abs + 1
|
||||
ydistance = ((ydistance - @sprites["pokemon#{i}"].y) / ANIMATIONSPEED).abs + 1
|
||||
biggerdistance = (xdistance > ydistance) ? xdistance : ydistance
|
||||
@xmovement[i] = biggerdistance
|
||||
@xmovement[i] *= -1 if horizontal == -1
|
||||
@xmovement[i] = 0 if horizontal == 0
|
||||
@ymovement[i] = biggerdistance
|
||||
@ymovement[i] *= -1 if vertical == -1
|
||||
@ymovement[i] = 0 if vertical == 0
|
||||
# Hide the battlers
|
||||
@sprites["pokemon#{i}"].x += @xmovement[i] * ANIMATIONSPEED
|
||||
@sprites["pokemon#{i}"].y += @ymovement[i] * ANIMATIONSPEED
|
||||
x_direction = xpositionformula(i) - 1
|
||||
y_direction = ypositionformula(i) - 1
|
||||
distance = 0
|
||||
if y_direction == 0
|
||||
distance = (x_direction > 0) ? end_x : Graphics.width - end_x
|
||||
distance += @sprites["pokemon#{i}"].bitmap.width / 2
|
||||
else
|
||||
distance = (y_direction > 0) ? end_y : Graphics.height - end_y
|
||||
distance += @sprites["pokemon#{i}"].bitmap.height / 2
|
||||
end
|
||||
start_x = end_x - x_direction * distance
|
||||
start_y = end_y - y_direction * distance
|
||||
@sprites["pokemon#{i}"].x = start_x
|
||||
@sprites["pokemon#{i}"].y = start_y
|
||||
@movements[i] = [start_x, end_x, start_y, end_y]
|
||||
end
|
||||
end
|
||||
|
||||
def createTrainerBattler
|
||||
@sprites["trainer"] = IconSprite.new(@viewport)
|
||||
@sprites["trainer"].setBitmap(GameData::TrainerType.front_sprite_filename($player.trainer_type))
|
||||
@sprites["trainer"].setBitmap(GameData::TrainerType.player_front_sprite_filename($player.trainer_type))
|
||||
if SINGLE_ROW_OF_POKEMON
|
||||
@sprites["trainer"].x = Graphics.width / 2
|
||||
@sprites["trainer"].y = 178
|
||||
@sprites["trainer"].y = 208
|
||||
else
|
||||
@sprites["trainer"].x = Graphics.width - 96
|
||||
@sprites["trainer"].y = 160
|
||||
end
|
||||
@movements.push([Graphics.width / 2, @sprites["trainer"].x, @sprites["trainer"].y, @sprites["trainer"].y])
|
||||
@sprites["trainer"].z = 9
|
||||
@sprites["trainer"].ox = @sprites["trainer"].bitmap.width / 2
|
||||
@sprites["trainer"].oy = @sprites["trainer"].bitmap.height / 2
|
||||
@@ -253,13 +228,8 @@ class HallOfFame_Scene
|
||||
@sprites["overlay"].bitmap.clear
|
||||
@sprites["hallbars"].visible = false
|
||||
end
|
||||
@xmovement[@battlerIndex] = 0
|
||||
@ymovement[@battlerIndex] = 0
|
||||
if ANIMATION && !SINGLE_ROW_OF_POKEMON # Trainer Animation
|
||||
startpoint = Graphics.width / 2
|
||||
# 2 is the trainer speed
|
||||
@xmovement[@battlerIndex] = (startpoint - @sprites["trainer"].x) / 2
|
||||
@sprites["trainer"].x = startpoint
|
||||
@sprites["trainer"].x = @movements.last[0]
|
||||
else
|
||||
timer_start = System.uptime
|
||||
loop do
|
||||
@@ -376,7 +346,9 @@ class HallOfFame_Scene
|
||||
|
||||
def pbUpdateAnimation
|
||||
if @battlerIndex <= @hallEntry.size
|
||||
if @xmovement[@battlerIndex] != 0 || @ymovement[@battlerIndex] != 0
|
||||
if @movements[@battlerIndex] &&
|
||||
(@movements[@battlerIndex][0] != @movements[@battlerIndex][1] ||
|
||||
@movements[@battlerIndex][2] != @movements[@battlerIndex][3])
|
||||
spriteIndex = (@battlerIndex < @hallEntry.size) ? @battlerIndex : -1
|
||||
moveSprite(spriteIndex)
|
||||
else
|
||||
@@ -404,7 +376,7 @@ class HallOfFame_Scene
|
||||
Graphics.update
|
||||
Input.update
|
||||
pbUpdate
|
||||
break if System.uptime - timer_start >= ENTRY_WAIT_TIME * 2
|
||||
break if System.uptime - timer_start >= WELCOME_WAIT_TIME
|
||||
end
|
||||
setPokemonSpritesOpacity(-1, OPACITY) if !SINGLE_ROW_OF_POKEMON
|
||||
createTrainerBattler
|
||||
|
||||
@@ -17,7 +17,7 @@ class PokemonSystem
|
||||
attr_accessor :textinput
|
||||
|
||||
def initialize
|
||||
@textspeed = 1 # Text speed (0=slow, 1=normal, 2=fast)
|
||||
@textspeed = 1 # Text speed (0=slow, 1=medium, 2=fast, 3=instant)
|
||||
@battlescene = 0 # Battle effects (animations) (0=on, 1=off)
|
||||
@battlestyle = 0 # Battle style (0=switch, 1=set)
|
||||
@sendtoboxes = 0 # Send to Boxes (0=manual, 1=automatic)
|
||||
@@ -422,7 +422,7 @@ MenuHandlers.add(:options_menu, :text_speed, {
|
||||
"name" => _INTL("Text Speed"),
|
||||
"order" => 30,
|
||||
"type" => EnumOption,
|
||||
"parameters" => [_INTL("Slow"), _INTL("Normal"), _INTL("Fast")],
|
||||
"parameters" => [_INTL("Slow"), _INTL("Mid"), _INTL("Fast"), _INTL("Inst")],
|
||||
"description" => _INTL("Choose the speed at which text appears."),
|
||||
"on_select" => proc { |scene| scene.sprites["textbox"].letterbyletter = true },
|
||||
"get_proc" => proc { next $PokemonSystem.textspeed },
|
||||
|
||||
@@ -5,26 +5,20 @@ class PokemonBoxIcon < IconSprite
|
||||
def initialize(pokemon, viewport = nil)
|
||||
super(0, 0, viewport)
|
||||
@pokemon = pokemon
|
||||
@release = SpriteInterpolator.new
|
||||
@startRelease = false
|
||||
@release_timer_start = nil
|
||||
refresh
|
||||
end
|
||||
|
||||
def releasing?
|
||||
return @release.tweening?
|
||||
return !@release_timer_start.nil?
|
||||
end
|
||||
|
||||
def release
|
||||
self.ox = self.src_rect.width / 2 # 32
|
||||
self.ox = self.src_rect.width / 2 # 32
|
||||
self.oy = self.src_rect.height / 2 # 32
|
||||
self.x += self.src_rect.width / 2 # 32
|
||||
self.x += self.src_rect.width / 2 # 32
|
||||
self.y += self.src_rect.height / 2 # 32
|
||||
@release.tween(self,
|
||||
[[SpriteInterpolator::ZOOM_X, 0],
|
||||
[SpriteInterpolator::ZOOM_Y, 0],
|
||||
[SpriteInterpolator::OPACITY, 0]],
|
||||
100)
|
||||
@startRelease = true
|
||||
@release_timer_start = System.uptime
|
||||
end
|
||||
|
||||
def refresh
|
||||
@@ -35,9 +29,17 @@ class PokemonBoxIcon < IconSprite
|
||||
|
||||
def update
|
||||
super
|
||||
@release.update
|
||||
self.color = Color.new(0, 0, 0, 0)
|
||||
dispose if @startRelease && !releasing?
|
||||
if releasing?
|
||||
time_now = System.uptime
|
||||
self.zoom_x = lerp(1.0, 0.0, 1.5, @release_timer_start, System.uptime)
|
||||
self.zoom_y = self.zoom_x
|
||||
self.opacity = lerp(255, 0, 1.5, @release_timer_start, System.uptime)
|
||||
self.color = Color.new(0, 0, 0, 0)
|
||||
if self.opacity == 0
|
||||
@release_timer_start = nil
|
||||
dispose
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -35,11 +35,11 @@ def pbDrawGauge(bitmap, rect, color, value, maxValue)
|
||||
end
|
||||
end
|
||||
|
||||
def calcPoint(x, y, distance, angle) # angle in degrees
|
||||
angle -= (angle / 360.0).floor * 360 # normalize
|
||||
angle = (angle / 360.0) * (2 * Math::PI) # convert to radians
|
||||
angle = -angle % (2 * Math::PI) # normalize radians
|
||||
point = [(Math.cos(angle) * distance), (Math.sin(angle) * distance)]
|
||||
def calcPoint(x, y, distance, angle) # angle in degrees
|
||||
angle -= (angle / 360.0).floor * 360 # normalize
|
||||
angle = (angle / 360.0) * (2 * Math::PI) # convert to radians
|
||||
angle = -angle % (2 * Math::PI) # normalize radians
|
||||
point = [distance * Math.cos(angle), distance * Math.sin(angle)]
|
||||
point[0] += x
|
||||
point[1] += y
|
||||
return point
|
||||
@@ -670,6 +670,9 @@ end
|
||||
#
|
||||
#===============================================================================
|
||||
class DirectFlowDiagram
|
||||
# Distance travelled by a dot in 1 second.
|
||||
DOT_SPEED = 80
|
||||
|
||||
def initialize(viewport = nil)
|
||||
@points = []
|
||||
@angles = []
|
||||
@@ -681,21 +684,25 @@ class DirectFlowDiagram
|
||||
@distance = 96
|
||||
end
|
||||
|
||||
def dispose
|
||||
@points.each { |point| point.dispose }
|
||||
end
|
||||
|
||||
# 0=none, 1=weak, 2=strong
|
||||
def setFlowStrength(strength)
|
||||
@strength = strength
|
||||
end
|
||||
|
||||
def visible=(value)
|
||||
@points.each do |point|
|
||||
point.visible = value
|
||||
end
|
||||
@points.each { |point| point.visible = value }
|
||||
end
|
||||
|
||||
def dispose
|
||||
@points.each do |point|
|
||||
point.dispose
|
||||
end
|
||||
def color=(value)
|
||||
@points.each { |point| point.color = value }
|
||||
end
|
||||
|
||||
def setAngle(angle1)
|
||||
@angle = angle1 - ((angle1 / 360).floor * 360)
|
||||
end
|
||||
|
||||
def ensurePoint(j)
|
||||
@@ -725,18 +732,9 @@ class DirectFlowDiagram
|
||||
end
|
||||
i += (@strength == 2) ? 16 : 32
|
||||
end
|
||||
@offset += (@strength == 2) ? 3 : 2
|
||||
@offset %= @distance
|
||||
end
|
||||
|
||||
def color=(value)
|
||||
@points.each do |point|
|
||||
point.color = value
|
||||
end
|
||||
end
|
||||
|
||||
def setAngle(angle1)
|
||||
@angle = angle1 - ((angle1 / 360).floor * 360)
|
||||
offset_delta = System.uptime * DOT_SPEED
|
||||
offset_delta *= 1.5 if @strength == 2
|
||||
@offset = offset_delta % @distance
|
||||
end
|
||||
end
|
||||
|
||||
@@ -744,6 +742,9 @@ end
|
||||
#
|
||||
#===============================================================================
|
||||
class FlowDiagram
|
||||
# Distance travelled by a dot in 1 second.
|
||||
DOT_SPEED = 80
|
||||
|
||||
def initialize(viewport = nil)
|
||||
@points = []
|
||||
@angles = []
|
||||
@@ -755,21 +756,21 @@ class FlowDiagram
|
||||
@distance = 96
|
||||
end
|
||||
|
||||
# 0=none, 1=weak, 2=strong
|
||||
def setFlowStrength(strength)
|
||||
@strength = strength
|
||||
def dispose
|
||||
@points.each { |point| point.dispose }
|
||||
end
|
||||
|
||||
def visible=(value)
|
||||
@points.each do |point|
|
||||
point.visible = value
|
||||
end
|
||||
@points.each { |point| point.visible = value }
|
||||
end
|
||||
|
||||
def dispose
|
||||
@points.each do |point|
|
||||
point.dispose
|
||||
end
|
||||
def color=(value)
|
||||
@points.each { |point| point.color = value }
|
||||
end
|
||||
|
||||
# 0=none, 1=weak, 2=strong
|
||||
def setFlowStrength(strength)
|
||||
@strength = strength
|
||||
end
|
||||
|
||||
def ensurePoint(j)
|
||||
@@ -781,6 +782,15 @@ class FlowDiagram
|
||||
@points[j].visible = (@strength != 0)
|
||||
end
|
||||
|
||||
def setRange(angle1, angle2)
|
||||
@startAngle = angle1 - ((angle1 / 360).floor * 360)
|
||||
@endAngle = angle2 - ((angle2 / 360).floor * 360)
|
||||
if @startAngle == @endAngle && angle1 != angle2
|
||||
@startAngle = 0
|
||||
@endAngle = 359.99
|
||||
end
|
||||
end
|
||||
|
||||
def withinRange(angle, startAngle, endAngle)
|
||||
if startAngle > endAngle
|
||||
return (angle >= startAngle || angle <= endAngle) &&
|
||||
@@ -808,23 +818,9 @@ class FlowDiagram
|
||||
end
|
||||
i += (@strength == 2) ? 10 : 20
|
||||
end
|
||||
@offset -= (@strength == 2) ? 3 : 2
|
||||
@offset %= (360 * 6)
|
||||
end
|
||||
|
||||
def color=(value)
|
||||
@points.each do |point|
|
||||
point.color = value
|
||||
end
|
||||
end
|
||||
|
||||
def setRange(angle1, angle2)
|
||||
@startAngle = angle1 - ((angle1 / 360).floor * 360)
|
||||
@endAngle = angle2 - ((angle2 / 360).floor * 360)
|
||||
if @startAngle == @endAngle && angle1 != angle2
|
||||
@startAngle = 0
|
||||
@endAngle = 359.99
|
||||
end
|
||||
offset_delta = -System.uptime * DOT_SPEED
|
||||
offset_delta *= 1.5 if @strength == 2
|
||||
@offset = offset_delta % (360 * 6)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -870,7 +866,7 @@ class PurifyChamberSetView < Sprite
|
||||
setcount.times do |i|
|
||||
@flows[i] = FlowDiagram.new(self.viewport) if !@flows[i]
|
||||
angle = 360 - (i * 360 / setcount)
|
||||
angle += 90 # start at 12 not 3 o'clock
|
||||
angle += 90 # start at 12 not 3 o'clock
|
||||
endAngle = angle - (360 / setcount)
|
||||
@flows[i].setRange(endAngle, angle)
|
||||
@flows[i].setFlowStrength(@chamber[@set].affinity(i))
|
||||
@@ -913,7 +909,7 @@ class PurifyChamberSetView < Sprite
|
||||
if pos.nil?
|
||||
@cursor = 0
|
||||
else
|
||||
pos -= (pos / points).floor * points # modulus
|
||||
pos -= (pos / points).floor * points # modulus
|
||||
pos *= 2 if @chamber.setCount(@set) == PurifyChamber::SETSIZE
|
||||
@cursor = pos + 1
|
||||
end
|
||||
|
||||
@@ -216,19 +216,19 @@ class PokemonEntryScene
|
||||
pbPlayDecisionSE
|
||||
break
|
||||
end
|
||||
elsif index == -1 # Insert a space
|
||||
elsif index == -1 # Insert a space
|
||||
if @sprites["entry"].insert(" ")
|
||||
pbPlayDecisionSE
|
||||
else
|
||||
pbPlayBuzzerSE
|
||||
end
|
||||
elsif index == -2 # Change character set
|
||||
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
|
||||
else # Insert given character
|
||||
if @sprites["entry"].insert(@sprites["entry2"].character)
|
||||
pbPlayDecisionSE
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user