Class: Scene
- Inherits:
-
Object
show all
- Defined in:
- lib/rubysketch/solitaire/common/scene.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#activated ⇒ Object
-
#active? ⇒ Boolean
-
#add(scene) ⇒ Object
-
#deactivated ⇒ Object
-
#draw ⇒ Object
-
#emitParticle(x, y, w, h, sec = nil, &block) ⇒ Object
-
#focusChanged(focus) ⇒ Object
-
#initialize(name = self.class.name, *scenes) ⇒ Scene
constructor
-
#mouseDragged(x, y, dx, dy) ⇒ Object
-
#mouseMoved(x, y, dx, dy) ⇒ Object
-
#mousePressed(x, y, button) ⇒ Object
-
#mouseReleased(x, y, button) ⇒ Object
-
#particle ⇒ Object
-
#pause ⇒ Object
-
#remove(scene) ⇒ Object
-
#resized(w, h) ⇒ Object
-
#resume ⇒ Object
-
#sprites ⇒ Object
-
#transition(to, effect = nil, *args, **kwargs, &block) ⇒ Object
-
#update ⇒ Object
Constructor Details
#initialize(name = self.class.name, *scenes) ⇒ Scene
Returns a new instance of Scene.
6
7
8
9
10
11
12
13
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 6
def initialize(name = self.class.name, *scenes)
@name = name
@scenes = []
@active = self.class == RootScene
@prevSize = [width, height]
resized *@prevSize
scenes.each {|scene| add scene}
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
15
16
17
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 15
def name
@name
end
|
#parent ⇒ Object
Returns the value of attribute parent.
15
16
17
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 15
def parent
@parent
end
|
Instance Method Details
#activated ⇒ Object
97
98
99
100
101
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 97
def activated()
@active = true
@scenes.each {|scene| scene.activated}
sprites.each {|sprite| addSprite sprite}
end
|
#active? ⇒ Boolean
71
72
73
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 71
def active?()
@active
end
|
#add(scene) ⇒ Object
23
24
25
26
27
28
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 23
def add(scene)
@scenes.push scene
scene.parent = self
scene.activated if active?
scene
end
|
#deactivated ⇒ Object
103
104
105
106
107
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 103
def deactivated()
sprites.each {|sprite| removeSprite sprite}
@scenes.each {|scene| scene.deactivated}
@active = false
end
|
#draw ⇒ Object
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 83
def draw()
update
@scenes.each do |scene|
push {scene.draw}
end
push do
blendMode ADD
particle.draw
end
end
|
#emitParticle(x, y, w, h, sec = nil, &block) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 48
def emitParticle(x, y, w, h, sec = nil, &block)
par = particle.new x, y, w, h
start = now
par.update do
time = now - start
t = sec ? time / sec : nil
result = block&.call time, t
if result == false || (t || 1) >= 1
par.update {}
par.delete
end
end
par
end
|
#focusChanged(focus) ⇒ Object
109
110
111
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 109
def focusChanged(focus)
@scenes.each {|scene| scene.focusChanged focus}
end
|
#mouseDragged(x, y, dx, dy) ⇒ Object
125
126
127
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 125
def mouseDragged(x, y, dx, dy)
@scenes.each {|scene| scene.mouseDragged x, y, dx, dy}
end
|
#mouseMoved(x, y, dx, dy) ⇒ Object
121
122
123
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 121
def mouseMoved(x, y, dx, dy)
@scenes.each {|scene| scene.mouseMoved x, y, dx, dy}
end
|
#mousePressed(x, y, button) ⇒ Object
113
114
115
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 113
def mousePressed(x, y, button)
@scenes.each {|scene| scene.mousePressed x, y, button}
end
|
#mouseReleased(x, y, button) ⇒ Object
117
118
119
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 117
def mouseReleased(x, y, button)
@scenes.each {|scene| scene.mouseReleased x, y, button}
end
|
#particle ⇒ Object
67
68
69
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 67
def particle()
@particle ||= Particle.new
end
|
#pause ⇒ Object
17
18
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 17
def pause()
end
|
#remove(scene) ⇒ Object
30
31
32
33
34
35
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 30
def remove(scene)
@scenes.delete scene
scene.deactivated if active?
scene.parent = nil
scene
end
|
#resized(w, h) ⇒ Object
94
95
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 94
def resized(w, h)
end
|
#resume ⇒ Object
20
21
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 20
def resume()
end
|
#sprites ⇒ Object
63
64
65
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 63
def sprites()
particle.sprites
end
|
#transition(to, effect = nil, *args, **kwargs, &block) ⇒ Object
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 37
def transition(to, effect = nil, *args, **kwargs, &block)
if effect
add effect.new(to, *args, **kwargs, &block)
else
parent.add to
parent.remove self
block.call if block
end
to
end
|
#update ⇒ Object
75
76
77
78
79
80
81
|
# File 'lib/rubysketch/solitaire/common/scene.rb', line 75
def update()
size = [width, height]
if size != @prevSize
resized(*size)
@prevSize = size
end
end
|