Skip to content

Instantly share code, notes, and snippets.

View shawn42's full-sized avatar

Shawn Anderson shawn42

  • Cisco
  • Holland, MI
View GitHub Profile
@shawn42
shawn42 / gamebox_fade.rb
Created January 3, 2015 23:05
fading text in gamebox
define_behavior :fades do
requires :director
setup do # |opts|
fade_out_time = 3_000
actor.has_attributes total_fade_time: fade_out_time, fade_time: fade_out_time
director.when :update do |time_ms, secs|
actor.fade_time -= time_ms
alpha = 255 * actor.fade_time / actor.total_fade_time
actor.remove if actor.fade_time <= 0
@shawn42
shawn42 / demo_stage.rb
Created January 6, 2015 02:14
tween usage in gamebox
define_stage :demo do
requires :tween_manager
curtain_up do
@player = spawn :player, x: 10, y:30
tween = tween_manager.tween_properties @player, {x: 600, y:750}, 6_000, Tween::Sine::InOut
# tweens can be canceled if need be, or they will clean themselves up when finished
timer_manager.add_timer :foo, 3_000, false do
tween.cancel!
end
@shawn42
shawn42 / demo_stage.rb
Created January 9, 2015 20:07
Shadow effect in Gamebox
define_behavior :faded do
requires :timer_manager
setup do
actor.has_attributes shadows: [], shadows_to_render: opts[:shadows_to_render]
timer_manager.add_timer timer_name, 100 do
new_shadow = {x: actor.x, y: actor.y}
actor.shadows << new_shadow
actor.shadows.shift if actor.shadows.size > actor.shadows_to_render
end
STATS_DIRECTORIES = [
%w(Source src/),
%w(Config config/),
%w(Maps maps/),
%w(Unit\ tests specs/),
%w(Libraries lib/),
].collect { |name, dir| [ name, "#{APP_ROOT}/#{dir}" ] }.select { |name, dir| File.directory?(dir) }
desc "Report code statistics (KLOCs, etc) from the application"
task :stats do
require 'inflector'
# Actor represent a game object.
# Actors can have behaviors added and removed from them.
class Actor
attr_accessor :behaviors
def initialize
@behaviors = {}
# add our classes behaviors
class_behaviors = self.class.behaviors.dup
require 'mode'
require 'level'
require 'director'
require 'actor'
class ActorView
attr_accessor :actor, :mode
def initialize(mode,actor)
@mode = mode
@actor = actor
i = @input_manager
i.reg KeyDownEvent, K_SPACE do
ship.warp vec2(rand(400)-100,rand(400)-100)
end
i.reg KeyDownEvent, K_LEFT do
ship.moving_left = true
end
i.reg KeyDownEvent, K_RIGHT do
ship.moving_right = true
end
@input_manager.when :event_received do |event|
case event
when KeyDownEvent
case event.key
when K_SPACE
ship.warp vec2(300,300)
when K_LEFT
ship.moving_left = true
when K_RIGHT
ship.moving_right = true
class Clock
def tick()
passed = Clock.runtime() - @last_tick # how long since the last tick?
if @target_frametime
wait = @target_frametime - passed
if wait > 0
return Clock.wait(@target_frametime - passed) + passed
else
return passed
end
#!/usr/bin/env ruby
$: << "#{File.dirname(__FILE__)}/../config"
require 'environment'
require 'gamebox'
if $0 == __FILE__
GameboxApp.run ARGV, ENV
end
require 'actor'