rutui 0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/{rutui.rb → lib/rutui.rb} +209 -47
- metadata +20 -41
    
        data/{rutui.rb → lib/rutui.rb}
    RENAMED
    
    | @@ -7,7 +7,7 @@ | |
| 7 7 | 
             
            # Author: Roman Pramberger (roman.pramberger@gmail.com)
         | 
| 8 8 | 
             
            # License: MIT
         | 
| 9 9 | 
             
            #
         | 
| 10 | 
            -
            #  | 
| 10 | 
            +
            # Sam Okt 27 19:04:33 CEST 2012
         | 
| 11 11 | 
             
            #
         | 
| 12 12 | 
             
            class RuTui
         | 
| 13 13 | 
             
            class Color
         | 
| @@ -62,6 +62,57 @@ class Utils | |
| 62 62 | 
             
            		system("tput cnorm")
         | 
| 63 63 | 
             
            	end
         | 
| 64 64 | 
             
            end
         | 
| 65 | 
            +
            class Pixel
         | 
| 66 | 
            +
            	attr_accessor :fg, :bg, :symbol
         | 
| 67 | 
            +
            	def initialize foreground = 15, background = nil, symbol = " "
         | 
| 68 | 
            +
            			@fg = foreground
         | 
| 69 | 
            +
            			@bg = background
         | 
| 70 | 
            +
            			@symbol = symbol
         | 
| 71 | 
            +
            	end
         | 
| 72 | 
            +
            	def self.random sym = "#"
         | 
| 73 | 
            +
            		Pixel.new(rand(255),rand(255),sym)
         | 
| 74 | 
            +
            	end
         | 
| 75 | 
            +
            end
         | 
| 76 | 
            +
            class Theme
         | 
| 77 | 
            +
            	@@themes = {}
         | 
| 78 | 
            +
            	@@use = :default
         | 
| 79 | 
            +
            	# init themes
         | 
| 80 | 
            +
            	def self.init
         | 
| 81 | 
            +
            		@@themes[:default] = {
         | 
| 82 | 
            +
            			:background => Pixel.new(236,234,":"),
         | 
| 83 | 
            +
            			:border 		=> Pixel.new(144,234,"-"),
         | 
| 84 | 
            +
            			:textcolor  => 11,
         | 
| 85 | 
            +
            			:rainbow 		=> [1,3,11,2,4,5]
         | 
| 86 | 
            +
            		}
         | 
| 87 | 
            +
            		@@themes[:light] = {
         | 
| 88 | 
            +
            			:background => Pixel.new(251,253,":"),
         | 
| 89 | 
            +
            			:border 		=> Pixel.new(237,253,"-"),
         | 
| 90 | 
            +
            			:textcolor  => 0,
         | 
| 91 | 
            +
            			:rainbow 		=> [1,3,11,2,4,5]
         | 
| 92 | 
            +
            		}
         | 
| 93 | 
            +
            	end
         | 
| 94 | 
            +
            	# Create new theme
         | 
| 95 | 
            +
            	def self.create name, theme
         | 
| 96 | 
            +
            		@@themes[name] = theme
         | 
| 97 | 
            +
            	end
         | 
| 98 | 
            +
            	# Delete theme
         | 
| 99 | 
            +
            	def self.delete name
         | 
| 100 | 
            +
            		@@themes.delete(name)
         | 
| 101 | 
            +
            	end
         | 
| 102 | 
            +
            	# Set value from current theme
         | 
| 103 | 
            +
            	def self.set key, val
         | 
| 104 | 
            +
            		@@themes[@@use][key] = val
         | 
| 105 | 
            +
            	end
         | 
| 106 | 
            +
            	# Get value from current theme
         | 
| 107 | 
            +
            	def self.get val
         | 
| 108 | 
            +
            		@@themes[@@use][val]
         | 
| 109 | 
            +
            	end
         | 
| 110 | 
            +
            	# set current theme
         | 
| 111 | 
            +
            	def self.use name
         | 
| 112 | 
            +
            		@@use = name if !@@themes[name].nil?
         | 
| 113 | 
            +
            	end
         | 
| 114 | 
            +
            end
         | 
| 115 | 
            +
            Theme.init
         | 
| 65 116 | 
             
            class BaseObject
         | 
