Class: Gtk::Pong::Window

Inherits:
Window
  • Object
show all
Includes:
BaseModule
Defined in:
lib/games_paradise/pong/gtk/cairo_pong.rb

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect

Instance Method Summary collapse

Constructor Details

#initialize(speed = 30) ⇒ Window

#

initialize

#


199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/games_paradise/pong/gtk/cairo_pong.rb', line 199

def initialize(speed = 30)
  super()
  reset
  @speed = speed
  self.title = 'Pong Demonstration'
  signal_connect(:destroy) { Gtk.main_quit }
  signal_connect(:key_press_event) { |widget, event|
    if event.state.control_mask? and event.keyval == Gdk::Keyval::GDK_q
      destroy
      true
    else
      false
    end
  }
  set_default_size(260, 200)
  @field = Field.new
  @drawing_area = gtk_drawing_area
  set_expose_event

  vb = Gtk::VBox.new(false, 5)
  vb.border_width = 10
  vb.pack_start(@drawing_area, true, true, 0)
  vb.show_all
  add(vb)

  Gtk.timeout_add(@speed) {
    @field.update
    @drawing_area.queue_draw unless @drawing_area.destroyed?
  }
  move(0, 0)
end

Instance Method Details

#resetObject

#

reset

#


234
235
236
237
238
239
# File 'lib/games_paradise/pong/gtk/cairo_pong.rb', line 234

def reset
  # ======================================================================= #
  # === @configuration
  # ======================================================================= #
  @configuration = [true, __dir__, NAMESPACE]
end

#set_expose_eventObject

#

set_expose_event

#


244
245
246
247
248
249
250
# File 'lib/games_paradise/pong/gtk/cairo_pong.rb', line 244

def set_expose_event
  @drawing_area.signal_connect(:expose_event) { |widget, event|
    cr = widget.window.create_cairo_context
    cr.scale(*widget.window.size)
    @field.draw(cr)
  }
end