타이틀/게임오버

[VX ACE]타이틀 화면에 맵을 표시하는 스크립트

by 스리아씨 posted Dec 07, 2013
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

shot1.pngshot2.pngshot4.png

#==============================================================================
#   ** Map as Title Screen v1.1
#   Author: Acezon
#   Date: 16 June 2013
#------------------------------------------------------------------------------
#   Version 1.1
#   - Merged with the Yami TD compatible script
#   - Now compatible with Khas's Awesome Light Effects script
#   Version 1.0
#   - Initial Release
#------------------------------------------------------------------------------
#   Just credit me. Free to use for commercial/non-commercial games.
#==============================================================================

$imported = {} if $imported.nil?
$imported["Acezon-MapTitleScreen"] = true

#==============================================================================
# ** START Configuration
#==============================================================================
module Config
  # The id of the map you want the title to be displayed.
  Starting_Map_ID = 1

  # Character's position (though he/she is invisible)
  # This feature is useful for large maps.
  X_Pos = 7
  Y_Pos = 6
end
#==============================================================================
# ** END Configuration
#==============================================================================

#==============================================================================
# ** Scene_Title
#==============================================================================
class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # * Start
  #--------------------------------------------------------------------------
  def start
    SceneManager.call(Scene_MapTitle)
  end
  #--------------------------------------------------------------------------
  # * Terminate
  #--------------------------------------------------------------------------
  def terminate
    SceneManager.snapshot_for_background
    Graphics.fadeout(Graphics.frame_rate)
  end
end

#==============================================================================
# ** Scene_MapTitle
#==============================================================================
class Scene_MapTitle < Scene_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor   :character_name           # character graphic filename
  attr_accessor   :character_index          # character graphic index
  #--------------------------------------------------------------------------
  # * Start
  #--------------------------------------------------------------------------
  def start
    DataManager.create_game_objects
    $game_party.setup_starting_members
    $game_map.setup(Config::Starting_Map_ID)
    $game_player.moveto(Config::X_Pos, Config::Y_Pos)
    $game_player.followers.visible = false
    $game_player.refresh
    $game_player.make_encounter_count

    @character_name = $game_player.character_name
    @character_index = $game_player.character_index
    $game_player.set_graphic('', 0)

    $game_system.menu_disabled = true
    Graphics.frame_count = 0

    super
    create_foreground
    create_background
    create_command_window
    play_title_music
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    # Yami's Title Decoration Compatibility Scriptlet
    if $imported["YSE-TD-VerticalCommand"]
      @command_sprite.each { |sprite|
        sprite.update
        @command_window.index == sprite.id ? sprite.activate : sprite.deactivate
      }
    end

    update_basic
    @spriteset.update
    $game_map.update(true)
    update_scene if scene_change_ok?
  end
  #--------------------------------------------------------------------------
  # * Determine if Debug Call by F9 key
  #--------------------------------------------------------------------------
  def update_call_debug
    # do nothing
  end
  #--------------------------------------------------------------------------
  # * Get Transition Speed
  #--------------------------------------------------------------------------
  def transition_speed
    return 20
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_background
    dispose_foreground
    dispose_command_sprite if $imported["YSE-TD-VerticalCommand"]
    SceneManager.snapshot_for_background
  end
  #--------------------------------------------------------------------------
  # * Create Background
  #--------------------------------------------------------------------------
  def create_background
    @sprite1 = Sprite.new
    @sprite1.bitmap = Cache.title1($data_system.title1_name)
    @sprite2 = Sprite.new
    @sprite2.bitmap = Cache.title2($data_system.title2_name)
    center_sprite(@sprite1)
    center_sprite(@sprite2)
  end
  #--------------------------------------------------------------------------
  # * Create Foreground
  #--------------------------------------------------------------------------
  def create_foreground
    @foreground_sprite = Sprite.new
    @foreground_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @foreground_sprite.z = 100
    draw_game_title if $data_system.opt_draw_title
  end
  #--------------------------------------------------------------------------
  # * Draw Game Title
  #--------------------------------------------------------------------------
  def draw_game_title
    @foreground_sprite.bitmap.font.size = 48
    rect = Rect.new(0, 0, Graphics.width, Graphics.height / 2)
    @foreground_sprite.bitmap.draw_text(rect, $data_system.game_title, 1)
  end
  #--------------------------------------------------------------------------
  # * Free Background
  #--------------------------------------------------------------------------
  def dispose_background
    @sprite1.bitmap.dispose
    @sprite1.dispose
    @sprite2.bitmap.dispose
    @sprite2.dispose
  end
  #--------------------------------------------------------------------------
  # * Free Foreground
  #--------------------------------------------------------------------------
  def dispose_foreground
    @foreground_sprite.bitmap.dispose
    @foreground_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # * Move Sprite to Screen Center
  #--------------------------------------------------------------------------
  def center_sprite(sprite)
    sprite.ox = sprite.bitmap.width / 2
    sprite.oy = sprite.bitmap.height / 2
    sprite.x = Graphics.width / 2
    sprite.y = Graphics.height / 2
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_TitleCommand.new
    @command_window.set_handler(:new_game, method(:command_new_game))
    @command_window.set_handler(:continue, method(:command_continue))
    @command_window.set_handler(:shutdown, method(:command_shutdown))

    if $imported["YSE-TD-VerticalCommand"]
      @command_window.y = Graphics.height
      @command_sprite = []
      i = 0
      @command_window.symbol_list.each { |symbol|
        sprite = Sprite_TitleCommand.new(symbol, i); i += 1
        @command_sprite.push(sprite)
      }
      @command_sprite.each { |sprite| sprite.show }
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose Command Sprites
  #--------------------------------------------------------------------------
  def dispose_command_sprite
    @command_sprite.each { |sprite| sprite.dispose }
  end
  #--------------------------------------------------------------------------
  # * Close Command Window
  #--------------------------------------------------------------------------
  def close_command_window
    @command_window.close
    update until @command_window.close?
  end
  #--------------------------------------------------------------------------
  # * [New Game] Command
  #--------------------------------------------------------------------------
  def command_new_game
    close_command_window
    fadeout_all
    $game_system.menu_disabled = false
    $game_map.setup($data_system.start_map_id)
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    $game_player.followers.visible = true
    $game_player.refresh
    $game_player.set_graphic(@character_name, @character_index)
    $game_map.autoplay
    SceneManager.goto(Scene_Map)
  end
  #--------------------------------------------------------------------------
  # * [Continue] Command
  #--------------------------------------------------------------------------
  def command_continue
    close_command_window
    fadeout_all
    SceneManager.call(Scene_Load)
  end
  #--------------------------------------------------------------------------
  # * [Shut Down] Command
  #--------------------------------------------------------------------------
  def command_shutdown
    close_command_window
    fadeout_all
    SceneManager.exit
  end
  #--------------------------------------------------------------------------
  # * Play Title Screen Music
  #--------------------------------------------------------------------------
  def play_title_music
    $data_system.title_bgm.play
    RPG::BGS.stop
    RPG::ME.stop
  end
end


좋지 아니한가 ↗
출처 http://thequirkyproton.wordpress.com/2013/03/10/map-as-title-screen/