Sha256: 06ba9750fc292d73a81b89561128b01b808fe8bbdd6b5067563218da9d8a0a06

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

# -*- coding: utf-8 -*-
module Lotu
  class TextBox < Actor

    def initialize(opts={})
      default_opts = {
        :size => 20
      }
      opts = default_opts.merge!(opts)
      super(opts)
      #TODO puede especificar a quién watchear y sus opciones de
      #dibujado en los parámetros
      @watch_list = []
      @size = opts[:size]
      @attached_to = opts[:attach_to]
    end

    def text(text, opts={})
      watch(text, opts)
    end

    def watch(subject, opts={})
      @watch_list << [subject, opts]
    end

    def attach_to(actor)
      @attached_to = actor
    end

    def update
      unless @attached_to.nil?
        @x = @attached_to.x + @attached_to.image.width / 2
        @y = @attached_to.y - @attached_to.image.height / 2
      end
    end

    def draw
      pos_y = 0
      @watch_list.each do |watched, opts|
        my_size = opts[:size] || @size
        my_color = opts[:color] || @color
        my_text = watched.to_s
        if my_text.is_a?(String)
          $lotu.fonts[my_size].draw(my_text, @x, @y + pos_y, @z, @factor_x, @factor_y, my_color)
          pos_y += my_size
        else
          my_text.each do |line|
            $lotu.fonts[my_size].draw(line, @x, @y + pos_y, @z, @factor_x, @factor_y, my_color)
            pos_y += my_size
          end
        end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lotu-0.1.11 lib/lotu/text_box.rb
lotu-0.1.10 lib/lotu/text_box.rb