class Win3 - RDoc Documentation

RDoc

class Win3

Класс окна с реализацией всех возможностей, доступных при помощи Cigui.<br> Реализация выполнена для RGSS3.

In Files

  • cigui.rb

Parent

Window_Selectable

Attributes

back_opacity[RW]

Прозрачность фона окна. Может принимать значения от 0 до 255

label[R]

Метка окна. Строка, по которой происходит поиск экземпляра в массиве CIGUI.windows при выборе окна по метке (select by label)

opacity[RW]

Прозрачность окна. Может принимать значения от 0 до 255

speed[RW]

Скорость перемещения

Public Class Methods

new(x=0,y=0,w=192,h=64) click to toggle source

Создает окно. По умолчанию задается размер 192х64 и помещается в координаты 0, 0

# File cigui.rb, line 107
def initialize(x=0,y=0,w=192,h=64)
        super x,y,w,h
        @old_x, @old_y = x,y
        @label=nil
        @items=[]
        @texts=[]
        @speed=:auto
end

Public Instance Methods

add_item(command,procname,enabled=true, text_only=false) click to toggle source

Этот метод добавляет команду во внутренний массив items. Команды используются для отображения кнопок.<br>

  • command - отображаемый текст кнопки

  • procname - название вызываемого метода (String или Symbol)

По умолчанию значение enable равно true, что значит, что кнопка включена и может быть нажата.

# File cigui.rb, line 154
def add_item(command,procname,enabled=true, text_only=false)
        @items+=[
                {
                        :command=>command,
                        :procname=>procname,
                        :enabled=>enabled,
                        :x=>:auto,
                        :y=>:auto,
                        :width=>:auto,
                        :height=>:auto,
                        :text_only=>text_only
                }
        ]
end
add_text(text) click to toggle source

Этот метод позволяет добавить текст в окно.<br> Принимает в качестве параметра значение класса Text

# File cigui.rb, line 143
def add_text(text)
        add_item(text, "text_#{@index.last}".to_sym, false, true)
end
delete_item(indexORcomORproc) click to toggle source

Метод удаляет команду из внутреннего массива items.<br> В качестве аргумента принимаются:

  • индекс команды

  • имя команды

  • имя вызываемой процедуры

  • регулярное выражение для продвинутого поиска по именам команд и процедур

# File cigui.rb, line 176
def delete_item(indexORcomORproc)
        i=indexORcomORproc
        case i.class
        when Fixnum
                @items-=[@items[i.to_i]]
        when String
                # Довольно ненадёжный поиск, но я пока не придумал,
                # как его улучшить. Может, стоит добавить
                # возможность поиска регулярных выражений?
                @items.each{ |item|
                        # try to find by commands
                        @items-=[item] if item[:command]==i
                        # try to find by procnames
                        @items-=[item] if item[:procname]==i
                }
        # И впрямь, почему бы и нет?
        when Regexp
                @items.each{ |item|
                        @items-=[item] if item[:command].match(/#{ i }/)
                        @items-=[item] if item[:procname].match(/#{ i }/)
                }
        end
end
disable_item(commandORindex) click to toggle source

Выключает кнопку.<br> В параметр commandORindex помещается либо строковое значение, являющееся названием кнопки, либо целое число - индекс кнопки во внутреннем массиве items.

disable_item(0) # => @items[0].enabled set 'false'
disable_item('New game') # => @items[0].enabled set 'false'

Выключение происходит только если кнопка не имеет тип text_only (устанавливается при добавлении с помощью метода add_text).

# File cigui.rb, line 243
def disable_item(commandORindex)
        case commandORindex.class
        when Integer, Float
                @items[commandORindex.to_i][:enabled]=false if (0...@items.size).include? commandORindex.to_i
                @items[commandORindex.to_i][:enabled]=false if @items[commandORindex.to_i][:text_only]
        when String
                @items.each{|index|
                        if index[:command]==commandORindex||index[:procname]==commandORindex
                                index[:enabled]=false
                                index[:enabled]=false if index[:text_only]
                        end
                }
        when Regexp
                @items.each{|index|
                        if index[:command].match(/#{commandORindex}/)||index[:procname].match(/#{commandORindex}/)
                                index[:enabled]=false
                                index[:enabled]=false if index[:text_only]
                        end
                }
        else
                raise "#{CIGUIERR::CantReadNumber}\n\tcurrent line of $do: #{string}"
        end
end
dispose() click to toggle source

Удаляет окно и все связанные с ним ресурсы

# File cigui.rb, line 302
def dispose
        super
end
draw_items(ignore_disabled=false) click to toggle source

С помощью этого метода производится полная отрисовка всех элементов из массива items.<br> Параметр ignore_disabled отвечает за отображение выключенных команд из массива items. Если его значение равно true, то отрисовка выключенных команд производиться не будет.

# File cigui.rb, line 273
def draw_items(ignore_disabled=false)
        @items.each{|item|
                _draw_item item
        }
end
enable_item(commandORindex) click to toggle source

Включает кнопку.<br> В параметр commandORindex помещается либо строковое значение, являющееся названием кнопки, либо целое число - индекс кнопки во внутреннем массиве items.

@items.clear
add_item('New game',:new_game,false)
enable_item(0) # => @items[0].enabled set 'true'
enable_item('New game') # => @items[0].enabled set 'true'
enable_item(/[Nn][Ee][Ww][\s_]*[Gg][Aa][Mm][Ee]/) # @items[0].enabled set 'true'

Включение происходит только если кнопка не имеет тип text_only (устанавливается при добавлении с помощью метода add_text).

# File cigui.rb, line 211
def enable_item(commandORindex)
        case commandORindex.class
        when Fixnum
                @items[commandORindex.to_i][:enabled]=true if (0...@items.size).include? commandORindex.to_i
                @items[commandORindex.to_i][:enabled]=false if @items[commandORindex.to_i][:text_only]
        when String
                @items.each{|index|
                        if index[:command]==commandORindex||index[:procname]==commandORindex
                                index[:enabled]=true
                                index[:enabled]=false if index[:text_only]
                        end
                }
        when Regexp
                @items.each{|index|
                        if index[:command].match(/#{commandORindex}/)||index[:procname].match(/#{commandORindex}/)
                                index[:enabled]=true 
                                index[:enabled]=false if index[:text_only]
                        end
                }
        else
                raise "#{CIGUIERR::CantReadNumber}\n\tcurrent line of $do: #{string}"
        end
end
inspect() click to toggle source

Возврашает полную информацию обо всех параметрах в формате строки

# File cigui.rb, line 309
def inspect
        "<#{self.class}:"+
        " @back_opacity=#{back_opacity},"+
        " @contents_opacity=#{contents_opacity}"+
        " @height=#{height},"+
        " @opacity=#{opacity},"+
        " @speed=#{@speed},"+
        " @width=#{width},"+
        " @x=#{x},"+
        " @y=#{y}>"
end
label=(string) click to toggle source

Задает метку окну, проверяя ее на правильность перед этим:

  • удаляет круглые и квадратгые скобки

  • удаляет кавычки

  • заменяет пробелы и табуляцию на символы подчеркивания

  • заменяет символы “больше” и “меньше” на символы подчеркивания

# File cigui.rb, line 133
def label=(string)
        # make right label
        string.gsub!(/[\[\]\(\)\\"]/){''}
        string.gsub!(/[ \t\<\>]/){'_'}
        # then label it
        @label = string
end
refresh() click to toggle source

Обновляет окно. В отличие от update, влияет только на содержимое окна (производит повторную отрисовку).

# File cigui.rb, line 124
def refresh
        self.contents.clear
end
resize(new_width, new_height) click to toggle source

Устанавливает новые размеры окна дополнительно изменяя также и размеры содержимого (contents).<br> Все части содержимого, которые не помещаются в новые размер, удаляются безвозратно.

# File cigui.rb, line 284
def resize(new_width, new_height)
        temp=Sprite.new
        temp.bitmap=self.contents
        self.contents.dispose
        src_rect(0,0,temp.width,temp.height)
        self.contents=Bitmap.new(
                width - padding * 2,
                height - padding * 2
        )
        self.contents.bit(0,0,temp.bitmap,src_rect,255)
        temp.bitmap.dispose
        temp.dispose
        width=new_width
        height=new_height
end
update() click to toggle source

Обновляет окно. Влияет только на положение курсора (параметр cursor_rect), прозрачность и цветовой тон окна.

# File cigui.rb, line 118
def update
        _movement
end