596 lines
30 KiB
Ruby
596 lines
30 KiB
Ruby
#==============================================================================
|
||
# ★ RGSS3_実績メダルEX Ver1.0
|
||
#==============================================================================
|
||
=begin
|
||
|
||
作者:tomoaky
|
||
webサイト:ひきも記は閉鎖しました。 (http://hikimoki.sakura.ne.jp/)
|
||
|
||
すごい記録を達成したときにポコンッと出るあれです。
|
||
メダルをカテゴリ別に管理することができます。
|
||
|
||
準備
|
||
下にある設定項目に実績メダルの内容を設定してください。
|
||
|
||
使い方
|
||
イベントコマンド『スクリプト』を使ってメダルを獲得することができます。
|
||
例)gain_medal(0) # 0番のメダルを獲得する
|
||
|
||
イベントコマンド『条件分岐』の判定材料にメダルの獲得状況を使うことができます。
|
||
例)has_medal?(4) # 4番のメダルを獲得済みかどうかで分岐
|
||
|
||
|
||
2013.06.11 Ver1.0
|
||
公開
|
||
|
||
=end
|
||
|
||
#==============================================================================
|
||
# □ 設定項目
|
||
#==============================================================================
|
||
module TMMEDAL
|
||
# メニューコマンド名
|
||
COMMAND_MEDAL = "実績メダル"
|
||
|
||
# メダルが1枚もない状態でメダルコマンドを隠すかどうか(true で隠す)
|
||
HIDE_COMMAND = false
|
||
|
||
# 未取得のメダルを隠すかどうか(true で隠す)
|
||
HIDE_UNDISCOVERED = false
|
||
|
||
# 並び順を取得日時順にするかどうか(true で取得日時順)
|
||
# HIDE_UNDISCOVERED が false の場合、この設定は無効になります
|
||
DATE_SORT = false
|
||
|
||
# 並び順を逆順にするかどうか(true で逆順)
|
||
REVERSE_SORT = false
|
||
|
||
# カテゴリウィンドウの位置(0 … 上 / 1 … 右 / 2 … 左 )
|
||
# 右か左に表示する場合は取得日時が非表示になります
|
||
CATEGORY_POS = 0
|
||
|
||
# メダル獲得時の効果音
|
||
SE_GAIN_MEDAL = RPG::SE.new("Powerup", 80, 140)
|
||
|
||
# カテゴリの設定(先頭がカテゴリID 0 になります)
|
||
CATEGORY_NAME = ["イベント", "アイテム", "バトル"]
|
||
|
||
# メダル情報の設定
|
||
# [メダル名, アイコンID, 説明文, ヒント, 並び順ID, カテゴリID]
|
||
# 説明文やヒントは \n を挿入することで改行することができます
|
||
MEDAL_DATA = {}
|
||
MEDAL_DATA[0] = ["逃走ルート踏破!", 361, "最後の命を燃やし歩ききった。", "逃走ルートを踏破【序章】", 1, 0]
|
||
MEDAL_DATA[1] = ["街の人々とふれあい", 361, "ラシュヘイトの人々と交流した。", "人々と語り合う【序章】", 2, 0]
|
||
MEDAL_DATA[2] = ["残滓ザナハリー撃破!", 361, "残滓ザナハリーを倒した!", "物語を進める【序章】", 3, 2]
|
||
MEDAL_DATA[3] = ["ファンとふれあい", 361, "ゲオルイースファンと交流した。", "ファンと語り合う【序章】", 4, 0]
|
||
MEDAL_DATA[4] = ["繋がるもの", 361, "誰かが隠し託した物を受取った。", "破壊された壁の中に・・・【第一章】", 5, 1]
|
||
MEDAL_DATA[5] = ["ショートカット開通", 361, "ティアラの牢に短時間で行けるようになった", "どこかの鍵で扉を【第一章】", 6, 0]
|
||
MEDAL_DATA[6] = ["大切なもの", 361, "ティアラという守るべきものができた。", "物語を進める【第一章】", 7, 0]
|
||
MEDAL_DATA[7] = ["囚人植物バカ", 361, "ラスター博士を仲間にした。", "物語を進める【第一章】", 8, 0]
|
||
MEDAL_DATA[8] = ["ゴチです^^ by触手", 361, "モンスターが仕掛けた罠に嵌った。", "怪しい寝床であえて・・・【第一章】", 9, 0]
|
||
MEDAL_DATA[9] = ["バルカン女王撃破!", 361, "傀儡となったバルカン女王を正気に戻した。", "物語を進める【第一章】", 10, 2]
|
||
MEDAL_DATA[10] = ["隠しアイテム", 361, "隠されたアイテムを見つけた", "どこかの壁を調べると・・・【第一章】", 11, 1]
|
||
|
||
MEDAL_DATA[11] = ["スカサハ分身撃破!", 361, "本体ではなかったが分身を倒した。", "物語を進める【第二章】", 12, 2]
|
||
MEDAL_DATA[12] = ["ショートカット開通2", 361, "スカサハの力が弱まり道が開けた。", "分身をすべて倒す【第二章】", 13, 0]
|
||
MEDAL_DATA[13] = ["隠された魂式", 361, "産場で秘かに利用されていた部屋と魂式を発見した。", "産場の隠された部屋に【第二章】", 14, 1]
|
||
MEDAL_DATA[14] = ["無念;; byミミック", 361, "ミミックを倒しお宝をGET!", "産場のどこかに潜む・・・【第二章】", 15, 1]
|
||
MEDAL_DATA[15] = ["残滓スカサハ撃破!", 361, "残滓スカサハを倒した!", "物語を進める【第二章】", 16, 2]
|
||
|
||
MEDAL_DATA[16] = ["忘れられた魂式", 361, "グイーネの隠れ家に忘れ置かれた魂式を発見", "グイーネの隠れ家を探す【第三章】", 17, 1]
|
||
MEDAL_DATA[17] = ["除霊成功!", 361, "監獄に縛られた幽霊を救った。", "四つの彷徨う魂を・・【第三章】", 18, 2]
|
||
MEDAL_DATA[18] = ["宿し草撃破!", 361, "廃棄場通路に根を張っていた宿し草を倒した!", "物語を進める【第三章】", 19, 2]
|
||
MEDAL_DATA[19] = ["鍵再現師!", 361, "欠片を集め、鍵を再現した!", "鍵の欠片を集める【第三章】", 20, 1]
|
||
MEDAL_DATA[20] = ["植物王女撃破!", 361, "呪いによってモンスターとなっていた王女を倒した。", "物語を進める【第三章】", 21, 2]
|
||
|
||
MEDAL_DATA[21] = ["超獣撃破!", 361, "奇跡的に超獣を倒すことができた!", "絶対的脅威の敵を【第四章】", 22, 2]
|
||
MEDAL_DATA[22] = ["囚人少女", 361, "スティアラが仲間になった", "物語を進める【第四章】", 23, 0]
|
||
MEDAL_DATA[23] = ["ちょろあま^^ byスラッジ", 361, "スラッジに好き放題されてしまった。", "物語を進める【第四章】", 24, 0]
|
||
MEDAL_DATA[24] = ["きょういの格差", 361, "ゲオルイースとスティアラの格差が浮き彫りになった。", "ある装置を起動する【第四章】", 25, 0]
|
||
MEDAL_DATA[25] = ["聖魔法師スティアラ", 361, "呪われ草の大群とスティアラが聖魔法によって和解した。", "物語を進める【第四章】", 26, 0]
|
||
|
||
MEDAL_DATA[26] = ["相打ちと言いたいが、私の負けだな。", 361, "妙に気取っているサハギンを倒した。", "自己陶酔の過ぎる敵を【第五章】", 27, 2]
|
||
MEDAL_DATA[27] = ["残虐騎士アーベント", 361, "アーベントが記憶を取り戻し過去が明らかになった。", "物語を進める【第五章】", 28, 0]
|
||
MEDAL_DATA[28] = ["さらば友よ", 361, "親友キャプリスとの最後の一本を取った。", "聖堂の敵を倒す【第五章】", 29, 2]
|
||
MEDAL_DATA[29] = ["伝説の騎士クダン解放!", 361, "聖堂に佇む伝説の騎士を解放した!", "聖堂に佇む敵を倒す【第五章】", 30, 2]
|
||
MEDAL_DATA[30] = ["二十七の弟子解放!", 361, "蘇生され魔族に利用されていた弟子達を解放した。", "物語を進める【第五章】", 31, 2]
|
||
|
||
MEDAL_DATA[31] = ["異界の少女", 361, "オーバードらしき少女が仲間になった!", "物語を進める【第六章】", 32, 0]
|
||
MEDAL_DATA[32] = ["プロ仕様", 361, "オーパーツ保管庫からプロ用の鞭を手に入れた!", "ドSが悦ぶアイテム【第六章】", 33, 1]
|
||
MEDAL_DATA[33] = ["ショートカット開通3", 361, "短いが便利なショートカットを発見した。", "隠された道を探す【第六章】", 34, 0]
|
||
MEDAL_DATA[34] = ["スペアポケットォ!", 361, "カラの騎士は植物袋で調合ができるようになった。", "穴から降りる【第六章】", 35, 0]
|
||
MEDAL_DATA[35] = ["獄長撃破!", 361, "ゲオルイース達を苦しめてきた獄長を倒し捕獲した!", "物語を進める【第六章】", 36, 2]
|
||
|
||
MEDAL_DATA[36] = ["拷問成功!", 361, "獄長の拷問に成功し、新たな道が拓けた。", "物語を進める【第六章】", 37, 0]
|
||
MEDAL_DATA[37] = ["女王蜘蛛撃破!", 361, "古城の主となっていた女王蜘蛛を倒した!", "物語を進める【第六章】", 38, 2]
|
||
MEDAL_DATA[38] = ["いつかどこかで", 361, "盟友となった先輩は後輩と共に元の世界へと帰っていった。", "物語を進める【第六章】", 39, 0]
|
||
MEDAL_DATA[39] = ["託された願い", 361, "遠い異国の王はゲオルイース達に未来を託していった。", "森に佇む呪われた敵を倒す【第六章】", 40, 2]
|
||
MEDAL_DATA[40] = ["王の紋章", 361, "ゲオルイースは王の紋章を継承した。", "物語を進める【第六章】", 41, 0]
|
||
|
||
MEDAL_DATA[41] = ["守られた宝", 361, "敵の集団を突破しアイテムを入手した!", "突破する【第七章】", 42, 1]
|
||
MEDAL_DATA[42] = ["すたこら魂式", 361, "ボヘロス城に隠された魂式を習得した!", "魂式【第七章】", 43, 1]
|
||
MEDAL_DATA[43] = ["トラップどんとこい!", 361, "トラップを潜り抜けアイテムを入手した", "トラップ【第七章】", 44, 1]
|
||
MEDAL_DATA[44] = ["理想世界突破", 361, "幻の理想世界と決別した。", "物語を進める【第七章】", 45, 0]
|
||
MEDAL_DATA[45] = ["残滓トーデイラ撃破!", 361, "残滓トーデイラを倒した!", "物語を進める【第七章】", 46, 2]
|
||
|
||
|
||
MEDAL_DATA[46] = ["避難誘導完了!", 361, "監獄爆破から囚人達を救った。", "囚人全てを【第八章】", 47, 0]
|
||
MEDAL_DATA[47] = ["隠された武器!", 361, "中層囚人牢で隠されたアイテムを発見した!", "隠された武器【第八章】", 48, 1]
|
||
MEDAL_DATA[48] = ["聖母スティアラ教団", 361, "共に窮地を越えた人々と絆が生まれた。", "慕う者達と【第八章】", 49, 0]
|
||
MEDAL_DATA[49] = ["絶望を越える!", 361, "絶体絶命の状況を乗り越えた!", "物語を進める【第八章】", 50, 0]
|
||
MEDAL_DATA[50] = ["あとは任せろ", 361, "立ちはだかる過去のゲオルイースを倒した。", "物語を進める【第八章】", 51, 2]
|
||
|
||
MEDAL_DATA[51] = ["使徒ザナハリー撃破!", 361, "使徒ザナハリーを倒した!", "物語を進める【最終章】", 52, 2]
|
||
MEDAL_DATA[52] = ["使徒スカサハ撃破!", 361, "使徒スカサハを倒した!", "物語を進める【最終章】", 53, 2]
|
||
MEDAL_DATA[53] = ["使徒トーデイラ撃破!", 361, "使徒トーデイラを倒した!", "物語を進める【最終章】", 54, 2]
|
||
MEDAL_DATA[54] = ["守るもの", 361, "ゲオルイースを滅器から守り切った。", "守り切る【最終章】", 55, 0]
|
||
MEDAL_DATA[55] = ["人類の勝利", 361, "全ての魔族を倒し人類は勝利を得た。", "決着をつける【最終章】", 56, 2]
|
||
|
||
MEDAL_DATA[56] = ["あの時もしも", 361, "ラシュヘイト炎上前に大王を撃破した!", "IF【シークレット】", 57, 2]
|
||
MEDAL_DATA[57] = ["未来の仲間", 361, "リベレーターを仲間にした!", "仲間【シークレット】", 58, 0]
|
||
MEDAL_DATA[58] = ["過去の仲間", 361, "天下乱を仲間にした!", "仲間【シークレット】", 59, 0]
|
||
MEDAL_DATA[59] = ["後輩の幻影", 361, "後輩に成りすました敵を倒した!", "地下森林で【シークレット】", 60, 2]
|
||
MEDAL_DATA[60] = ["欲しがりさん", 361, "紅唯まとに実績を差し出させた。", "秘密の部屋【シークレット】", 61, 0]
|
||
|
||
MEDAL_DATA[61] = ["真・使徒撃破!", 361, "二週目で真の力を解放した使徒達を倒した!", "真の強敵【シークレット】", 57, 2]
|
||
MEDAL_DATA[62] = ["聖なる剣", 361, "聖剣を手に入れた!", "隠された物語で【シークレット】", 58, 1]
|
||
MEDAL_DATA[63] = ["リベレーターixxxxx撃破!", 361, "消息不明のリベレーターを救出した!", "仲間と洞窟【シークレット】", 59, 2]
|
||
MEDAL_DATA[64] = ["兄上撃破!", 361, "訓練装置が生み出した兄上の幻を倒した!", "仲間と装置【シークレット】", 60, 2]
|
||
MEDAL_DATA[65] = ["魔の王撃破!", 361, "かつて人類を支配した魔の王を倒した!", "隠された物語を進める【シークレット】", 61, 2]
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Game_Party
|
||
#==============================================================================
|
||
class Game_Party
|
||
#--------------------------------------------------------------------------
|
||
# ● 公開インスタンス変数
|
||
#--------------------------------------------------------------------------
|
||
attr_reader :medals # 獲得済みメダル
|
||
attr_reader :new_medals # 新規獲得メダル
|
||
attr_accessor :medal_info_count # メダル情報表示カウント
|
||
attr_accessor :medal_info_opacity # メダル情報表示不透明度
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
#--------------------------------------------------------------------------
|
||
alias tmmedal_game_party_initialize initialize
|
||
def initialize
|
||
tmmedal_game_party_initialize
|
||
@medals = []
|
||
@new_medals = []
|
||
@medal_info_count = 0
|
||
@medal_info_opacity = 0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ メダルの獲得
|
||
#--------------------------------------------------------------------------
|
||
def gain_medal(medal_id)
|
||
return if @medals[medal_id]
|
||
t = Time.now.strftime(" (%Y/%m/%d %H:%M)")
|
||
@medals[medal_id] = t
|
||
@new_medals.push([medal_id, t])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 獲得メダル情報の消去
|
||
#--------------------------------------------------------------------------
|
||
def delete_new_medal
|
||
@new_medals.shift
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Game_Interpreter
|
||
#==============================================================================
|
||
class Game_Interpreter
|
||
#--------------------------------------------------------------------------
|
||
# ○ メダルの獲得
|
||
#--------------------------------------------------------------------------
|
||
def gain_medal(medal_id)
|
||
$game_party.gain_medal(medal_id)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ メダルを獲得済みかどうかを返す
|
||
#--------------------------------------------------------------------------
|
||
def has_medal?(medal_id)
|
||
$game_party.medals[medal_id]
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Window_MenuCommand
|
||
#==============================================================================
|
||
class Window_MenuCommand
|
||
#--------------------------------------------------------------------------
|
||
# ● 独自コマンドの追加用
|
||
#--------------------------------------------------------------------------
|
||
alias tmmedal_window_menucommand_add_original_commands add_original_commands
|
||
def add_original_commands
|
||
tmmedal_window_menucommand_add_original_commands
|
||
unless TMMEDAL::HIDE_COMMAND && !medal_enabled
|
||
add_command(TMMEDAL::COMMAND_MEDAL, :medal, medal_enabled)
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ メダルの有効状態を取得
|
||
#--------------------------------------------------------------------------
|
||
def medal_enabled
|
||
!$game_party.medals.empty?
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# □ Window_MedalInfo
|
||
#==============================================================================
|
||
class Window_MedalInfo < Window_Base
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
#--------------------------------------------------------------------------
|
||
def initialize
|
||
super(Graphics.width - window_width, 0, window_width, fitting_height(1))
|
||
self.opacity = 0
|
||
self.contents_opacity = $game_party.medal_info_opacity
|
||
refresh
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ウィンドウ幅の取得
|
||
#--------------------------------------------------------------------------
|
||
def window_width
|
||
return 240
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● フレーム更新
|
||
#--------------------------------------------------------------------------
|
||
def update
|
||
super
|
||
if $game_party.medal_info_count > 0
|
||
self.contents_opacity += 16
|
||
$game_party.medal_info_count -= 1
|
||
$game_party.delete_new_medal if $game_party.medal_info_count == 0
|
||
else
|
||
self.contents_opacity -= 16
|
||
if self.contents_opacity == 0
|
||
open unless $game_party.new_medals.empty?
|
||
end
|
||
end
|
||
$game_party.medal_info_opacity = self.contents_opacity
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ウィンドウを開く
|
||
#--------------------------------------------------------------------------
|
||
def open
|
||
refresh
|
||
TMMEDAL::SE_GAIN_MEDAL.play
|
||
$game_party.medal_info_count = 150
|
||
self.contents_opacity = 0
|
||
self
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ リフレッシュ
|
||
#--------------------------------------------------------------------------
|
||
def refresh
|
||
contents.clear
|
||
unless $game_party.new_medals.empty?
|
||
draw_background(contents.rect)
|
||
medal = TMMEDAL::MEDAL_DATA[$game_party.new_medals[0][0]]
|
||
rect = contents.rect.clone
|
||
draw_icon(medal[1], rect.x, rect.y)
|
||
rect.x += 24
|
||
rect.width -= 24
|
||
draw_text(rect, medal[0])
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 背景の描画
|
||
#--------------------------------------------------------------------------
|
||
def draw_background(rect)
|
||
temp_rect = rect.clone
|
||
temp_rect.width /= 2
|
||
contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
|
||
temp_rect.x = temp_rect.width
|
||
contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 背景色 1 の取得
|
||
#--------------------------------------------------------------------------
|
||
def back_color1
|
||
Color.new(0, 0, 0, 192)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 背景色 2 の取得
|
||
#--------------------------------------------------------------------------
|
||
def back_color2
|
||
Color.new(0, 0, 0, 0)
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Window_MedalCategory
|
||
#==============================================================================
|
||
class Window_MedalCategory < Window_Command
|
||
#--------------------------------------------------------------------------
|
||
# ● 公開インスタンス変数
|
||
#--------------------------------------------------------------------------
|
||
attr_reader :item_window
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
#--------------------------------------------------------------------------
|
||
def initialize
|
||
super(0, 0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ウィンドウ幅の取得
|
||
#--------------------------------------------------------------------------
|
||
def window_width
|
||
return 160
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 表示行数の取得
|
||
#--------------------------------------------------------------------------
|
||
def visible_line_number
|
||
TMMEDAL::CATEGORY_NAME.size
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● フレーム更新
|
||
#--------------------------------------------------------------------------
|
||
def update
|
||
super
|
||
@item_window.category = current_symbol if @item_window
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● コマンドリストの作成
|
||
#--------------------------------------------------------------------------
|
||
def make_command_list
|
||
TMMEDAL::CATEGORY_NAME.each {|category| add_command(category, category.to_sym) }
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテムウィンドウの設定
|
||
#--------------------------------------------------------------------------
|
||
def item_window=(item_window)
|
||
@item_window = item_window
|
||
update
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Window_MedalCategoryHorz
|
||
#==============================================================================
|
||
class Window_MedalCategoryHorz < Window_HorzCommand
|
||
#--------------------------------------------------------------------------
|
||
# ● 公開インスタンス変数
|
||
#--------------------------------------------------------------------------
|
||
attr_reader :item_window
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
#--------------------------------------------------------------------------
|
||
def initialize
|
||
super(0, 0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ウィンドウ幅の取得
|
||
#--------------------------------------------------------------------------
|
||
def window_width
|
||
Graphics.width
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 桁数の取得
|
||
#--------------------------------------------------------------------------
|
||
def col_max
|
||
return TMMEDAL::CATEGORY_NAME.size
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● フレーム更新
|
||
#--------------------------------------------------------------------------
|
||
def update
|
||
super
|
||
@item_window.category = current_symbol if @item_window
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● コマンドリストの作成
|
||
#--------------------------------------------------------------------------
|
||
def make_command_list
|
||
TMMEDAL::CATEGORY_NAME.each {|category| add_command(category, category.to_sym) }
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテムウィンドウの設定
|
||
#--------------------------------------------------------------------------
|
||
def item_window=(item_window)
|
||
@item_window = item_window
|
||
update
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# □ Window_Medal
|
||
#==============================================================================
|
||
class Window_Medal < Window_Selectable
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
#--------------------------------------------------------------------------
|
||
def initialize(x, y, width, height)
|
||
super
|
||
@category = :none
|
||
refresh
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● カテゴリの設定
|
||
#--------------------------------------------------------------------------
|
||
def category=(category)
|
||
return if @category == category
|
||
@category = category
|
||
refresh
|
||
self.oy = 0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 桁数の取得
|
||
#--------------------------------------------------------------------------
|
||
def col_max
|
||
return 1
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 項目数の取得
|
||
#--------------------------------------------------------------------------
|
||
def item_max
|
||
@data ? @data.size : 1
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテムの取得
|
||
#--------------------------------------------------------------------------
|
||
def item
|
||
@data && index >= 0 ? @data[index] : nil
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテムリストの作成
|
||
#--------------------------------------------------------------------------
|
||
def make_item_list
|
||
@data = []
|
||
TMMEDAL::MEDAL_DATA.keys.each do |i|
|
||
item = $game_party.medals[i]
|
||
next if TMMEDAL::HIDE_UNDISCOVERED && !item
|
||
medal = TMMEDAL::MEDAL_DATA[i]
|
||
if TMMEDAL::CATEGORY_NAME[medal[5]].to_sym == @category
|
||
@data.push([i, item, medal[4]])
|
||
end
|
||
end
|
||
i = TMMEDAL::DATE_SORT && TMMEDAL::HIDE_UNDISCOVERED ? 1 : 2
|
||
@data.sort!{|a, b| a[i] <=> b[i] }
|
||
@data.reverse! if TMMEDAL::REVERSE_SORT
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 項目の描画
|
||
#--------------------------------------------------------------------------
|
||
def draw_item(index)
|
||
item = @data[index]
|
||
medal = TMMEDAL::MEDAL_DATA[item[0]]
|
||
rect = item_rect(index)
|
||
if item[1]
|
||
draw_icon(medal[1], rect.x, rect.y)
|
||
draw_text(rect, item[1], 2) if TMMEDAL::CATEGORY_POS == 0
|
||
end
|
||
rect.x += 24
|
||
rect.width -= TMMEDAL::CATEGORY_POS == 0 ? 216 : 24
|
||
draw_text(rect, item[1] ? medal[0] : "?" * medal[0].size)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ヘルプテキスト更新
|
||
#--------------------------------------------------------------------------
|
||
def update_help
|
||
if item
|
||
medal = TMMEDAL::MEDAL_DATA[item[0]]
|
||
@help_window.set_text(item[1] ? medal[2] : medal[3])
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● リフレッシュ
|
||
#--------------------------------------------------------------------------
|
||
def refresh
|
||
make_item_list
|
||
create_contents
|
||
draw_all_items
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Scene_Map
|
||
#==============================================================================
|
||
class Scene_Map
|
||
#--------------------------------------------------------------------------
|
||
# ● 全ウィンドウの作成
|
||
#--------------------------------------------------------------------------
|
||
alias tmmedal_scene_map_create_all_windows create_all_windows
|
||
def create_all_windows
|
||
tmmedal_scene_map_create_all_windows
|
||
create_medal_window
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ メダルウィンドウの作成
|
||
#--------------------------------------------------------------------------
|
||
def create_medal_window
|
||
@medal_window = Window_MedalInfo.new
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Scene_Menu
|
||
#==============================================================================
|
||
class Scene_Menu
|
||
#--------------------------------------------------------------------------
|
||
# ● コマンドウィンドウの作成
|
||
#--------------------------------------------------------------------------
|
||
alias tmmedal_scene_menu_create_command_window create_command_window
|
||
def create_command_window
|
||
tmmedal_scene_menu_create_command_window
|
||
@command_window.set_handler(:medal, method(:command_medal))
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ コマンド[メダル]
|
||
#--------------------------------------------------------------------------
|
||
def command_medal
|
||
SceneManager.call(Scene_Medal)
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# □ Scene_Medal
|
||
#==============================================================================
|
||
class Scene_Medal < Scene_MenuBase
|
||
#--------------------------------------------------------------------------
|
||
# ● 開始処理
|
||
#--------------------------------------------------------------------------
|
||
def start
|
||
super
|
||
create_help_window
|
||
create_category_window
|
||
create_item_window
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● カテゴリウィンドウの作成
|
||
#--------------------------------------------------------------------------
|
||
def create_category_window
|
||
if TMMEDAL::CATEGORY_POS == 0
|
||
@category_window = Window_MedalCategoryHorz.new
|
||
else
|
||
@category_window = Window_MedalCategory.new
|
||
end
|
||
@category_window.viewport = @viewport
|
||
@category_window.help_window = @help_window
|
||
@category_window.y = @help_window.height
|
||
@category_window.set_handler(:ok, method(:on_category_ok))
|
||
@category_window.set_handler(:cancel, method(:return_scene))
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテムウィンドウの作成
|
||
#--------------------------------------------------------------------------
|
||
def create_item_window
|
||
if TMMEDAL::CATEGORY_POS == 0
|
||
wx = 0
|
||
ww = Graphics.width
|
||
wy = @help_window.height + @category_window.height
|
||
else
|
||
wx = TMMEDAL::CATEGORY_POS == 1 ? @category_window.width : 0
|
||
ww = Graphics.width - @category_window.width
|
||
wy = @help_window.height
|
||
end
|
||
wh = Graphics.height - wy
|
||
@item_window = Window_Medal.new(wx, wy, ww, wh)
|
||
@item_window.viewport = @viewport
|
||
@item_window.help_window = @help_window
|
||
@item_window.set_handler(:cancel, method(:on_medal_cancel))
|
||
@category_window.item_window = @item_window
|
||
@category_window.x = @item_window.width if TMMEDAL::CATEGORY_POS == 2
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● カテゴリ[決定]
|
||
#--------------------------------------------------------------------------
|
||
def on_category_ok
|
||
@item_window.activate
|
||
@item_window.select(0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● メダル[キャンセル]
|
||
#--------------------------------------------------------------------------
|
||
def on_medal_cancel
|
||
@item_window.unselect
|
||
@category_window.activate
|
||
end
|
||
end
|
||
|