#◆◇◆◇◆ 明かりスクリプトVXA ver 1.00 ◇◆◇◆◇ # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin ※ 導入場所の注意 すべてモジュールで管理されていますので、 マスタースクリプトより下であれば導入場所は関係ありません。 ■ 更新履歴 ○ ver 1.00(2012/01/16) 公開 ■ 説明 イベントに明かりを設定出来るようにします。 明かりは画面の色調よりも全面に出るため、 明かりの範囲内は明るく表示されます。 ◆ 設定方法及び仕様 設定にはイベントの内容に 「どこでもいいので」注釈を置きます。 そして、注釈の内容を ◆ 明かり設定1 といったように"明かり設定の後"に"半角の数字"を記入してください。 記入した数字が、明かりデータの管理IDとなります。 明かりはイベントの不透明度と同期して強さが変化します。 イベントが完全に透明になれば明かりも完全に消えますので、 明かりを個別に消したい場合は、 移動ルートなどで対象イベントの不透明度を0にしてください。 また、新しいページに注釈で設定されていない場合も明かりは消えます。 ◆ 画像の規格 明かりに使用する画像の規格は任意です。 ただし、1コマの規格は「画像の全体の横幅を4で割った値」となります。 つまり、640*160ピクセルの画像の場合、 1コマの規格は160*160となります。 画像は全て左から順に 0→1→2→3→0 と4コマループします。 明かり用の画像はピクチャーフォルダにインポートしてください。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # 明かりスクリプトVXAを有効化 ( true で有効 / false で無効 ) RGSS["明かりスクリプトVXA"] = true end # 明かりスクリプトVXAが有効な場合に以降の処理を実行する if MINTO::RGSS["明かりスクリプトVXA"] == true then #============================================================================== # ☆ カスタマイズ #------------------------------------------------------------------------------ # 機能のカスタマイズをここで行います。 #============================================================================== module MINTO #-------------------------------------------------------------------------- # ● 明かりのセット # belong_id : 明かりの管理ID #-------------------------------------------------------------------------- def self.light_set(belong_id) # 明かりの管理IDに応じて分岐 case belong_id when 1 then # data = [画像ファイル名, Y座標修正値, 大きさ(通常2。 小数点可)] data = ["stove", 0, 6] when 2 then data = ["Light_Sprite02", -16, 2] # それ以外の名前の場合 else data = ["", 0, 1] end # 設定データを返す return data.dup end end #============================================================================== # ☆ Add_Light_Sprite #------------------------------------------------------------------------------ # Sprite_Characterクラスに機能を追加するモジュールです。 # 明かりの機能を追加します。 #============================================================================== module Add_Light_Sprite #-------------------------------------------------------------------------- # ● 解放(明かり) #-------------------------------------------------------------------------- def dispose_light # 明かりが存在する場合 if @light_sprite != nil then # 明かりを解放 @light_sprite.bitmap.dispose @light_sprite.dispose @light_sprite = nil end end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose # 明かりを解放 dispose_light # 明かり可視フラグをクリア @character.light_visible = false # 明かり作成フラグをクリア @character.call_light = false # 最終ページ情報を解放 @character.dispose_data # スーパークラスの処理に移行 super end #-------------------------------------------------------------------------- # ● 明かりの設定 # id : 明かりのID #-------------------------------------------------------------------------- def light_set(id) # 明かりを解放 dispose_light # 明かりを作成 @light_sprite = Light_Sprite.new(self, id) end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # スーパークラスの処理に移行 super # キャラクターが無効な場合 if @character == nil then # メソッドを返す return end # 明かりデータを取得 @character.get_light_data # 明かり可視フラグが無効な場合 if @character.light_visible != true then # 明かりを解放 dispose_light # メソッドを返す return end # 明かり作成フラグが有効な場合 if @character.call_light == true then # 明かり作成フラグをオフにする @character.call_light = false # 明かりを作成 light_set(@character.light_id) end # 明かりが無効な場合 if @light_sprite == nil then # メソッドを返す return end # 明かりを更新 @light_sprite.update end end #============================================================================== # ☆ Add_Game_Event_Light #------------------------------------------------------------------------------ # Game_Eventクラスに機能を追加するモジュールです。 # 明かりの機能を追加します。 #============================================================================== module Add_Game_Event_Light #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize # スーパークラスの処理に移行 super @last_page_light = {} end #-------------------------------------------------------------------------- # ● データのリセット #-------------------------------------------------------------------------- def self.reset @last_page_light = {} end #-------------------------------------------------------------------------- # ● データ解放 #-------------------------------------------------------------------------- def dispose_data # 無効なデータの場合 if @last_page_light == nil then # データを初期化 @last_page_light = {} # メソッドを返す return end # 自身のデータをクリア @last_page_light[self] = nil end #-------------------------------------------------------------------------- # ● 拡張データの取得 #-------------------------------------------------------------------------- def get_light_data # 無効なデータの場合 if @last_page_light == nil then # データを初期化 @last_page_light = {} end # イベントページが更新されていない場合 if @last_page_light[self] == @page then # データ未定義の場合 if self.light_visible == nil then # 自身のデータをクリア @last_page_light[self] = nil end # メソッドを返す return end # 明かり可視フラグをクリア self.light_visible = false # 明かり作成フラグをクリア self.call_light = false # 最新のイベントページを記憶 @last_page_light[self] = @page # イベントページが有効な場合 if @page != nil then # イベントページに内容が存在する場合 if @page.list != nil then # ループ処理(ページ内容) (0...@page.list.size).each do |i| # 注釈の場合 if @page.list[i].code == 108 or @page.list[i].code == 408 then # 注釈内ループ処理 (0...@page.list[i].parameters.size).each do |id| # 注釈のコードを取得 code = @page.list[i].parameters[id].dup.to_s code.gsub!(/明かり設定/) {""} # 明かりのIDを取得 light_id = code.to_i # 明かりのIDが有効な場合 if light_id >= 1 then # 明かりIDを記憶 self.light_id = light_id # 明かり可視フラグをオンにする self.light_visible = true # 明かりを作成フラグをオンにする self.call_light = true # メソッドを返す return end end end end end end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # スーパークラスの処理に移行 super end end #============================================================================== # ■ Light_Sprite #------------------------------------------------------------------------------ # マップでの明かりを管理するスプライトクラスです。 #============================================================================== class Light_Sprite < Sprite #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :name # 明かりに使う画像 #-------------------------------------------------------------------------- # ● オブジェクト初期化 # character : 対象キャラクター # event_name : イベントの名前 #-------------------------------------------------------------------------- def initialize(character, event_name) # スーパークラスを実行 super() # 明かりのデータを取得 @data = MINTO.light_set(event_name) # ファイルネームを読み込む @name = @data[0].dup # スプライトを保存 @character = character # 明かり用のビットマップを作成 self.bitmap = Cache.picture(@name).dup @width = self.bitmap.width / 4 @height = self.bitmap.height # 基本座標をセット self.x = @character.x self.y = @character.y self.z = 999 # 転移座標をセット self.ox = @width / 2 self.oy = @height / 2 # 透明でない限りは明かりを表示させる self.visible = (@character.opacity != 0) # 明かりの不透明度を設定 self.opacity = (@character.opacity / 2) + 32 # 明かりを加算表示にする self.blend_type = 1 # 明かりをズームさせる self.zoom = @data[2] # ブリンクカウントを初期化 @blink_count = 0 # フレーム更新 update end #-------------------------------------------------------------------------- # ● データのセット # name : 設定データの名前 #-------------------------------------------------------------------------- def set_data(name) # 設定データを更新 @data = MINTO.light_set(name) # 明かり用のビットマップを再作成 self.bitmap = Cache.picture(@data[0]).dup self.oy = @data[1] self.zoom = @data[2] end #-------------------------------------------------------------------------- # ● ズーム # n : ズーム倍率 #-------------------------------------------------------------------------- def zoom=(n) self.zoom_x = n self.zoom_y = n end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose # スーパークラスを実行 super end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super # 基本情報を更新 self.x = @character.character.screen_x self.y = @character.character.screen_y + @data[1] # 透明でない限りは明かりを表示させる self.visible = (@character.character.opacity != 0) # 明かりの不透明度を設定 self.opacity = (@character.character.opacity / 2) + 32 # 点滅カウントを更新 @blink_count = (@blink_count + 1) % 48 # 転送元の矩形を設定 case @blink_count when 0...12 then self.src_rect.set(@width * 0, 0, @width, @height) when 12...24 then self.src_rect.set(@width * 1, 0, @width, @height) when 24...36 then self.src_rect.set(@width * 2, 0, @width, @height) else self.src_rect.set(@width * 3, 0, @width, @height) end end end #============================================================================== # ■ Game_Event #------------------------------------------------------------------------------ # イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理 # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。 #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(Add_Game_Event_Light) # 明かり管理モジュール #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :event # イベント attr_accessor :light_id # 明かりのID attr_accessor :light_visible # 明かり可視フラグ attr_accessor :call_light # 明かり実行フラグ end #============================================================================== # ■ Game_Vehicle #------------------------------------------------------------------------------ # 乗り物を扱うクラスです。このクラスは Game_Map クラスの内部で使用されます。 # 現在のマップに乗り物がないときは、マップ座標 (-1,-1) に設定されます。 #============================================================================== class Game_Vehicle < Game_Character #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(Add_Game_Event_Light) # 明かり管理モジュール #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :event # イベント attr_accessor :light_id # 明かりのID attr_accessor :light_visible # 明かり可視フラグ attr_accessor :call_light # 明かり実行フラグ end #============================================================================== # ■ Game_Player #------------------------------------------------------------------------------ # プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。 #============================================================================== class Game_Player < Game_Character #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(Add_Game_Event_Light) # 明かり管理モジュール #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :event # イベント attr_accessor :light_id # 明かりのID attr_accessor :light_visible # 明かり可視フラグ attr_accessor :call_light # 明かり実行フラグ end #============================================================================== # ■ Game_Follower #------------------------------------------------------------------------------ # フォロワーを扱うクラスです。フォロワーとは、隊列歩行で表示する、先頭以外の # 仲間キャラクターのことです。Game_Followers クラスの内部で参照されます。 #============================================================================== class Game_Follower < Game_Character #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(Add_Game_Event_Light) # 明かり管理モジュール #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :event # イベント attr_accessor :light_id # 明かりのID attr_accessor :light_visible # 明かり可視フラグ attr_accessor :call_light # 明かり実行フラグ end #============================================================================== # ■ Game_Subplayer #------------------------------------------------------------------------------ # サブプレイヤーを扱うクラスです。 # このクラスのインスタンスは $game_subplayer1~3で参照されます。 # Game_Playerクラスを元に作っています #============================================================================== class Game_Subplayer < Game_Character #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(Add_Game_Event_Light) # 明かり管理モジュール #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :event # イベント attr_accessor :light_id # 明かりのID attr_accessor :light_visible # 明かり可視フラグ attr_accessor :call_light # 明かり実行フラグ end #============================================================================== # ■ Game_Interpreter #------------------------------------------------------------------------------ # イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、 # Game_Troop クラス、Game_Event クラスの内部で使用されます。 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● 場所移動 #-------------------------------------------------------------------------- alias :command_201_Light_Sprite :command_201 def command_201 # 元の処理を実行 bool = command_201_Light_Sprite # 明かりのデータを初期化 Add_Game_Event_Light.reset # フラグを返す return bool end end #============================================================================== # ■ Sprite_Character #------------------------------------------------------------------------------ # キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを # 監視し、スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Character < Sprite_Base #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(Add_Light_Sprite) # 明かりモジュール end end
#◆◇◆◇◆ マスタースクリプトVXA ver 1.00 ◇◆◇◆◇ # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin ■ 更新履歴 ○ Ver 1.00(2012/01/16) 公開 ■ 説明 全てのみんとRGSSより上に導入してください。 (基本的にシステム上部に導入してください) これがないと全てのみんとRGSS3は動作いたしません。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # VXRGSSの導入環境ハッシュを初期化 RGSS = {} end #============================================================================== # ☆ MINTO_System #------------------------------------------------------------------------------ # 様々な機能を扱うシステムモジュールです。 #============================================================================== module MINTO_System #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start @tone_rate = 0 # シーンスプライトを作成 @scene_sprite = Sprite_Base.new # スーパークラスを実行 super end #-------------------------------------------------------------------------- # ● トランジション実行 #-------------------------------------------------------------------------- def perform_transition # スーパークラスを実行 super end #-------------------------------------------------------------------------- # ● 開始後処理 #-------------------------------------------------------------------------- def post_start # スーパークラスを実行 super end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # シーンスプライトを更新 @scene_sprite.update # スーパークラスを実行 super end #-------------------------------------------------------------------------- # ● 終了前処理 #-------------------------------------------------------------------------- def pre_terminate # スーパークラスを実行 super end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate # シーンスプライトを解放 @scene_sprite.bitmap.dispose if @scene_sprite.bitmap @scene_sprite.dispose @scene_sprite = nil # スーパークラスを実行 super end end # ☆ 開発用メソッド追加 ☆ #============================================================================== # ■ Scene_Base #------------------------------------------------------------------------------ # ゲーム中のすべてのシーンのスーパークラスです。 #============================================================================== class Scene_Base #-------------------------------------------------------------------------- # ● 暗転モード処理 #-------------------------------------------------------------------------- def blackout(type = 0, power = 10, max = 100, sprite = nil) @tone_power = power @tone_type = type @tone_max = max update_blackout(sprite) end #-------------------------------------------------------------------------- # ● フレーム更新 (暗転処理) #-------------------------------------------------------------------------- def update_blackout(sprite) case @tone_type when 0 if @tone_rate != -@tone_max @tone_rate = [@tone_rate - @tone_power, -@tone_max].max sprite.tone.red = @tone_rate sprite.tone.green = @tone_rate sprite.tone.blue = @tone_rate end when 1 if @tone_rate != 0 @tone_rate = [@tone_rate + @tone_power, 0].min sprite.tone.red = @tone_rate sprite.tone.green = @tone_rate sprite.tone.blue = @tone_rate end end end end #============================================================================== # ■ Object #------------------------------------------------------------------------------ # 全てのクラスのスーパークラス。オブジェクトの一般的な振舞いを定義します。 #============================================================================== class Object #-------------------------------------------------------------------------- # ● 情報の出力 #-------------------------------------------------------------------------- def p2(info) # pメソッドを疑似的に前の仕様に戻す msgbox(info) end #-------------------------------------------------------------------------- # ● 深い複製の作成 #-------------------------------------------------------------------------- def dec # Marshalもモジュールを経由して、完全な複製を作成 return Marshal.load(Marshal.dump(self)) end end #============================================================================== # ■ NilClass #------------------------------------------------------------------------------ # nil のクラス。nil は NilClass クラスの唯一のインスタンスです。 #============================================================================== class NilClass #-------------------------------------------------------------------------- # ● デバイスの取得 #-------------------------------------------------------------------------- def to_d return "BGM" end end #============================================================================== # ■ String #------------------------------------------------------------------------------ # 文字列クラス。任意の長さのバイト列を扱うことができます。 #============================================================================== class String #-------------------------------------------------------------------------- # ● デバイスの取得 #-------------------------------------------------------------------------- def to_d return self end end #============================================================================== # ■ Audio #------------------------------------------------------------------------------ # ミュージック、サウンドにかかわる処理を行うモジュールです。 #============================================================================== module Audio #-------------------------------------------------------------------------- # ● 音楽の解放 #-------------------------------------------------------------------------- def self.dispose #self.bgs_stop self.me_stop self.bgm_stop end end #============================================================================== # ■ Sprite #------------------------------------------------------------------------------ # スプライト表示を扱う組み込みクラスです。 #============================================================================== class Sprite #-------------------------------------------------------------------------- # ● 座標の設定 #-------------------------------------------------------------------------- def rect_set(x, y, z = 100) self.x = x if x self.y = y if y self.z = z if z end #-------------------------------------------------------------------------- # ● データの取得 #-------------------------------------------------------------------------- def data_copy(data) return if data.disposed? or self.disposed? # 各データをコピー self.x = data.x self.y = data.y self.z = data.z-1 self.visible = data.visible self.ox = data.ox self.oy = data.oy self.angle = data.angle self.mirror = data.mirror self.src_rect = data.src_rect.dup self.zoom_x = data.zoom_x self.zoom_y = data.zoom_y end #-------------------------------------------------------------------------- # ● 残像用の複製の作成 #-------------------------------------------------------------------------- def blink # 各データをコピー sprite = Sprite.new(self.viewport) sprite.bitmap = self.bitmap.dup if self.bitmap sprite.x = self.x sprite.y = self.y sprite.z = self.z-1 sprite.visible = false sprite.ox = self.ox sprite.oy = self.oy sprite.angle = self.angle sprite.mirror = self.mirror sprite.opacity = self.opacity - 95 sprite.blend_type = 1 sprite.color = self.color.dup sprite.src_rect = self.src_rect.dup sprite.zoom_x = self.zoom_x sprite.zoom_y = self.zoom_y return sprite end #-------------------------------------------------------------------------- # ● 複製の作成 #-------------------------------------------------------------------------- def dup # 各データをコピー sprite = Sprite.new(self.viewport) sprite.bitmap = self.bitmap.dup if self.bitmap sprite.x = self.x sprite.y = self.y sprite.z = self.z sprite.visible = self.visible sprite.ox = self.ox sprite.oy = self.oy sprite.angle = self.angle sprite.mirror = self.mirror sprite.opacity = self.opacity sprite.blend_type = self.blend_type sprite.color = self.color.dup sprite.src_rect = self.src_rect.dup sprite.zoom_x = self.zoom_x sprite.zoom_y = self.zoom_y return sprite end #-------------------------------------------------------------------------- # ● センタリング #-------------------------------------------------------------------------- def centering return if self.bitmap == nil self.x = (640 - (self.bitmap.width * self.zoom_x)) / 2 self.y = (480 - (self.bitmap.height * self.zoom_y)) / 2 end #-------------------------------------------------------------------------- # ● ズーム #-------------------------------------------------------------------------- def zoom=(n) zoom_x = n zoom_y = n end #-------------------------------------------------------------------------- # ● エフェクト表示中判定 #-------------------------------------------------------------------------- def effect? return false end end #============================================================================== # ■ Array #------------------------------------------------------------------------------ # 配列全般を扱う組み込みクラスです。 #============================================================================== class Array #-------------------------------------------------------------------------- # ● 要素の一次元化 #-------------------------------------------------------------------------- def divide array = [] # データを複製 data = self.dup # 要素の一次元化 data.each do |i| if i.is_a?(Array) for a in i array.push(a) end else array.push(i) end end return array end #-------------------------------------------------------------------------- # ● 要素のシャッフル #-------------------------------------------------------------------------- def shuffle # データを複製 data = self.dup # 要素をランダムに並び替える data.each_index do |i| j = rand(i+1) data[i], data[j] = data[j], data[i] end return data end #-------------------------------------------------------------------------- # ● 要素のシャッフル(破壊的) #-------------------------------------------------------------------------- def shuffle! # 要素をランダムに並び替える self.each_index do |i| j = rand(i+1) self[i], self[j] = self[j], self[i] end end #-------------------------------------------------------------------------- # ● 要素をランダムに返す #-------------------------------------------------------------------------- def get_rand return self[rand(self.size)] end #-------------------------------------------------------------------------- # ● 要素の交換 # a : 要素1 # b : 要素2 #-------------------------------------------------------------------------- def change(a, b) # データを複製 data = self.dup # 要素を交換する(self自体には変化がない) data[a] = self[b] data[b] = self[a] return data end #-------------------------------------------------------------------------- # ● 要素の交換(破壊的) # a : 要素1 # b : 要素2 #-------------------------------------------------------------------------- def change!(a, b) # 要素を交換する(selfを直接書き換える) self[a], self[b] = self[b], self[a] end end #============================================================================== # ■ Numeric #------------------------------------------------------------------------------ # 数値全般を扱う組み込みクラスです。 #============================================================================== class Numeric #-------------------------------------------------------------------------- # ● 乱数の設定 # n : 乱数値 #-------------------------------------------------------------------------- def amp(n) amp = (self.abs * n / 100).to_min(1) return self + rand(amp+1) + rand(amp+1) - amp end #-------------------------------------------------------------------------- # ● 値の調整 # order : 求められた値 # size : 最大サイズ #-------------------------------------------------------------------------- def select(order, size) if self - order <= -1 return size elsif self + order >= size return 0 else return self + order end end #-------------------------------------------------------------------------- # ● 最大値の設定 # max : 求められた最大の数値 #-------------------------------------------------------------------------- def to_max(min, max) if self > max return max elsif self < min return min else return self end end #-------------------------------------------------------------------------- # ● 最大値の設定 # max : 求められた最大の数値 #-------------------------------------------------------------------------- def to_m(max) if self > max return max else return self end end #-------------------------------------------------------------------------- # ● 最小値の設定 # min : 求められた最小の数値 #-------------------------------------------------------------------------- def to_min(min) if self < min return min else return self end end #-------------------------------------------------------------------------- # ● 範囲内から乱数を得る # min : 求められた最小の数値 #-------------------------------------------------------------------------- def mm_rand(min) return rand(self - min + 1) + min end #-------------------------------------------------------------------------- # ● 求めた数値に対するパーセンテージを返す # order : 求められた数値 #-------------------------------------------------------------------------- def rate(order) return 100 if order == 0 return (self * 100) / order end end #============================================================================== # ■ Window #------------------------------------------------------------------------------ # ゲーム内の全てのウィンドウのスーパークラスです。 # 内部的には複数のスプライトで構成されています。 #============================================================================== class Window #-------------------------------------------------------------------------- # ● 暗転モード処理 #-------------------------------------------------------------------------- def blackout(type = 0, power = 10, max = 100, sprite = @win_viewport) @tone_power = power @tone_type = type @tone_max = max update_blackout(sprite) end #-------------------------------------------------------------------------- # ● フレーム更新 (暗転処理) #-------------------------------------------------------------------------- def update_blackout(sprite = @win_viewport) case @tone_type when 0 if @tone_rate != -@tone_max @tone_rate = [@tone_rate - @tone_power, -@tone_max].max sprite.tone.red = @tone_rate sprite.tone.green = @tone_rate sprite.tone.blue = @tone_rate end when 1 if @tone_rate != 0 @tone_rate = [@tone_rate + @tone_power, 0].min sprite.tone.red = @tone_rate sprite.tone.green = @tone_rate sprite.tone.blue = @tone_rate end end end #-------------------------------------------------------------------------- # ● ウィンドウの右寄せ #-------------------------------------------------------------------------- def right(x) # ウィンドウを画面の右に配置する self.x = (x - self.width) end #-------------------------------------------------------------------------- # ● ウィンドウの下寄せ #-------------------------------------------------------------------------- def down(y) # ウィンドウを画面の右に配置する self.y = (480 - self.height - y) end #-------------------------------------------------------------------------- # ● ウィンドウのセンタリング #-------------------------------------------------------------------------- def centering # ウィンドウを画面の中央に配置する self.x = (640 - self.width) / 2 self.y = (480 - self.height) / 2 end end
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |