7 changed files with 100 additions and 0 deletions
@ -0,0 +1,17 @@ |
|||||||
|
module Squib |
||||||
|
module Commands |
||||||
|
|
||||||
|
module Visitable |
||||||
|
def accept visitor |
||||||
|
visitor.visit self |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
class Command |
||||||
|
def accept visitor |
||||||
|
raise NotImpelementedError.new |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
module Squib |
||||||
|
module Commands |
||||||
|
|
||||||
|
class Font < Command |
||||||
|
include Visitable |
||||||
|
attr_accessor :type, :size |
||||||
|
|
||||||
|
def initialize(type,size, options) |
||||||
|
@type = type |
||||||
|
@size = size |
||||||
|
#no other options yet |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
module Squib |
||||||
|
module Commands |
||||||
|
|
||||||
|
class SetFont < Command |
||||||
|
include Visitable |
||||||
|
attr_accessor :type, :size, :options |
||||||
|
|
||||||
|
def initialize(type, size, options) |
||||||
|
@type = type |
||||||
|
@size = size |
||||||
|
#no options yet |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
module Squib |
||||||
|
#Global queue of commands |
||||||
|
CMDS = [] |
||||||
|
|
||||||
|
def queue_command(cmd) |
||||||
|
unless cmd.instance_of? Squib::Commands::Command |
||||||
|
raise ArgumentError, "Only RockDeck::Commands allowed here" |
||||||
|
end |
||||||
|
CMDS << cmd |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
module Squib |
||||||
|
module Render |
||||||
|
|
||||||
|
class RenderContext |
||||||
|
attr_accessor :font #current font we're using |
||||||
|
attr_accessor :cur #index of the current card rendering |
||||||
|
attr_accessor :cards #total number of cards we're iterating over |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,12 @@ |
|||||||
|
module Squib |
||||||
|
module Visitors |
||||||
|
|
||||||
|
class BaseVisitor |
||||||
|
def visit subject |
||||||
|
method_name = "visit_#{subject.class}".intern |
||||||
|
send(method_name, subject) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
Loading…
Reference in new issue