| 66 117 | 
             
            	attr_accessor :x, :y, :width, :height, :obj
         | 
| 67 118 | 
             
            	# Ex.: BaseObject.new({ :x => 1, :y => 20, :obj => [[Pixel.new(1),Pixel.new(2,4,"#")]] })
         | 
| @@ -81,11 +132,19 @@ class BaseObject | |
| 81 132 | 
             
            	def set_pixel x, y, pixel
         | 
| 82 133 | 
             
            		@obj[x][y] = pixel if !@obj[x].nil? and !@obj[x][y].nil?
         | 
| 83 134 | 
             
            	end
         | 
| 135 | 
            +
            	# Get pixel by position
         | 
| 136 | 
            +
            	def get_pixel x, y
         | 
| 137 | 
            +
            		@obj[x][y] if !@obj[x].nil? and !@obj[x][y].nil?
         | 
| 138 | 
            +
            	end
         | 
| 84 139 | 
             
            	# "special" each methods for objects
         | 
| 85 | 
            -
            	def each | 
| 86 | 
            -
            		 | 
| 87 | 
            -
            			 | 
| 88 | 
            -
            				 | 
| 140 | 
            +
            	def each
         | 
| 141 | 
            +
            		if !@obj.nil?
         | 
| 142 | 
            +
            			@obj.each_with_index do |row,row_count|
         | 
| 143 | 
            +
            				if !row.nil?
         | 
| 144 | 
            +
            					row.each_with_index do |pixel,col_count|
         | 
| 145 | 
            +
            						yield row_count, col_count, pixel
         | 
| 146 | 
            +
            					end
         | 
| 147 | 
            +
            				end
         | 
| 89 148 | 
             
            			end
         | 
| 90 149 | 
             
            		end
         | 
| 91 150 | 
             
            	end
         | 
| @@ -103,9 +162,10 @@ class Box < RuTui::BaseObject | |
| 103 162 | 
             
            		@vertical   = options[:vertical]
         | 
| 104 163 | 
             
            		@horizontal = options[:horizontal]
         | 
| 105 164 | 
             
            		@corner   	= options[:corner]
         | 
| 106 | 
            -
            		 | 
| 107 | 
            -
            		@ | 
| 108 | 
            -
            		@ | 
| 165 | 
            +
            		ref = Theme.get(:border)
         | 
| 166 | 
            +
            		@horizontal = Pixel.new(ref.fg,ref.bg,"-") if options[:horizontal].nil?
         | 
| 167 | 
            +
            		@vertical   = Pixel.new(ref.fg,ref.bg,"|") if options[:vertical].nil?
         | 
| 168 | 
            +
            		@corner     = Pixel.new(ref.fg,ref.bg,"*") if options[:corner].nil?
         | 
| 109 169 | 
             
            		@width = 3 if @width < 3
         | 
| 110 170 | 
             
            		@height = 3 if @height < 3
         | 
| 111 171 | 
             
            		create
         | 
| @@ -147,8 +207,8 @@ class Line < BaseObject | |
| 147 207 | 
             
            		return if @x.nil? or @y.nil? or @width.nil?
         | 
| 148 208 | 
             
            		@pixel = options[:pixel]
         | 
| 149 209 | 
             
            		@endpixel = options[:endpixel]
         | 
| 150 | 
            -
            		@pixel =  | 
| 151 | 
            -
            		create
         | 
| 210 | 
            +
            		@pixel = Theme.get(:border) if @pixel.nil?
         | 
| 211 | 
            +
            		self.create
         | 
| 152 212 | 
             
            	end
         | 
| 153 213 | 
             
            	# Create Line
         | 
| 154 214 | 
             
            	# can be recalled any time on attribute changes
         | 
| @@ -173,6 +233,7 @@ class Circle < BaseObject | |
| 173 233 | 
             
            		@radius = options[:radius]
         | 
| 174 234 | 
             
            		@pixel = options[:pixel]
         | 
| 175 235 | 
             
            		@fill = options[:fill_pixel]
         | 
| 236 | 
            +
            		@pixel = Theme.get(:border) if @pixel.nil?
         | 
| 176 237 | 
             
            		return if @x.nil? or @y.nil? or @radius.nil?
         | 
