#============================================================================== # ■ XP-RGSS-70 マップビュー [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # ・マップ全体を見たり、ミニマップを表示することができます。 #------------------------------------------------------------------------------ # ● ミニマップの表示ON/OFF(イベント) # minimap(flag) # flag : true…表示、 false…非表示 #------------------------------------------------------------------------------ # ● ミニマップの再描画 # refresh_minimap #------------------------------------------------------------------------------ # ● ミニマップ表示状態 # $game_system.miniview #------------------------------------------------------------------------------ # ● フルビュー表示シーンへの切り替え # $scene = Scene_MapView.new(menu_index, map_id) # menu_index : メニューIndex(省略時はマップに戻る) # map_id : マップID(省略時は現在マップ) #------------------------------------------------------------------------------ # ● 注意点 # ミニマップ表示をさせるためにTilemapクラスとは仕様を変えてます。 # パノラマ、フォグは表示されません # ● イベントの注意点 # ミニマップ表示内のイベント表示、オートタイル表示は更新されません。 # ミニマップでは移動するイベントは表示させないようにすることを推奨します。 # また、1個の高さが64以上のものはタイルのプライオリティ通りには描画されません。 # (最前列に表示するなどして対処してください) # ● マップの注意点 # 広いマップでは表示開始が遅くなるので注意してください… # (広すぎる場合はBitmap生成に失敗します) # あと、それなりにメモリも食います。 #============================================================================== module MapView #---------------------------------------------------------------------------- # ミニマップ設定 #---------------------------------------------------------------------------- # ミニマップを表示する USE_MINIMAP = true # 表示制限を使う # true : マップ名、イベント名に[m]が入っている場合のみ表示 # false : 全マップ、全イベントで表示有効 M_MAP_FLT_MAP = false # マップ用 M_MAP_FLT_EV = true # イベント用 # ボタン(プレイヤー操作)による表示ON/OFFをする USE_M_MAP_DIRECT = true # ミニマップ表示切り替えボタン M_MAP_D_KEY = Input::L # ズーム倍率(0は禁止) M_MAP_ZOOM = 0.2 # ミニマップの不透明度 M_MAP_OP = 180 # ミニマップ裏に黒背景を表示させる(見やすくするための措置) M_MAP_BACK = true # ミニマップ裏の黒背景の不透明度 M_MAP_BACK_OP = 200 # プレイヤー位置の表示色 M_MAP_CH_CLR = Color.new(200, 0, 0, 255) # 表示位置 # 1:右下 … Rect.new( N, 480-H-N, W, H) # 3:左下 … Rect.new(640-W-N, 480-H-N, W, H) # 7:右上 … Rect.new( N, N, W, H) # 9:左上 … Rect.new(640-W-N, N, W, H) M_MAP_FIT = 9 # 表示サイズ # _N:画面端からの位置, _W:矩形幅, _H:矩形高さ M_MAP_RECT_N = 10 M_MAP_RECT_W = 200 M_MAP_RECT_H = 150 #---------------------------------------------------------------------------- # フルビュー設定 #---------------------------------------------------------------------------- # ボタン一発呼び出しによるフルビュー表示を使う # (falseでもシーン切り替えをすればフルビュー表示可能) USE_F_MAP_DIRECT = true # 呼び出しボタン F_MAP_D_KEY = Input::R # 表示制限を使う # true : マップ名、イベント名に[m]が入っている場合のみ表示 # false : 全マップ、全イベントで表示有効 F_MAP_FLT_MAP = false # マップ用 F_MAP_FLT_EV = false # イベント用 # ズーム倍率(0:自動調整、0より上:固定倍率表示) F_MAP_ZOOM = 0.5 # フル表示切り替えを行う(F_MAP_ZOOM != 0のとき有効) # ※決定ボタンで切り替え F_MAP_CHG_FL = true # 上下キーによるズームイン・ズームアウトを行う F_MAP_ZOOM_IO = true # マップ名を表示する F_MAP_NAME = true # ツリー最上段のマップ名を表示する F_MAP_NAME_TOP = true # マップ名表示形式(true:Window表示, false:Sprite表示) F_MAP_NAME_WIN = true # Sprite表示時の背景画像(Graphics/Windowskin) F_MAP_NAME_BG = "mapname_back.png" # マップ名表示位置 # 1:右下 … Rect.new( N, 480-H-M, W, H) # 3:左下 … Rect.new(640-W-N, 480-H-M, W, H) # 7:右上 … Rect.new( N, M, W, H) # 9:左上 … Rect.new(640-W-N, M, W, H) F_MAP_FIT = 3 # マップ名表示サイズ ※Sprite時は_W, _Hは無効(背景画像のサイズを使う) # _N:画面端からの位置(X), _N:画面端からの位置(Y), _W:矩形幅, _H:矩形高さ F_MAP_RECT_N = 0 F_MAP_RECT_M = 10 F_MAP_RECT_W = 260 F_MAP_RECT_H = 64 # オートタイルのアニメーション有り # ※trueにすると一部のマップで処理負荷が高くなります。 F_MAP_AT = false ################################################################################ end #============================================================================== # ■ MapView #============================================================================== module MapView #-------------------------------------------------------------------------- # ● 表示できる? #-------------------------------------------------------------------------- def self.viewable?(map_id) mapInfo = load_data(sprintf("Data/MapInfos.rxdata")) return (mapInfo[map_id].name.split("[m]").size != 1) end def self.c_viewable? return viewable?($game_map.map_id) end def self.fc_visible? return true unless F_MAP_FLT_EV return c_viewable? end def self.mc_visible? return true unless M_MAP_FLT_EV return c_viewable? end #-------------------------------------------------------------------------- # ● マップ名表示クラス #-------------------------------------------------------------------------- def self.map_name_class(map_id) return F_MAP_NAME_WIN ? Window_MapViewName.new(map_id) : Sprite_MapViewName.new(map_id) end #-------------------------------------------------------------------------- # ● マップ名取得 #-------------------------------------------------------------------------- def self.map_name(mapInfo, mapId) if F_MAP_NAME_TOP return mapInfo[top_map_id(mapInfo, mapId)].name.delete("[m]") else return mapInfo[mapId].name.delete("[m]") end end #-------------------------------------------------------------------------- # ● 親マップID取得 #-------------------------------------------------------------------------- def self.top_map_id(mapInfo, mapId) loop do p_id = mapInfo[mapId].parent_id return mapId if p_id == 0 mapId= p_id end end end #============================================================================== # ■ MapViewSet : 設定クラス #============================================================================== class MapViewSet attr_accessor :map_id attr_accessor :mini attr_accessor :rect attr_accessor :opacity attr_accessor :z def initialize @map_id = $game_map.map_id @mini = false @rect = Rect.new(0,0,640,480) @opacity = 255 @z = 100 end end #============================================================================== # ■ MapViewMini : ミニマップ用設定クラス #============================================================================== class MapViewMini < MapViewSet def initialize super @mini = true n = MapView::M_MAP_RECT_N w = MapView::M_MAP_RECT_W h = MapView::M_MAP_RECT_H case MapView::M_MAP_FIT # 表示位置をあわせる when 1; @rect = Rect.new( n, 480-h-n, w, h) when 3; @rect = Rect.new(640-w-n, 480-h-n, w, h) when 7; @rect = Rect.new( n, n, w, h) when 9; @rect = Rect.new(640-w-n, n, w, h) end @opacity = MapView::M_MAP_OP @z = 1000 end end #============================================================================== # ■ MapViewFull : フルビュー用設定クラス #============================================================================== class MapViewFull < MapViewSet def initialize(map_id=-1) super() @map_id = map_id if map_id >= 0 end end #============================================================================== # ■ Game_Event #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● マップ表示あり #-------------------------------------------------------------------------- def enable_mapview?(mini=false) return true if mini and !MapView::M_MAP_FLT_EV return true if !mini and !MapView::F_MAP_FLT_EV return (@event.name.split("[m]").size != 1) end end #============================================================================== # ■ Game_Character #============================================================================== class Game_Character attr_reader :always_on_top # 最前列表示 end