赞 | 8 |
VIP | 0 |
好人卡 | 0 |
积分 | 20 |
经验 | 11208 |
最后登录 | 2025-7-1 |
在线时间 | 658 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2022
- 在线时间
- 658 小时
- 注册时间
- 2014-2-15
- 帖子
- 81
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
#==============================================================================
# ■ Sprite_MenuPicture
#------------------------------------------------------------------------------
# メニュー画面で衣装の状態を表すウィンドウです
#==============================================================================
class Sprite_MenuPicture #< Window_Selectable
#--------------------------------------------------------------------------
# ◆ 定数
#--------------------------------------------------------------------------
#MyGameConst::ETYPE_ID_OUTER = 1
#MyGameConst::ETYPE_ID_INNER = 2
#MyGameConst::ETYPE_ID_HEAD = 3
#MyGameConst::ETYPE_ID_LEG = 4
#MyGameConst::ITEM_ID_FANTASY_DRESS = 62
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y, width, height, actor_id=1, mode="main")
# 基本的には1番目のアクター
@actor_id = actor_id
@mode = mode
@x = x
@y = y
do_factory_item_file_list
do_factory_body_file_list
draw_picture
actor = $game_actors[@actor_id]
# 有効な防具を取得し、それぞれに対応するピクチャを表示する
actor.armors.each{|armor|
target_file_name = @item_file_list[armor.id]["file_name"]
if armor.etype_id == MyGameConst::ETYPE_ID_OUTER
#if armor.id == MyGameConst::ITEM_ID_FANTASY_DRESS and @body != nil
# set_body_picture(target_file_name)
# @body.z = 99999
#else
@outer_item_id = armor.id
#end
elsif armor.etype_id == MyGameConst::ETYPE_ID_INNER
@inner_item_id = armor.id
elsif armor.etype_id == MyGameConst::ETYPE_ID_HEAD
@head_item_id = armor.id
elsif armor.etype_id == MyGameConst::ETYPE_ID_LEG
@leg_item_id = armor.id
end
#puts armor.id
#puts armor.etype_id
#puts @item_file_list[armor.id]["file_name"]
}
end
#--------------------------------------------------------------------------
# ◆ オブジェクトの解放処理
#--------------------------------------------------------------------------
def dispose
@body.dispose if @body != nil and !(@body.disposed?)
@base_head.dispose if @base_head != nil and !(@base_head.disposed?)
@outer.dispose if @outer != nil and !(@outer.disposed?)
@inner.dispose if @inner != nil and !(@inner.disposed?)
@head.dispose if @head != nil and !(@head.disposed?)
@leg.dispose if @leg != nil and !(@leg.disposed?)
end
#--------------------------------------------------------------------------
# ◆ オブジェクトの更新処理
#--------------------------------------------------------------------------
def update
draw_picture
end
#--------------------------------------------------------------------------
# ◆ MenuPictureメイン処理
#--------------------------------------------------------------------------
def draw_picture
# 基本の身体ピクチャを表示する
# 他人と入れ替わった場合等、ここに指定するピクチャが変わる
if @mode == "main"
body_skin_id = $game_variables[MyGameConst::VARIABLE_BODY_SKIN_IDX]
#if body_skin_id != -1
else
body_skin_id = @actor_id
end
body_file_name = @body_file_list[body_skin_id]["body_file_name"]
set_body_picture(body_file_name)
base_head_file_name = @body_file_list[body_skin_id]["head_file_name"]
hair_order = @body_file_list[body_skin_id]["hair_order"]
set_base_head_picture(base_head_file_name, hair_order)
# 基本的には1番目のアクター
actor = $game_actors[@actor_id]
# 有効な防具を取得し、それぞれに対応するピクチャを表示する
actor.armors.each{|armor|
target_file_name = @item_file_list[armor.id]["file_name"]
# キャラタイプが異なる場合、ここに「-type1」等の名前を指定する
# それだけ素材数も増えることになるが・・・
if armor.etype_id == MyGameConst::ETYPE_ID_OUTER
#if armor.id == MyGameConst::ITEM_ID_FANTASY_DRESS and @body != nil
# set_body_picture(target_file_name)
# @body.z = 99999
#else
if armor.id != @outer_item_id
set_outer_picture(target_file_name)
@outer_item_id = armor.id
end
#end
elsif armor.etype_id == MyGameConst::ETYPE_ID_INNER and armor.id != @inner_item_id
set_inner_picture(target_file_name)
@inner_item_id = armor.id
elsif armor.etype_id == MyGameConst::ETYPE_ID_HEAD and armor.id != @head_item_id
set_head_picture(target_file_name)
@head_item_id = armor.id
elsif armor.etype_id == MyGameConst::ETYPE_ID_LEG and armor.id != @leg_item_id
set_leg_picture(target_file_name)
@leg_item_id = armor.id
end
#puts armor.id
#puts armor.etype_id
#puts @item_file_list[armor.id]["file_name"]
}
# 装備状況の確認
outer_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_OUTER)
inner_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_INNER)
head_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_HEAD)
leg_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_LEG)
# 装備アイテムがない場合、衣服ピクチャを削除する
if outer_item.is_nil?
@outer.dispose if @outer != nil and [email protected]?
@outer_item_id = -1
end
if inner_item.is_nil?
@inner.dispose if @inner != nil and [email protected]?
@inner_item_id = -1
end
if head_item.is_nil?
@head.dispose if @head != nil and [email protected]?
@head_item_id = -1
end
if leg_item.is_nil?
@leg.dispose if @leg != nil and [email protected]?
@leg_item_id = -1
end
#end
end
#--------------------------------------------------------------------------
# ◆ キャラクターピクチャ用のスプライトを生成する
#--------------------------------------------------------------------------
def do_factory_sprite(file_name)
_sprite = Sprite.new
_sprite.zoom_x = 0.5
_sprite.zoom_y = 0.5
_sprite.x = -74 + @x
_sprite.y = -48
_bitmap = Cache.picture(file_name)
_sprite.bitmap = _bitmap
return _sprite
end
#--------------------------------------------------------------------------
# ◆ 身体のスプライトを表示する
#--------------------------------------------------------------------------
def set_body_picture(file_name)
@body.dispose if @body != nil and [email protected]?
@body = do_factory_sprite(file_name)
@body.z = 9999
# サキュバス化:@body.tone.set(0, 0, 130)
end
#--------------------------------------------------------------------------
# ◆ 頭部のスプライトを表示する
#--------------------------------------------------------------------------
def set_base_head_picture(file_name, hair_order)
@base_head.dispose if @base_head != nil and !@base_head.disposed?
@base_head = do_factory_sprite(file_name)
if hair_order == "fore"
@base_head.z = 11000
else
@base_head.z = 10000
end
# サキュバス化:@base_head.tone.set(0, 0, 130)
end
#--------------------------------------------------------------------------
# ◆ インナーのスプライトを表示する
#--------------------------------------------------------------------------
def set_inner_picture(file_name)
@inner.dispose if @inner != nil and [email protected]?
@inner = do_factory_sprite(file_name)
@inner.z = 10001
end
#--------------------------------------------------------------------------
# ◆ 脚部のスプライトを表示する
#--------------------------------------------------------------------------
def set_leg_picture(file_name)
@leg.dispose if @leg != nil and [email protected]?
@leg = do_factory_sprite(file_name)
@leg.z = 10003
end
#--------------------------------------------------------------------------
# ◆ アウターのスプライトを表示する
#--------------------------------------------------------------------------
def set_outer_picture(file_name)
@outer.dispose if @outer != nil and [email protected]?
@outer = do_factory_sprite(file_name)
@outer.z = 10004
end
#--------------------------------------------------------------------------
# ◆ 頭アクセサリーのスプライトを表示する
#--------------------------------------------------------------------------
def set_head_picture(file_name)
@head.dispose if @head != nil and [email protected]?
@head = do_factory_sprite(file_name)
#@head.z = 10004
@head.z = 11010
end
def do_factory_body_file_list
@body_file_list = {
1 =>
{
"head_file_name" => "H000-主人公",
"body_file_name" => "B999-基本ボディ",
"type" => "big"
},
}
end
#--------------------------------------------------------------------------
# ◆ ピクチャとファイル名のハッシュを生成する
#--------------------------------------------------------------------------
def do_factory_item_file_list
@item_file_list = {
60 =>
{
"file_name" => "060-セーラー服"
},
}
end
end |
|