| 177 238 | 
             
            		@width = options[:radius]*2 # needed?
         | 
| 178 239 | 
             
            		@height = @width # needed?
         | 
| @@ -202,16 +263,17 @@ class Circle < BaseObject | |
| 202 263 | 
             
            end
         | 
| 203 264 | 
             
            class Text < BaseObject
         | 
| 204 265 | 
             
            	attr_accessor :bg, :fg, :text, :do_rainbow
         | 
| 205 | 
            -
            	@@rainbow =  | 
| 266 | 
            +
            	@@rainbow = nil
         | 
| 206 267 | 
             
            	def initialize options
         | 
| 268 | 
            +
            		@@rainbow = Theme.get(:rainbow) if @@rainbow.nil?
         | 
| 207 269 | 
             
            		@do_rainbow = options[:rainbow]
         | 
| 208 270 | 
             
            		@text = options[:text]
         | 
| 209 271 | 
             
            		@x = options[:x]
         | 
| 210 272 | 
             
            		@y = options[:y]
         | 
| 211 273 | 
             
            		@bg = options[:background]
         | 
| 212 274 | 
             
            		@fg = options[:foreground]
         | 
| 213 | 
            -
            		@bg =  | 
| 214 | 
            -
            		@fg =  | 
| 275 | 
            +
            		@bg = Theme.get(:background).bg if @bg.nil?
         | 
| 276 | 
            +
            		@fg = Theme.get(:textcolor) if @fg.nil?
         | 
| 215 277 | 
             
            		return if @x.nil? or @y.nil?
         | 
| 216 278 | 
             
            		@height = 1
         | 
| 217 279 | 
             
            		create
         | 
| @@ -241,20 +303,9 @@ class Text < BaseObject | |
| 241 303 | 
             
            		create
         | 
| 242 304 | 
             
            	end
         | 
| 243 305 | 
             
            end
         | 
| 244 | 
            -
            class Pixel
         | 
| 245 | 
            -
            	attr_accessor :fg, :bg, :symbol
         | 
| 246 | 
            -
            	def initialize foreground = 15, background = nil, symbol = " "
         | 
| 247 | 
            -
            			@fg = foreground
         | 
| 248 | 
            -
            			@bg = background
         | 
| 249 | 
            -
            			@symbol = symbol
         | 
| 250 | 
            -
            	end
         | 
| 251 | 
            -
            	def self.random sym = "#"
         | 
| 252 | 
            -
            		Pixel.new(rand(255),rand(255),sym)
         | 
| 253 | 
            -
            	end
         | 
| 254 | 
            -
            end
         | 
| 255 306 | 
             
            class Screen
         | 
| 256 307 | 
             
            	# Initialize me with a default pixel, if you want
         | 
| 257 | 
            -
            	def initialize default_pixel =  | 
| 308 | 
            +
            	def initialize default_pixel = Theme.get(:background)
         | 
| 258 309 | 
             
            		size = Utils.winsize
         | 
| 259 310 | 
             
            		@smap = Array.new(size[0]){ Array.new(size[1]) }
         | 
| 260 311 | 
             
            		@map = @smap.dup
         | 
| @@ -286,9 +337,17 @@ class Screen | |
| 286 337 | 
             
            	def add_static object
         | 
| 287 338 | 
             
            		@statics << object if !@statics.include? object
         | 
| 288 339 | 
             
            		object.each do |ri,ci,pixel|
         | 
| 289 | 
            -
            			@smap[object.y+ri][object.x+ci] = pixel if !pixel.nil? and object.y+ri  | 
| 340 | 
            +
            			@smap[object.y+ri][object.x+ci] = pixel if !pixel.nil? and object.y+ri >= 0 and object.x+ci >= 0
         | 
| 290 341 | 
             
            		end
         | 
| 291 342 | 
             
            	end
         | 
| 343 | 
            +
            	# Set pixel on map
         | 
| 344 | 
            +
            	def set_pixel x,y,val
         | 
| 345 | 
            +
            		@smap[y][x] = val
         | 
| 346 | 
            +
            	end
         | 
| 347 | 
            +
            	# Get pixel from map
         | 
| 348 | 
            +
            	def get_pixel x,y
         | 
| 349 | 
            +
            		@smap[y][x]
         | 
