设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1107|回复: 1
打印 上一主题 下一主题

[已经解决] 【已解决】人物包裹页面只要显示12头像,出现13个时候如...

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7714
在线时间
1332 小时
注册时间
2015-8-15
帖子
749
跳转到指定楼层
1
发表于 2023-4-14 17:07:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 金芒芒 于 2023-4-17 13:30 编辑

#==============================================================================
# ■ 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].nil?
    #  x = i%4*66 + 25
    #  y = i/2*80 + 102
    #  case $party_items[type].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.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.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.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.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.y = 16+18*i+self.y-oy
      if @item_icon.y < self.x or @item_icon.y > self.x+20*self.page_row_max
        @item_icon.visible = false
      else
        @item_icon.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.dispose
    end
    @item_icon = []
    @item_icon[0] = Sprite.new



    for i in 0...@all_fighters.size
     @item_icon = Sprite.new

     name = Figter_data::CHARACTER_NAME[@all_fighters]
     @item_icon.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.x = 25 +i%4 * (54 + 32)
         @item_icon.y = i/ 4 * 123
         #@item_icon.x = 66*i+self.x-ox+16 #14+16*i

#     if @item_icon.x < self.x or @item_icon.x > self.x+80*self.page_column_max
#       @item_icon.visible = false
#     else
#       @item_icon.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

#   row = @index
    # 当前行被显示开头行前面的情况下
#    if row < self.top_row
      # 从当前行向开头行滚动
#      self.top_row = row
#    end
    # 当前行被显示末尾行之后的情况下
#    if row > self.top_row + (self.page_row_max - 1)
      # 从当前行向末尾滚动
#     self.top_row = row - (self.page_row_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
   # (Input::UP)  (Input::DOWN)  (Input::RIGHT) (Input::LEFT)
    # 可以移动光标的情况下
    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  
#-------------------------------------------------------------------------
    if self.active and @item_max >= 0 and @index >= 0
      # 方向键下被按下的情况下
      if Input.repeat?(Input::UP)
        # 光标向左移动
        $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::DOWN)
        # 光标向右移动
        $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

12人.png (600.71 KB, 下载次数: 18)

12人.png

1下一页.png (648.68 KB, 下载次数: 12)

1下一页.png

Lv4.逐梦者

