192 lines
No EOL
7 KiB
Ruby
192 lines
No EOL
7 KiB
Ruby
=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 |