| 350 | 
            +
            	end
         | 
| 292 351 | 
             
            	# add dynamic object
         | 
| 293 352 | 
             
            	def add object
         | 
| 294 353 | 
             
            		@objects << object
         | 
| @@ -357,10 +416,9 @@ class ScreenManager | |
| 357 416 | 
             
            		@@screens[name]
         | 
| 358 417 | 
             
            	end
         | 
| 359 418 | 
             
            	# Refit screen size
         | 
| 360 | 
            -
            	def refit
         | 
| 419 | 
            +
            	def self.refit
         | 
| 361 420 | 
             
            		size = Utils.winsize
         | 
| 362 421 | 
             
            		if @autofit or size != @lastsize
         | 
| 363 | 
            -
            			File.open("log.log", 'w') {|f| f.write("#{size[0]}-#{size[1]}\n") }
         | 
| 364 422 | 
             
            			@@screens[@@current].rescreen
         | 
| 365 423 | 
             
            			@lastsize = size
         | 
| 366 424 | 
             
            		end
         | 
| @@ -375,6 +433,7 @@ class ScreenManager | |
| 375 433 | 
             
            	def self.loop options
         | 
| 376 434 | 
             
            		autodraw = options[:autodraw]
         | 
| 377 435 | 
             
            		@autofit = options[:autofit]
         | 
| 436 | 
            +
            		@autofit = true if @autofit.nil?
         | 
| 378 437 | 
             
            		@lastsize = nil
         | 
| 379 438 | 
             
            		Utils.init
         | 
| 380 439 | 
             
            		ScreenManager.draw
         | 
| @@ -385,17 +444,35 @@ class ScreenManager | |
| 385 444 | 
             
            			ScreenManager.draw if autodraw
         | 
| 386 445 | 
             
            		end
         | 
| 387 446 | 
             
            	end
         | 
| 447 | 
            +
            	def self.draw_loop options
         | 
| 448 | 
            +
            		autofit = options[:autofit]
         | 
| 449 | 
            +
            		while true
         | 
| 450 | 
            +
            			key = Utils.gets
         | 
| 451 | 
            +
            			yield
         | 
| 452 | 
            +
            			ScreenManager.refit if @autofit
         | 
| 453 | 
            +
            			ScreenManager.draw
         | 
| 454 | 
            +
            		end
         | 
| 455 | 
            +
            	end
         | 
| 456 | 
            +
            	def self.input_loop options
         | 
| 457 | 
            +
            		Thread.new {
         | 
| 458 | 
            +
            			while true
         | 
| 459 | 
            +
            				key = Utils.gets
         | 
| 460 | 
            +
            				yield key
         | 
| 461 | 
            +
            			end
         | 
| 462 | 
            +
            		}
         | 
| 463 | 
            +
            	end
         | 
| 388 464 | 
             
            end
         | 
| 389 465 | 
             
            class Figlet < BaseObject
         | 
| 390 466 | 
             
            	attr_accessor :text, :rainbow, :font, :colors
         | 
| 391 | 
            -
            	# Figlet font: '!" #$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz[|] | 
| 392 | 
            -
            	@@chars = '!!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz[|] | 
| 393 | 
            -
            	@@rainbow =  | 
| 467 | 
            +
            	# Figlet font: '!" #$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz[|]'
         | 
| 468 | 
            +
            	@@chars = '!!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz[|]'.split("")
         | 
| 469 | 
            +
            	@@rainbow = nil
         | 
| 394 470 | 
             
            	@@fonts = {}
         | 
| 395 471 | 
             
            	# Initialize (see above)
         | 
| 396 472 | 
             
            	def initialize options
         | 
| 397 473 | 
             
            		@x = options[:x]
         | 
| 398 474 | 
             
            		@y = options[:y]
         | 
| 475 | 
            +
            		@@rainbow = Theme.get(:rainbow) if @@rainbow.nil?
         | 
| 399 476 | 
             
            		return if @x.nil? or @y.nil?
         | 
| 400 477 | 
             
            		@font = options[:font]
         | 
| 401 478 | 
             
            		@text = options[:text]
         | 
| @@ -403,7 +480,7 @@ class Figlet < BaseObject | |
| 403 480 | 
             
            		@space = options[:space]
         | 
