Moving Windows
Authors: Fantasist
Version: 1.0
Type: Graphical Enhancement
Key Term: Misc System
IntroductionMoves a window with a 'decelerating' effect (think STCMS)
Features
- Moves windows with a 'decelerating' effect rather than plain motion
- Can handle movement in any direction, just give the window a destination and it will move there
ScreenshotsN/A
DemoPaste this in a new slot just below Scene_Menu and you have your demo (after installing the script of course)
class Scene_Menu
def main
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = 'Status'
s5 = 'Save'
s6 = 'End Game'
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
@command_window.y = -224
if $game_party.actors.size == 0
(0..3).each {|i| @command_window.disable_item(i)}
end
@command_window.disable_item(4) if $game_system.save_disabled
# Make play time window
@playtime_window = Window_PlayTime.new
@playtime_window.x = -160
@playtime_window.y = 224
# Make steps window
@steps_window = Window_Steps.new
@steps_window.x = -160
@steps_window.y = 320
# Make gold window
@gold_window = Window_Gold.new
@gold_window.x = -160
@gold_window.y = 416
# Make status window
@status_window = Window_MenuStatus.new
@status_window.x = 640
@status_window.y = 0
# Move the windows
@command_window.move(0, 0)
@playtime_window.move(0, 224)
@steps_window.move(0, 320)
@gold_window.move(0, 416)
@status_window.move(160, 0)
Graphics.transition
loop do
Graphics.update
Input.update
update
break if $scene != self
end
Graphics.freeze
@command_window.dispose
@playtime_window.dispose
@steps_window.dispose
@gold_window.dispose
@status_window.dispose
end
alias moving_wins_test_menu_upd update
def update
@command_window.move(0, 0)
@playtime_window.move(0, 224)
@steps_window.move(0, 320)
@gold_window.move(0, 416)
@status_window.move(160, 0)
moving_wins_test_menu_upd
end
end
ScriptPaste in a new script slot above main.
#==============================================================================
# ** Moving Windows
#------------------------------------------------------------------------------
# by Fantasist
# Version: 1.0
# Date: 14-Sep-2009
#------------------------------------------------------------------------------
# Version History:
#
# 1.0 - First version
#------------------------------------------------------------------------------
# Description:
#
# This script adds moving functionality to windows.
#------------------------------------------------------------------------------
# Compatibility:
#
# Might not be compatible with other similar scripts.
#------------------------------------------------------------------------------
# Instructions:
#
# Paste this script below "Window_Base" and above "Main".
#
# The syntax for moving a window is:
#
# my_window.move(dest_x, dest_y[, move_speed])
#
# where
# dest_x: Destination X coordinate
# dest_y: Destination Y coordinate
# move_speed (optional): Speed divider. Larger numbers means faster.
#
# The attributes "dest_x", "dest_y" and "move_speed" can be used directly
# without using the "move" function all the time.
#
# The "moving?" function returns "true" if the windows are in motion. This
# can be used as an event in exotic systems of all sorts :)
#------------------------------------------------------------------------------
# Issues:
#
# None known.
#------------------------------------------------------------------------------
# Credits and Thanks:
#
# Fantasist - For making this.
#------------------------------------------------------------------------------
# Notes:
#
# If you have any questions, suggestions or comments, you can find me at:
#
# - www.chaos-project.com
# - www.quantumcore.forumotion.com
#
# Enjoy ^_^
#==============================================================================
#==============================================================================
# ** Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Attributes
#--------------------------------------------------------------------------
attr_accessor :dest_x
attr_accessor :dest_y
attr_accessor :move_speed
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias move_wins_winbase_init initialize
def initialize(x, y, width, height)
move_wins_winbase_init(x, y, width, height)
self.dest_x = x
self.dest_y = y
self.move_speed = 3
end
#--------------------------------------------------------------------------
# * Moving?
#--------------------------------------------------------------------------
def moving?
return (self.x != self.dest_x || self.y != self.dest_y)
end
#--------------------------------------------------------------------------
# * Move
#--------------------------------------------------------------------------
def move(dest_x, dest_y, move_speed = nil)
self.dest_x = dest_x
self.dest_y = dest_y
self.move_speed = move_speed unless move_speed.nil?
end
#--------------------------------------------------------------------------
# * Move Wins
#--------------------------------------------------------------------------
def move_wins
dx = (self.dest_x - self.x).to_f / self.move_speed
dy = (self.dest_y - self.y).to_f / self.move_speed
# Decimal correction
dx = self.dest_x > self.x ? dx.ceil : dx.floor
dy = self.dest_y > self.y ? dy.ceil : dy.floor
# Moving
self.x += dx
self.y += dy
end
#--------------------------------------------------------------------------
# * x=
#--------------------------------------------------------------------------
def x=(val)
self.dest_x = val unless moving?
super(val)
end
#--------------------------------------------------------------------------
# * y=
#--------------------------------------------------------------------------
def y=(val)
self.dest_y = val unless moving?
super(val)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias move_wins_winbase_update update
def update
move_wins_winbase_update
move_wins if moving?
end
end
Alpha 1 version (for reference): ShowHide
#==============================================================================
# Moving windows (Alpha 2)
# by Fantasist
#------------------------------------------------------------------------------
# This adds the 'move' function to windows. Syntax is
# @window.move(dest_x, dest_y)
# where
# @window :The window you want to move
# dest_x :Destination x coordinate
# dest_y :Destination y coordinate
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias moving_win_base_init initialize
def initialize(x, y, w, h)
moving_win_base_init(x, y, w, h)
@dest_x, @dest_y = x, y
@tot_x = @tot_y = 0
end
#--------------------------------------------------------------------------
# * moving? - checks if the window needs moving
#--------------------------------------------------------------------------
def moving?
return self.x != @dest_x || self.y != @dest_y
end
#--------------------------------------------------------------------------
# * Move - prepares variables and sets off the moving process
#--------------------------------------------------------------------------
def move(dest_x, dest_y)
@dest_x = dest_x
@dest_y = dest_y
@tot_x = (dest_x - self.x).abs
@tot_y = (dest_y - self.y).abs
end
#--------------------------------------------------------------------------
# Move Windows - the actual processing of movement
#--------------------------------------------------------------------------
def move_wins
x = self.x
y = self.y
dist_x = [((@dest_x-x).abs/3.0).ceil, (@tot_x/3.0).ceil].min
dist_y = [((@dest_y-y).abs/3.0).ceil, (@tot_y/3.0).ceil].min
@dest_x > x ? self.x += dist_x : self.x -= dist_x
@dest_y > y ? self.y += dist_y : self.y -= dist_y
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias upd_win_base_move update
def update
upd_win_base_move
move_wins if moving?
end
end
InstructionsPaste this script below "Window_Base" and above "Main".
The syntax for moving a window is:
my_window.move(dest_x, dest_y[, move_speed])
where
dest_x: Destination X coordinate
dest_y: Destination Y coordinate
move_speed (optional): Speed divider. Larger numbers means faster.
The attributes "dest_x", "dest_y" and "move_speed" can be used directly without using the "move" function all the time.
The "moving?" function returns "true" if the windows are in motion. This can be used as an event in exotic systems of all sorts
CompatibilityMight not be compatible with other similar scripts.
Credits and ThanksCredit Fantasist (me) for making it.
Author's NotesIf you have any questions, suggestions or comments, you can find me at:
-
www.chaos-project.com -
www.quantumcore.forumotion.comEnjoy ^_^