#==============================================================================
# ■ Window_Item
#------------------------------------------------------------------------------
# 显示可以装备的回路。
#==============================================================================
class Window_Troops_List< Window_Base
def blue_color
return Color.new(141,157,180)
end
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :index # 光标位置
attr_reader :help_window # 帮助窗口
attr_reader :type # 种类
attr_reader :able # 暗色
# for i in 0...$party_items[type].size
# next if $party_items[type][i].nil?
# x = i%4*66 + 25
# y = i/2*80 + 102
# case $party_items[type][i].type
def type=(type)#类型
@type = type
end
def type
return @type
end
#--------------------------------------------------------------------------
# ● 设置光标的位置
# index : 新的光标位置
#--------------------------------------------------------------------------
def index=(index)#定义索引=(索引)
@index = index#@索引=(索引)
# 刷新帮助文本 (update_help 定义了继承目标)
#如果是自己。活动和@help窗口!=无
if self.active and @help_window != nil
update_help#更新帮助
end
# 刷新光标矩形
update_cursor_rect#更新游标矩形
end
#--------------------------------------------------------------------------
# ● 获取行数
#--------------------------------------------------------------------------
def column_max #定义行最大值
# 由项目数和列数计算出行数
return @item_max #返回@项目最大值
end
#--------------------------------------------------------------------------
# ● 获取开头行
#--------------------------------------------------------------------------
def top_column
# 将窗口内容的传送源 Y 坐标、1 行的高 32 等分
return self.ox / 32
end
#--------------------------------------------------------------------------
# ● 设置开头行
# row : 显示开头的行
#--------------------------------------------------------------------------
def top_column=(column)#定义首行=(行)
# row 未满 0 的场合更正为 0
if column < 0
column = 0
end
# row 超过 row_max - 1 的情况下更正为 row_max - 1
if column > column_max - 1
column = column_max - 1
end
# row 1 行高的 32 倍、窗口内容的传送源 Y 坐标
self.ox = column * 32
end
#--------------------------------------------------------------------------
# ● 获取 1 页可以显示的行数
#--------------------------------------------------------------------------
def page_column_max #@column_max = 2
# 窗口的高度,设置画面的高度减去 32 ,除以 1 行的高度 32
return 16 #头像行数
end
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
#--------------------------------------------------------------------------
def initialize(type = 0,player_or_enermy = 0)
@all_fighters = Figter_data::ALL_SOLDIER #所有人物英雄
#----------------------------------------------------------------------------
# 所有人物英雄添加处
#----------------------------------------------------------------------------
# @all_fighters = [5]
# if $game_switches[20] == true#(开关 关 )
# @all_fighters.push(4) # => true
# end
# if $game_switches[21] == true#(开关 关 )
# @all_fighters.push(2) # => true
# end
#-----------------------------------------------------------------------------
#右侧滚动条
@right_back = Bar_Right.new("right_back", origin_x+172, origin_y+12, 20*14)
@right_back.visible = false
@right = Bar_Right.new("right", origin_x+170, origin_y+12, 0)
@right.visible = false
#变量更新
@type = 0
@index = 0
#背景
@back = Sprite.new
@back.bitmap = RPG::Cache.menu("troopList-base") #总部队背景图
# @back.x = origin_x
# @back.y = origin_y
@help_window = Window_Troop_Info.new
@item_icon = []
@item_icon[0] = Sprite.new
#初始化
# super(origin_x,origin_y,128/2*4+32,87*4+32)
#超级的(原始_x,原始_y,287/2+32,14*20+32)
super(origin_x,origin_y,1200,600)
#自己窗花= RPG::Cache.menu("Blue")
self.windowskin = RPG::Cache.menu("Blue")#光标窗口颜色
# self.windowskin.z=1100
self.opacity = 0
self.active = false
#刷新
refresh(type)
refresh(type)
update_help
end
#--------------------------------------------------------------------------
# ● 活动窗口用原始x y坐标
#--------------------------------------------------------------------------
def origin_x
return 16 #光标和头像,名字的原始x标
end
def origin_y
return 93#光标和头像,名字的原始y标
end
#--------------------------------------------------------------------------
# ● 定义用选择状态决定窗口颜色
#--------------------------------------------------------------------------
def able=(able)
@able=able
@right_back.able = able
@right.able = able
if active
@back.color = Color.new(255,255,255,0)
else
@back.color = Color.new(0,0,0,128)
end
refresh
end
#--------------------------------------------------------------------------
# ● 一些方法的重载
#--------------------------------------------------------------------------
def active=(active)
if active
if @item_max <= 0
self.index = -1
else
self.index = 0
end
else
self.index = -1
end
@ajsdgfshfajklshfa = nil
@help_window.set_text( nil ) if @help_window != nil
super(active)
end
def dispose
@back.dispose
@right_back.dispose
@right.dispose
for i in 0...@item_icon.size
@item_icon[i].dispose
end
@help_window.dispose
super
end
def x=(x)
@back.x = x-origin_x #+ 15
@right_back.x = x+172 #+30
@right.x = x+170 #+30
for i in 0...@item_icon.size
@item_icon[i].x = 25+ i%4 * (54 + 32)# +60 #14
end
super(x-16)
end
def x
return super+16
end
def y=(y)
@back.y = y-origin_y# + 60
@right_back.y = y+12 #+ origin_y
@right.y = y+12 #+ origin_y
for i in 0...@item_icon.size
@item_icon[i].y=115+i/ 4 * 122 # + origin_y #+ 25 #14
end
super(y)
end
def z=(z)
@back.z=300
@right_back.z=z+3
@right.z=z+4
for i in 0...@item_icon.size
@item_icon[i].z=z+2
end
super(z)
end
def visible=(visible)
@back.visible=visible
@right_back.visible=visible
@right.visible=visible
# @help_window.visible=visible
super(visible)
end
def contents_opacity=(opacity)
@back.opacity=opacity
@right_back.opacity=0#opacity
@right.opacity=0 #opacity
# @help_window.opacity=opacity
super(opacity)
end
def oy=(oy)
#缩放图标时只显示当前页的项目
for i in 0...@item_icon.size
@item_icon[i].y = 16+18*i+self.y-oy
if @item_icon[i].y < self.x or @item_icon[i].y > self.x+20*self.page_row_max
@item_icon[i].visible = false
else
@item_icon[i].visible = true
end
end
super(oy)
end
#--------------------------------------------------------------------------
# ● 获取物品
#--------------------------------------------------------------------------
def item
return @all_fighters[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh(type=@type)#all,1,2,3,4,5,6,7 RPPG::ARMOR_BEGIN
if self.contents != nil
self.contents.dispose
self.contents = nil
end
for i in 0...@item_icon.size
@item_icon[i].dispose
end
@item_icon = []
@item_icon[0] = Sprite.new
for i in 0...@all_fighters.size
@item_icon[i] = Sprite.new
name = Figter_data::CHARACTER_NAME[@all_fighters[i]]
@item_icon[i].bitmap = RPG::Cache.icon(name) if name != nil
end
@item_max = @all_fighters.size
#下标超过范围的时候往回退一格
if self.top_column > @item_max-self.page_column_max
self.top_column = @item_max-self.page_column_max
end
# if self.index >= @item_column
# self.index = @item_column-1
# end
#右侧滚动条显示
# if @item_max > self.page_column_max
# @right_back.visible = true
# @right.visible = true
# else
# @right_back.visible = false
# @right.visible = false
# end
#滚动条的更新
# if @right.visible
# @right.height = (14*66)*(14*66)/(@item_max.to_f*66)-24.0 > 0 ? (14*66)*(14*66)/(@item_max.to_f*66)-24.0 : 0
# end
#---------------------------------------------- 1
# 如果项目数不是 0 就生成位图、描绘全部项目
# if @item_max > 0
# self.contents = Bitmap.new(width - 32, @item_max*20)
# for i in 0...@item_max
# draw_item(i, 12, i*66)
# end
# else
# self.contents = Bitmap.new(width - 32, 20)
# end
#缩放图标时只显示当前页的项目
for i in 0...@item_icon.size
# x =16 +@index% 4 * (66 + 5)
# y = @index/ 4 * 88
@item_icon[i].x = 25 +i%4 * (54 + 32)
@item_icon[i].y = i/ 4 * 123
#@item_icon[i].x = 66*i+self.x-ox+16 #14+16*i
# if @item_icon[i].x < self.x or @item_icon[i].x > self.x+80*self.page_column_max
# @item_icon[i].visible = false
# else
# @item_icon[i].visible = true
# end
end
#update_help
end
#--------------------------------------------------------------------------
# ● 描绘物品
#--------------------------------------------------------------------------
def draw_item(index, x, y)
item = @all_fighters[index]
self.contents.font.size =12 #自己目录字体。尺寸=12
#图标缩放显示专用
icon_size = 100#84#18#图片缩放大小
@item_icon[index].x = self.x+x - self.index%4 * (66 + 5)#self%4*18 + 25 #
@item_icon[index].y = self.y+y+16 - self.index/ 4 * 88#/2*18 + 102
@item_icon[index].zoom_x = icon_size.to_f/@item_icon[index].bitmap.width
@item_icon[index].zoom_y = icon_size.to_f/@item_icon[index].bitmap.height
# @item_icon[index].z = 200#self.z+2
@item_icon[index].color = self.contents.font.color==normal_color ? Color.new(255,255,255,0):Color.new(0,0,0,128)
#self.contents.font.color = Color.new(128,193,125,0)
name = Figter_data::THE_NAME[item]
self.contents.draw_text(x%4 * (66 + 5) + icon_size.to_f, y/ 4 * 88, 184, self.contents.font.size, name)
# self.contents.draw_text(x + icon_size.to_f, y + 4, 184, self.contents.font.size, name)
end
#--------------------------------------------------------------------------
# ● 帮助窗口的设置
# help_window : 新的帮助窗口
#--------------------------------------------------------------------------
def help_window=(help_window)
@help_window = help_window
# 刷新帮助文本 (update_help 定义了继承目标)
if self.active and @help_window != nil
update_help
end
end
#--------------------------------------------------------------------------
# ● 更新光标矩形
#--------------------------------------------------------------------------
def update_cursor_rect
#@back.bitmap = RPG::Cache.menu("item_command"+type.to_s)
# 光标位置不满 0 的情况下
if @index < 0
self.cursor_rect.empty
return
end
# 获取当前的行
column = @index
# 当前行被显示开头行前面的情况下
if column < self.top_column
# 从当前行向开头行滚动
self.top_column = column
end
# 当前行被显示末尾行之后的情况下
if column > self.top_column + (self.page_column_max - 1)
# 从当前行向末尾滚动
self.top_column = column - (self.page_column_max - 1)
end
@right.x = self.x+72+self.top_column.to_f*66.0*(4*66)/(@item_max.to_f*66)
# 计算光标的宽度
cursor_width = 1200
# 计算光标坐标
# x = 4 + index % 2 * (288 + 32)
# y = index / 2 * 32
#x =32+ @index*66 - self.ox-1# 8 #
x =10 +@index% 4 * (84 + 1)
y =5+ @index/ 4 * 120
z = 1999
#y = 14 #@index*20 - self.oy-1
# 更新光标矩形
self.cursor_rect.set(x, y, 84 ,120)
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 可以移动光标的情况下
if self.active and @item_max >= 0 and @index >= 0
# 方向键下被按下的情况下
if Input.repeat?(Input::RIGHT)
# 光标向左移动
$game_system.se_play($data_system.cursor_se)
@index = (@index+1+@item_max) % @item_max if @item_max != 0
update_help
end
# 方向键上被按下的情况下
if Input.repeat?(Input::LEFT)
# 光标向右移动
$game_system.se_play($data_system.cursor_se)
@index = (@index-1+@item_max) % @item_max if @item_max != 0
update_help
end
end
# 刷新帮助文本 (update_help 定义了继承目标)
if @help_window != nil and @ajsdgfshfajklshfa == nil
update_help
update_help
@ajsdgfshfajklshfa = true
end
# 刷新光标矩形
update_cursor_rect
end
def now_selected_troop
return @all_fighters[@index]
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
def update_help
#鲜辣煎鱼
@help_window.set_text( @index>-1 ? self.item : nil )
end
end