| 404 481 | 
             
            		@space = 0 if @space.nil?
         | 
| 405 482 | 
             
            		@colors = options[:colors]
         | 
| 406 | 
            -
            		@colors = [Pixel.new( | 
| 483 | 
            +
            		@colors = [Pixel.new(Theme.get(:textcolor))] if @colors.nil?
         | 
| 407 484 | 
             
            		create
         | 
| 408 485 | 
             
            	end
         | 
| 409 486 |  | 
| @@ -517,34 +594,119 @@ class Axx < BaseObject | |
| 517 594 | 
             
            end
         | 
| 518 595 | 
             
            class Axx < BaseObject
         | 
| 519 596 | 
             
            	def initialize options
         | 
| 520 | 
            -
            		@x = options[:x]
         | 
| 521 | 
            -
            		@y = options[:y]
         | 
| 522 597 | 
             
            		@file = options[:file]
         | 
| 523 | 
            -
            		 | 
| 524 | 
            -
            		return if @x.nil? or @y.nil? or @file.nil?
         | 
| 598 | 
            +
            		return if @file.nil?
         | 
| 525 599 | 
             
            		return if !File.exists? @file
         | 
| 526 600 | 
             
            		@img = File.open(@file).read
         | 
| 527 | 
            -
            		p @img
         | 
| 528 601 | 
             
            		parse
         | 
| 529 602 | 
             
            	end
         | 
| 530 603 | 
             
            	def parse
         | 
| 531 604 | 
             
            		out = []
         | 
| 532 605 | 
             
            		@img.split("\n").each_with_index do |line,li|
         | 
| 533 | 
            -
            			 | 
| 534 | 
            -
             | 
| 535 | 
            -
            				 | 
| 536 | 
            -
             | 
| 537 | 
            -
            					 | 
| 538 | 
            -
             | 
| 539 | 
            -
            					 | 
| 540 | 
            -
             | 
| 541 | 
            -
            					 | 
| 606 | 
            +
            			if !line.match(/^#/)
         | 
| 607 | 
            +
            				out[li] = []
         | 
| 608 | 
            +
            				line.split("|").each_with_index do |elem,ei|
         | 
| 609 | 
            +
            					ele = elem.split(":")
         | 
| 610 | 
            +
            					if ele.size == 3
         | 
| 611 | 
            +
            						out[li][ei] = Pixel.new(ele[1].to_i,ele[2].to_i,ele[0])
         | 
| 612 | 
            +
            					elsif ele.size == 2
         | 
| 613 | 
            +
            						out[li][ei] = Pixel.new(ele[1].to_i,nil,ele[0])
         | 
| 614 | 
            +
            					else
         | 
| 615 | 
            +
            						if ele[0] == "nil"
         | 
| 616 | 
            +
            							out[li][ei] = nil
         | 
| 617 | 
            +
            						else
         | 
| 618 | 
            +
            							out[li][ei] = Pixel.new(nil,nil,ele[0])
         | 
| 619 | 
            +
            						end
         | 
| 620 | 
            +
            					end
         | 
| 542 621 | 
             
            				end
         | 
| 543 622 | 
             
            			end
         | 
| 544 623 | 
             
            		end
         | 
| 624 | 
            +
            		out.each do |o|
         | 
| 625 | 
            +
            			out.delete(o) if o.nil?
         | 
| 626 | 
            +
            		end
         | 
| 545 627 | 
             
            		@obj = out
         | 
| 546 628 | 
             
            		@height = out.size
         | 
| 547 | 
            -
            		@width = out | 
| 629 | 
            +
            		@width = out.size
         | 
| 630 | 
            +
            	end
         | 
| 631 | 
            +
            	def self.parse data
         | 
| 632 | 
            +
            		out = []
         | 
| 633 | 
            +
            		data.split("\n").each_with_index do |line,li|
         | 
| 634 | 
            +
            			if !line.match(/^#/)
         | 
| 635 | 
            +
            				out[li] = []
         | 
| 636 | 
            +
            				line.split("|").each_with_index do |elem,ei|
         | 
| 637 | 
            +
            					ele = elem.split(":")
         | 
| 638 | 
            +
            					if ele.size == 3
         | 
| 639 | 
            +
            						out[li][ei] = Pixel.new(ele[1].to_i,ele[2].to_i,ele[0])
         | 
| 640 | 
            +
            					elsif ele.size == 2
         | 
| 641 | 
            +
            						out[li][ei] = Pixel.new(ele[1].to_i,nil,ele[0])
         | 
| 642 | 
            +
            					else
         | 
| 643 | 
            +
            						if ele[0] == "nil"
         | 
| 644 | 
            +
            							out[li][ei] = nil
         | 
| 645 | 
            +
            						else
         | 
| 646 | 
            +
            							out[li][ei] = Pixel.new(nil,nil,ele[0])
         | 
| 647 | 
            +
            						end
         | 
| 648 | 
            +
            					end
         | 
| 649 | 
            +
            				end
         | 
| 650 | 
            +
            			end
         | 
| 651 | 
            +
            		end
         | 
| 652 | 
            +
            		out.each do |o|
         | 
| 653 | 
            +
            			out.delete(o) if o.nil? or o == []
         | 
| 654 | 
            +
            		end
         | 
| 655 | 
            +
            		return out
         | 
| 656 | 
            +
            	end
         | 
| 657 | 
            +
            end
         | 
| 658 | 
            +
            class Sprite < BaseObject
         | 
| 659 | 
            +
            	attr_accessor :tick, :current, :sprites, :ticks, :object
         | 
| 660 | 
            +
            	@@spr = []
         | 
| 661 | 
            +
            	def initialize options
         | 
| 662 | 
            +
            		@x = options[:x]
         | 
| 663 | 
            +
            		@y = options[:y]
         | 
| 664 | 
            +
            		@x = 0 if @x.nil?
         | 
| 665 | 
            +
            		@y = 0 if @y.nil?
         | 
| 666 | 
            +
            		@tick = 0
         | 
| 667 | 
            +
            		@object = options[:obj]
         | 
| 668 | 
            +
            		@file = options[:file]
         | 
| 669 | 
            +
            		@current = nil
         | 
| 670 | 
            +
            		@@spr << self
         | 
| 671 | 
            +
            		@sprites = {}
         | 
| 672 | 
            +
            		create_from_file if !@file.nil?
         | 
| 673 | 
            +
            	end
         | 
| 674 | 
            +
            	def create_from_file
         | 
| 675 | 
            +
            		if File.exists? @file
         | 
| 676 | 
            +
            			data = File.open(@file).read
         | 
| 677 | 
            +
            			# AXX Format
         | 
| 678 | 
            +
            			if data.include? '---' and data.include? '| :' 
         | 
| 679 | 
            +
            				out = []
         | 
| 680 | 
            +
            				data = data.split("---")
         | 
| 681 | 
            +
            				while data.size > 0
         | 
| 682 | 
            +
            					while data[0].match(/^#/)
         | 
| 683 | 
            +
            						data.shift
         | 
| 684 | 
            +
            					end
         | 
| 685 | 
            +
            					name = data.shift
         | 
| 686 | 
            +
            					content = data.shift
         | 
| 687 | 
            +
            					@sprites[name] = [] if @sprites[name].nil?
         | 
| 688 | 
            +
            					@sprites[name] << Axx.parse(content)
         | 
| 689 | 
            +
            					@current = name if @current.nil? # first sprite gets default
         | 
| 690 | 
            +
            					@obj = @sprites[@current][0]
         | 
| 691 | 
            +
            				end
         | 
| 692 | 
            +
            			end
         | 
| 693 | 
            +
            		end
         | 
| 694 | 
            +
            	end
         | 
| 695 | 
            +
            	# set current animation
         | 
| 696 | 
            +
            	def set_current name
         | 
| 697 | 
            +
            		@current = name
         | 
| 698 | 
            +
            		@obj = @sprites[@current][0]
         | 
| 699 | 
            +
            	end
         | 
| 700 | 
            +
            	# Add sprite
         | 
| 701 | 
            +
            	def add name, images
         | 
| 702 | 
            +
            		@current = name if @current.nil? # first sprite gets default
         | 
| 703 | 
            +
            		@sprites[name] = images
         | 
| 704 | 
            +
            	end
         | 
| 705 | 
            +
            	# Update ticker
         | 
| 706 | 
            +
            	def update
         | 
| 707 | 
            +
            		@tick += 1
         | 
| 708 | 
            +
            		@tick = 0 if @tick >= ( @sprites[@current].size )
         | 
| 709 | 
            +
            		@obj = @sprites[@current][@tick]
         | 
| 548 710 | 
             
            	end
         | 
| 549 711 | 
             
            end
         | 
| 550 712 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,66 +1,45 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rutui
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 5 | 
            -
              prerelease:  | 
| 6 | 
            -
              segments: 
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 1
         | 
| 9 | 
            -
              version: "0.1"
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: '0.2'
         | 
| 5 | 
            +
              prerelease: 
         | 
| 10 6 | 
             
            platform: ruby
         | 
| 11 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 12 8 | 
             
            - Roman Pramberger
         | 
| 13 9 | 
             
            autorequire: 
         | 
| 14 10 | 
             
            bindir: bin
         | 
| 15 11 | 
             
            cert_chain: []
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            date: 2012-07-22 00:00:00 +02:00
         | 
| 18 | 
            -
            default_executable: 
         | 
| 12 | 
            +
            date: 2012-07-22 00:00:00.000000000 Z
         | 
| 19 13 | 
             
            dependencies: []
         | 
| 20 | 
            -
             | 
| 21 14 | 
             
            description: Create Pure Ruby textbased interfaces of all kinds (Unix only)
         | 
| 22 15 | 
             
            email: roman.pramberger@gmail.com
         | 
| 23 16 | 
             
            executables: []
         | 
| 24 | 
            -
             | 
| 25 17 | 
             
            extensions: []
         | 
| 26 | 
            -
             | 
| 27 18 | 
             
            extra_rdoc_files: []
         | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
            - rutui.rb
         | 
| 31 | 
            -
            has_rdoc: true
         | 
| 19 | 
            +
            files:
         | 
| 20 | 
            +
            - lib/rutui.rb
         | 
| 32 21 | 
             
            homepage: http://rubygems.org/gems/rutui
         | 
| 33 22 | 
             
            licenses: []
         | 
| 34 | 
            -
             | 
| 35 23 | 
             
            post_install_message: 
         | 
| 36 24 | 
             
            rdoc_options: []
         | 
| 37 | 
            -
             | 
| 38 | 
            -
            require_paths: 
         | 
| 25 | 
            +
            require_paths:
         | 
| 39 26 | 
             
            - lib
         | 
| 40 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 27 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 41 28 | 
             
              none: false
         | 
| 42 | 
            -
              requirements: | 
| 43 | 
            -
              - -  | 
| 44 | 
            -
                - !ruby/object:Gem::Version | 
| 45 | 
            -
                   | 
| 46 | 
            -
             | 
| 47 | 
            -
                  - 0
         | 
| 48 | 
            -
                  version: "0"
         | 
| 49 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 29 | 
            +
              requirements:
         | 
| 30 | 
            +
              - - ! '>='
         | 
| 31 | 
            +
                - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                  version: '0'
         | 
| 33 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 50 34 | 
             
              none: false
         | 
| 51 | 
            -
              requirements: | 
| 52 | 
            -
              - -  | 
| 53 | 
            -
                - !ruby/object:Gem::Version | 
| 54 | 
            -
                   | 
| 55 | 
            -
                  segments: 
         | 
| 56 | 
            -
                  - 0
         | 
| 57 | 
            -
                  version: "0"
         | 
| 35 | 
            +
              requirements:
         | 
| 36 | 
            +
              - - ! '>='
         | 
| 37 | 
            +
                - !ruby/object:Gem::Version
         | 
| 38 | 
            +
                  version: '0'
         | 
| 58 39 | 
             
            requirements: []
         | 
| 59 | 
            -
             | 
| 60 40 | 
             
            rubyforge_project: 
         | 
| 61 | 
            -
            rubygems_version: 1. | 
| 41 | 
            +
            rubygems_version: 1.8.23
         | 
| 62 42 | 
             
            signing_key: 
         | 
| 63 43 | 
             
            specification_version: 3
         | 
| 64 44 | 
             
            summary: RUby Textbased User Interface
         | 
| 65 45 | 
             
            test_files: []
         | 
| 66 | 
            -
             |