梦石
0
星屑
7714
在线时间
1332 小时
注册时间
2015-8-15
帖子
749
2
 楼主| 发表于 2023-4-17 13:30:21 | 只看该作者
  1. #==============================================================================
  2. # ■ Window_Item
  3. #------------------------------------------------------------------------------
  4. #  显示可以装备的回路。
  5. #==============================================================================
  6. class Window_Troops_List< Window_Base
  7.   def blue_color
  8.     return Color.new(141,157,180)
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 定义实例变量
  12.   #--------------------------------------------------------------------------
  13.   attr_reader   :index                    # 光标位置
  14.   attr_reader   :help_window              # 帮助窗口
  15.   attr_reader   :type                     # 种类
  16.   attr_reader   :able                     # 暗色
  17.   
  18.   def type=(type)
  19.     @type = type
  20.   end
  21.   def type
  22.     return @type
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 设置光标的位置
  26.   #     index : 新的光标位置
  27.   #--------------------------------------------------------------------------
  28.   def index=(index)
  29.     @index = index
  30.     @column_max = 4
  31.     # 刷新帮助文本 (update_help 定义了继承目标)
  32.     if self.active and @help_window != nil
  33.       update_help
  34.     end
  35.     # 刷新光标矩形
  36.     update_cursor_rect
  37.   end
  38. #--------------------------------------------------------------------------
  39.   # ● 获取行数
  40.   #--------------------------------------------------------------------------
  41.   def row_max
  42.     # 由项目数和列数计算出行数
  43.     return @item_max
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 获取开头行
  47.   #--------------------------------------------------------------------------
  48.   def top_row
  49.     # 将窗口内容的传送源 Y 坐标、1 行的高 32 等分
  50.     return self.oy / 120
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 设置开头行
  54.   #     row : 显示开头的行
  55.   #--------------------------------------------------------------------------
  56.   def top_row=(row)
  57.     # row 未满 0 的场合更正为 0
  58.     if row < 0
  59.       row = 0
  60.     end
  61.     # row 超过 row_max - 1 的情况下更正为 row_max - 1
  62.     if row > row_max - 1
  63.       row = row_max - 1
  64.     end
  65.     # row 1 行高的 32 倍、窗口内容的传送源 Y 坐标
  66.     self.oy = row * 120
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 获取 1 页可以显示的行数
  70.   #--------------------------------------------------------------------------
  71.   def page_row_max
  72.     # 窗口的高度,设置画面的高度减去 32 ,除以 1 行的高度 32
  73.     return 3
  74.   end  
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对像
  77.   #     actor : 角色
  78.   #--------------------------------------------------------------------------
  79.   def initialize(type = 0,player_or_enermy = 0)
  80.    
  81.     @all_fighters = Figter_data::ALL_SOLDIER   
  82.    
  83.     #右侧滚动条
  84.     @right_back = Bar_Right.new("right_back", origin_x+344, origin_y+12, 120*3)
  85.     @right_back.visible = false
  86.     @right = Bar_Right.new("right", origin_x+342, origin_y+12, 0)
  87.     @right.visible = false
  88.     #变量更新
  89.     @type = 0
  90.     @index = 0
  91.     #背景
  92.     @back = Sprite.new
  93.     @back.bitmap = RPG::Cache.menu("troopList-base")
  94.   #  @back.x = origin_x
  95.    # @back.y = origin_y
  96.     @help_window = Window_Troop_Info.new
  97.    
  98.    
  99.     @item_icon = []
  100.     @item_icon[0] = Sprite.new
  101.     #初始化
  102.     super(origin_x,origin_y,344+32,3*120+120)
  103.     self.windowskin  = RPG::Cache.menu("Blue")
  104.     self.opacity = 0
  105.     self.active = false
  106.     #刷新
  107.     refresh(type)
  108.     refresh(type)
  109.     update_help
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 活动窗口用原始x y坐标
  113.   #--------------------------------------------------------------------------  
  114.   def origin_x
  115.     return 25
  116.   end
  117.   def origin_y
  118.     return 100
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 定义用选择状态决定窗口颜色
  122.   #--------------------------------------------------------------------------  
  123.   def able=(able)
  124.     @able=able
  125.     @right_back.able = able
  126.     @right.able = able
  127.     if active
  128.       @back.color = Color.new(255,255,255,0)
  129.     else
  130.       @back.color = Color.new(0,0,0,128)
  131.     end
  132.     refresh
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 一些方法的重载
  136.   #--------------------------------------------------------------------------  
  137.   def active=(active)
  138.     if active
  139.       if @item_max <= 0
  140.         self.index = -1
  141.       else
  142.         self.index = 0
  143.       end
  144.     else
  145.       self.index = -1
  146.     end
  147.     @ajsdgfshfajklshfa = nil
  148.     @help_window.set_text( nil ) if @help_window != nil
  149.     super(active)
  150.   end
  151.   def dispose
  152.     @back.dispose
  153.     @right_back.dispose
  154.     @right.dispose
  155.     for i in 0...@item_icon.size
  156.       @item_icon[i].dispose
  157.     end
  158.     @help_window.dispose
  159.     super
  160.   end
  161.   def x=(x)
  162.     @back.x = x-origin_x #+ 15
  163.     @right_back.x = x+344 #+30
  164.     @right.x = x+342 #+30
  165.     for i in 0...@item_icon.size
  166.       @item_icon[i].x = 5+ i%4 *86 #  +60        #14
  167.     end
  168.     super(x-16)
  169.   end
  170.   def x
  171.     return super+16
  172.   end
  173.   def y=(y)
  174.     @back.y = y-origin_y# + 60
  175.     @right_back.y = y+12 #+ origin_y
  176.     @right.y = y+12 #+ origin_y
  177.     for i in 0...@item_icon.size
  178.       @item_icon[i].y=  y+16+ i/ 4 * 122 # + origin_y #+ 25   #14
  179.     end
  180.     super(y)
  181.   end
  182.   def z=(z)
  183.     @back.z=z-5
  184.     @right_back.z=z+3
  185.     @right.z=z+4
  186.     for i in 0...@item_icon.size
  187.       @item_icon[i].z=z+2
  188.     end
  189.     super(z)
  190.   end
  191.   def visible=(visible)
  192.     @back.visible=visible
  193.     @right_back.visible=visible
  194.     @right.visible=visible
  195.   #  @help_window.visible=visible
  196.     super(visible)
  197.   end
  198.   def contents_opacity=(opacity)
  199.     @back.opacity=opacity
  200.     @right_back.opacity=opacity
  201.     @right.opacity=opacity
  202.    # @help_window.opacity=opacity
  203.     super(opacity)
  204.   end
  205.   def oy=(oy)
  206.     #缩放图标时只显示当前页的项目
  207.     for i in 0...@item_icon.size
  208.       @item_icon[i].x= 25+i%4 *84
  209.      # @item_icon[i].y = i/4*120
  210.       @item_icon[i].y = i/ 4 * 120+self.y-oy+16#120*i+self.y-oy+16
  211.       if @item_icon[i].y < self.y or @item_icon[i].y > self.y+120*self.page_row_max
  212.         @item_icon[i].visible = false
  213.       else
  214.         @item_icon[i].visible = true
  215.       end
  216.     end
  217.     super(oy)
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● 获取物品
  221.   #--------------------------------------------------------------------------  
  222.   def item
  223.     return @all_fighters[self.index]
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 刷新
  227.   #--------------------------------------------------------------------------  
  228.   def refresh(type=@type)#all,1,2,3,4,5,6,7 RPPG::ARMOR_BEGIN
  229.     if self.contents != nil
  230.       self.contents.dispose
  231.       self.contents = nil
  232.     end
  233.    
  234.     for i in 0...@item_icon.size
  235.       @item_icon[i].dispose
  236.     end
  237.     @item_icon = []
  238.     @item_icon[0] = Sprite.new

  239.    

  240.     for i in 0...@all_fighters.size
  241.      @item_icon[i] = Sprite.new
  242.      
  243.      name = Figter_data::CHARACTER_NAME[@all_fighters[i]]
  244.      @item_icon[i].bitmap = RPG::Cache.icon(name) if name != nil
  245.      
  246.     end
  247.    
  248.     @item_max = @all_fighters.size
  249.     #下标超过范围的时候往回退一格
  250.     if self.top_row > @item_max-self.page_row_max
  251.       self.top_row = @item_max-self.page_row_max
  252.     end
  253.     if self.index >= @item_max
  254.       self.index = @item_max-1
  255.     end
  256.       
  257.     #右侧滚动条显示
  258.     if @item_max > self.page_row_max
  259.       @right_back.visible = true
  260.       @right.visible = true
  261.     else
  262.       @right_back.visible = false
  263.       @right.visible = false
  264.     end
  265.     #滚动条的更新
  266.     if @right.visible
  267.       @right.height = (3*120)*(3*120)/(@item_max.to_f*120)-24.0 > 0 ? (3*120)*(3*120)/(@item_max.to_f*120)-24.0 : 0
  268.     end
  269.    
  270.     # 如果项目数不是 0 就生成位图、描绘全部项目
  271.     if @item_max > 0
  272.       self.contents = Bitmap.new(width - 32, @item_max*20)
  273.       for i in 0...@item_max
  274.         draw_item(i, 12, i*120)
  275.       end
  276.     else
  277.       self.contents = Bitmap.new(width - 32, 20)
  278.     end
  279.     #缩放图标时只显示当前页的项目
  280.     for i in 0...@item_icon.size
  281.       @item_icon[i].x = 25+ i%4 *84
  282.       @item_icon[i].y =  i/ 4 * 120+self.y-oy+16#120*i+self.y-oy+16
  283.       
  284.     #  @item_icon[i].y = i/4*120
  285.       if @item_icon[i].y < self.y or @item_icon[i].y > self.y+120*self.page_row_max
  286.         @item_icon[i].visible = false
  287.       else
  288.         @item_icon[i].visible = true
  289.       end
  290.     end
  291.    #update_help
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● 描绘物品
  295.   #--------------------------------------------------------------------------  
  296.   def draw_item(index, x, y)

  297.     item = @all_fighters[index]
  298.    
  299.    
  300.    
  301.    
  302.     self.contents.font.size = 12
  303.      
  304.       
  305.     #图标缩放显示专用
  306.     icon_size = 100#图片缩放大小self.index%4 * (66 + 5)
  307.     @item_icon[index].x = self.index%4 *86
  308.     @item_icon[index].y = self.index/ 4 * 120
  309. #   @item_icon[index].zoom_x = icon_size.to_f/@item_icon[index].bitmap.width
  310.   #  @item_icon[index].zoom_y = icon_size.to_f/@item_icon[index].bitmap.height
  311.     @item_icon[index].z = self.z+2
  312.     @item_icon[index].color = self.contents.font.color==normal_color ? Color.new(255,255,255,0):Color.new(0,0,0,128)
  313.     #self.contents.font.color = Color.new(128,193,125,0)
  314.     name = Figter_data::THE_NAME[item]
  315.     self.contents.draw_text(x + icon_size.to_f, y + 4, 184, self.contents.font.size, name)
  316.       
  317.    
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ● 帮助窗口的设置
  321.   #     help_window : 新的帮助窗口
  322.   #--------------------------------------------------------------------------
  323.   def help_window=(help_window)
  324.     @help_window = help_window
  325.     # 刷新帮助文本 (update_help 定义了继承目标)
  326.     if self.active and @help_window != nil
  327.       update_help
  328.     end
  329.   end


  330.   #--------------------------------------------------------------------------
  331.   # ● 更新光标矩形
  332.   #--------------------------------------------------------------------------
  333.   def update_cursor_rect
  334.     #@back.bitmap = RPG::Cache.menu("item_command"+type.to_s)
  335.     # 光标位置不满 0 的情况下
  336.     if @index < 0
  337.       self.cursor_rect.empty
  338.       return
  339.     end
  340.    
  341.     # 获取当前的行
  342.     row = @index/@column_max
  343.     # 当前行被显示开头行前面的情况下
  344.     if row < self.top_row
  345.       # 从当前行向开头行滚动
  346.       self.top_row = row
  347.     end
  348.     # 当前行被显示末尾行之后的情况下
  349.     if row > self.top_row + (self.page_row_max - 1)
  350.       # 从当前行向末尾滚动
  351.       self.top_row = row - (self.page_row_max - 1)
  352.     end
  353.    
  354.     @right.y = self.y+12+self.top_row.to_f*120.0*(3*120)/(@item_max.to_f*120)
  355.    
  356.     # 计算光标的宽度
  357.     cursor_width = 240
  358.     # 计算光标坐标
  359.     x = @index%4*86+2
  360.     y = @index/4-self.oy/120
  361.     # 更新光标矩形
  362.     self.cursor_rect.set(@index%4*84+2,(@index/4-self.oy/120)*120-1,85,120)
  363.     #self.cursor_rect.set(x, y, 86, 120)
  364.   end
  365. #--------------------------------------------------------------------------
  366.   # ● 刷新画面
  367.   #--------------------------------------------------------------------------
  368.   def update
  369.     super

  370.     # 可以移动光标的情况下
  371.     if self.active and @item_max >= 0 and @index >= 0
  372.       # 方向键下被按下的情况下
  373.       if Input.repeat?(Input::DOWN)
  374.         # 光标向下移动
  375.         $game_system.se_play($data_system.cursor_se)
  376.         @index = (@index+1+@item_max) % @item_max if @item_max != 0
  377.         update_help
  378.       end
  379.       # 方向键上被按下的情况下
  380.       if Input.repeat?(Input::UP)
  381.         # 光标向上移动
  382.         $game_system.se_play($data_system.cursor_se)
  383.         @index = (@index-1+@item_max) % @item_max if @item_max != 0
  384.         update_help
  385.       end

  386.       
  387.     end
  388.    
  389.     # 刷新帮助文本 (update_help 定义了继承目标)
  390.     if @help_window != nil and @ajsdgfshfajklshfa == nil
  391.       update_help
  392.       update_help
  393.       @ajsdgfshfajklshfa = true
  394.     end

  395.     # 刷新光标矩形
  396.     update_cursor_rect
  397.   end
  398.   

  399.   
  400.   def now_selected_troop
  401.     return @all_fighters[@index]
  402.   end
  403.   
  404.   #--------------------------------------------------------------------------
  405.   # ● 刷新帮助文本
  406.   #--------------------------------------------------------------------------
  407.   def update_help
  408.     #鲜辣煎鱼
  409.     @help_window.set_text( @index>-1 ? self.item : nil )
  410.    
  411.   end
  412. end
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-1 12:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表