rebf-gaiden/Scripts/_MAP_.rb
2025-04-26 17:06:34 -05:00

192 lines
No EOL
7 KiB
Ruby
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

=begin
RGSS3
★ MAPナビゲーション ★
上に立つとプレイヤーの頭上に文字列を描画するイベントを作れます。
● 仕様 ●==========================================================
ナビゲーションとして表示される文字列は、
プレイヤーの下に配置されているイベントの名前です。
====================================================================
● 使い方 ●========================================================
イベントの名前に「#navi」という文字列を含ませてください。「」は不要。
--------------------------------------------------------------------
表示される文字列からこの「#navi」という文字列は取り除かれます。
====================================================================
ver1.00
Last Update : 2011/12/18
12/18 : 新規
ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=end
#===================================
# ●設定箇所
#===================================
module Rokan
module Map_Navi
# ナビゲーションのy座標調整
NAVI_ADJUST_Y = 0
# ナビゲーションの表示を許可するスイッチ番号
NAVI_SWITCH = 5
end
end
#===================================
# ここまで
#===================================
$rsi ||= {}
$rsi["MAPナビゲーション"] = true
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 同位置のイベント取得
#--------------------------------------------------------------------------
def get_event_here
$game_map.events_xy(@x, @y).first
end
end
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :event
end
class Sprite_Navi < Sprite
#--------------------------------------------------------------------------
# ● インクルード Rokan::Map_Navi
#--------------------------------------------------------------------------
include Rokan::Map_Navi
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(nil)
create_bitmep
self.bitmap.font.size = 18
@text = ""
end
#--------------------------------------------------------------------------
# ● 背景グラデーションカラーの取得1
#--------------------------------------------------------------------------
def gradient_color1
Color.new(0, 0, 80, 180)
end
#--------------------------------------------------------------------------
# ● 背景グラデーションカラーの取得2
#--------------------------------------------------------------------------
def gradient_color2
Color.new(0, 0, 80, 20)
end
#--------------------------------------------------------------------------
# ● ビットマップの作成
#--------------------------------------------------------------------------
def create_bitmep
self.bitmap = Bitmap.new(150, 22)
@back_bitmap = Bitmap.new(150, 22)
@back_bitmap.gradient_fill_rect(0, 0, 75, 22, gradient_color2, gradient_color1)
@back_bitmap.gradient_fill_rect(75, 0, 75, 22, gradient_color1, gradient_color2)
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
@back_bitmap.dispose
self.bitmap.dispose
super
end
#--------------------------------------------------------------------------
# ● MAPナビゲーションを表示するか
#--------------------------------------------------------------------------
def put_navigate?(event)
$game_switches[NAVI_SWITCH]&&event&&event.event.name.include?("#navi")
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
if !$game_map.interpreter.running? && !$game_message.visible
event = $game_player.get_event_here
if put_navigate?(event)
update_navi_position
set_navi(event.event.name.delete("#navi"))
else
set_navi("")
end
else
set_navi("")
end
end
#--------------------------------------------------------------------------
# ● ナビゲーション位置の更新
#--------------------------------------------------------------------------
def update_navi_position
self.x = $game_player.screen_x - 75
self.y = $game_player.screen_y - 78 + NAVI_ADJUST_Y
end
#--------------------------------------------------------------------------
# ● ナビ設定
#--------------------------------------------------------------------------
def set_navi(text)
if @text != text
@text = text
self.bitmap.clear
unless @text.empty?
self.bitmap.blt(0, 0, @back_bitmap, @back_bitmap.rect, 180)
self.bitmap.draw_text(0, 1, self.bitmap.width, self.bitmap.height, @text, 1)
end
end
end
end
class Spriteset_Map
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias _navi_initialize initialize
def initialize
create_navi
_navi_initialize
end
#--------------------------------------------------------------------------
# ● ナビの作成
#--------------------------------------------------------------------------
def create_navi
@navi_window = Sprite_Navi.new
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
alias _navi_dispose dispose
def dispose
dispose_navi
_navi_dispose
end
#--------------------------------------------------------------------------
# ● ナビの解放
#--------------------------------------------------------------------------
def dispose_navi
@navi_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias _navi_update update
def update
update_navi
_navi_update
end
#--------------------------------------------------------------------------
# ● ナビの更新
#--------------------------------------------------------------------------
def update_navi
@navi_window.update
end
end