bjork 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/bjork +7 -0
- data/bjork.gemspec +1 -0
- data/lib/bjork/cli.rb +28 -0
- data/lib/bjork/generator.rb +37 -0
- data/lib/bjork/templates/Gemfile +8 -0
- data/lib/bjork/templates/project/source/app.coffee +3 -0
- data/lib/bjork/templates/project/source/main.coffee +17 -0
- data/lib/bjork/templates/project/source/player.coffee +24 -0
- data/lib/bjork/version.rb +1 -1
- data/lib/bjork.rb +5 -0
- metadata +27 -5
- data/lib/bjork/source_maps.rb +0 -65
- data//360/237/230/216 +0 -9
data/bin/bjork
ADDED
data/bjork.gemspec
CHANGED
data/lib/bjork/cli.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require "thor"
|
2
|
+
|
3
|
+
module Bjork
|
4
|
+
class CLI < Thor
|
5
|
+
desc "version", "Show version"
|
6
|
+
def version
|
7
|
+
require "bjork/version"
|
8
|
+
say "Bjork #{VERSION}"
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "create NAME", "Create a project"
|
12
|
+
def create(name)
|
13
|
+
say "Creating #{name}"
|
14
|
+
require "bjork/generator"
|
15
|
+
|
16
|
+
Bjork::Generator.new([name]).invoke_all
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "server", "Run your game!"
|
20
|
+
def server
|
21
|
+
# TODO Move into server file
|
22
|
+
require "bjork"
|
23
|
+
Bjork::Server.run!
|
24
|
+
end
|
25
|
+
|
26
|
+
default_task :server
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "thor/group"
|
3
|
+
|
4
|
+
module Bjork
|
5
|
+
class Generator < ::Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
source_root File.join(File.dirname(__FILE__), "templates")
|
9
|
+
|
10
|
+
argument :location, :type => :string
|
11
|
+
|
12
|
+
def generate_files!
|
13
|
+
# Copy project template
|
14
|
+
directory "project", location
|
15
|
+
|
16
|
+
%w[
|
17
|
+
Gemfile
|
18
|
+
].each do |file|
|
19
|
+
template file, File.join(location, file)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def setup!
|
24
|
+
inside(location) do
|
25
|
+
fn = -> { run('bundle install') }
|
26
|
+
|
27
|
+
if defined? Bundler
|
28
|
+
Bundler.with_clean_env(&fn)
|
29
|
+
else
|
30
|
+
fn.call
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# TODO Generate static docs
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#= require_tree .
|
2
|
+
|
3
|
+
canvas = $("canvas").attr(
|
4
|
+
width: App.width
|
5
|
+
height: App.height
|
6
|
+
).pixieCanvas()
|
7
|
+
|
8
|
+
window.engine = Engine
|
9
|
+
backgroundColor: Color("Slate Gray").lighten(0.2)
|
10
|
+
canvas: canvas
|
11
|
+
FPS: 60
|
12
|
+
|
13
|
+
engine.add "Player",
|
14
|
+
x: App.width/2
|
15
|
+
y: App.height/2
|
16
|
+
|
17
|
+
engine.start()
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Player class constructor
|
2
|
+
Player = (I={}) ->
|
3
|
+
|
4
|
+
# Default values that can be overriden when creating a new player.
|
5
|
+
Object.defaults I,
|
6
|
+
width: 16
|
7
|
+
height: 16
|
8
|
+
speed: 90
|
9
|
+
|
10
|
+
# The player is a GameObject
|
11
|
+
self = GameObject(I)
|
12
|
+
|
13
|
+
# Automatically get arrow key controls by including "Controllable"
|
14
|
+
self.include "Controllable"
|
15
|
+
|
16
|
+
# Bind an update event
|
17
|
+
# This will run each game step
|
18
|
+
self.on "update", (elapsedTime) ->
|
19
|
+
# Clamp the player's position to be within the screen
|
20
|
+
I.x = I.x.clamp(I.width/2, App.width - I.width/2)
|
21
|
+
I.y = I.y.clamp(I.height/2, App.height - I.height/2)
|
22
|
+
|
23
|
+
# We must return a reference to self from the constructor
|
24
|
+
return self
|
data/lib/bjork/version.rb
CHANGED
data/lib/bjork.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
Bundler.require :components
|
3
|
+
|
1
4
|
require "bjork/version"
|
2
5
|
require "bjork/try_static"
|
3
6
|
|
@@ -11,12 +14,14 @@ require "sprockets"
|
|
11
14
|
require "shank"
|
12
15
|
require "jquery-source"
|
13
16
|
|
17
|
+
# TODO: Is there a way we can get the best of both worlds?
|
14
18
|
# Defaulting to bare compilation
|
15
19
|
Tilt::CoffeeScriptTemplate.default_bare = true
|
16
20
|
|
17
21
|
module Bjork
|
18
22
|
class Server < Sinatra::Base
|
19
23
|
configure do
|
24
|
+
set :port, ENV["PORT"] || 1999
|
20
25
|
enable :logging
|
21
26
|
|
22
27
|
# Serve any assets that exist in our folders
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bjork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -123,6 +123,22 @@ dependencies:
|
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: thor
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
126
142
|
- !ruby/object:Gem::Dependency
|
127
143
|
name: jquery-source
|
128
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,7 +158,8 @@ dependencies:
|
|
142
158
|
description: A magical singing HTML5 game server
|
143
159
|
email:
|
144
160
|
- yahivin@gmail.com
|
145
|
-
executables:
|
161
|
+
executables:
|
162
|
+
- bjork
|
146
163
|
extensions: []
|
147
164
|
extra_rdoc_files: []
|
148
165
|
files:
|
@@ -151,16 +168,21 @@ files:
|
|
151
168
|
- LICENSE.txt
|
152
169
|
- README.md
|
153
170
|
- Rakefile
|
171
|
+
- bin/bjork
|
154
172
|
- bjork.gemspec
|
155
173
|
- lib/bjork.rb
|
156
|
-
- lib/bjork/
|
174
|
+
- lib/bjork/cli.rb
|
175
|
+
- lib/bjork/generator.rb
|
157
176
|
- lib/bjork/tasks.rb
|
177
|
+
- lib/bjork/templates/Gemfile
|
178
|
+
- lib/bjork/templates/project/source/app.coffee
|
179
|
+
- lib/bjork/templates/project/source/main.coffee
|
180
|
+
- lib/bjork/templates/project/source/player.coffee
|
158
181
|
- lib/bjork/try_static.rb
|
159
182
|
- lib/bjork/version.rb
|
160
183
|
- lib/stylesheets/all.css
|
161
184
|
- lib/views/debug.haml
|
162
185
|
- lib/views/index.haml
|
163
|
-
- ! "\U0001F60E"
|
164
186
|
homepage: ''
|
165
187
|
licenses:
|
166
188
|
- MIT
|
data/lib/bjork/source_maps.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
# TODO: Not currently working with concatenated Sprockets files :(
|
2
|
-
|
3
|
-
# Monkey patch some source maps
|
4
|
-
module CoffeeScript
|
5
|
-
class << self
|
6
|
-
def compile(script, options = {})
|
7
|
-
script = script.read if script.respond_to?(:read)
|
8
|
-
|
9
|
-
if options.key?(:no_wrap) && !options.key?(:bare)
|
10
|
-
options[:bare] = options[:no_wrap]
|
11
|
-
else
|
12
|
-
options[:bare] = false
|
13
|
-
end
|
14
|
-
|
15
|
-
# TODO: Better root_dir
|
16
|
-
root_dir = Pathname("radical")
|
17
|
-
|
18
|
-
pathname = options[:pathname]
|
19
|
-
if pathname.nil?
|
20
|
-
return Source.context.call("CoffeeScript.compile", script, options)
|
21
|
-
else
|
22
|
-
clean_name = pathname.basename.to_s.split(".").first
|
23
|
-
|
24
|
-
rel_path = if pathname.to_s.start_with?(Bundler.bundle_path.to_s)
|
25
|
-
Pathname('bundler').join(pathname.relative_path_from(Bundler.bundle_path)).dirname
|
26
|
-
else
|
27
|
-
pathname.relative_path_from(root_dir).dirname
|
28
|
-
end
|
29
|
-
|
30
|
-
chill_dir = root_dir.join("source_maps")
|
31
|
-
map_dir = chill_dir.join(rel_path)
|
32
|
-
map_dir.mkpath
|
33
|
-
|
34
|
-
map_file = map_dir.join("#{clean_name}.map")
|
35
|
-
coffee_file = map_dir.join("#{clean_name}.coffee")
|
36
|
-
|
37
|
-
options[:sourceMap] = true
|
38
|
-
# coffee requires filename option to work with source maps (see http://coffeescript.org/documentation/docs/coffee-script.html#section-4)
|
39
|
-
options[:filename] = "#{clean_name}.coffee"
|
40
|
-
# specify coffee source file explicitly (see http://coffeescript.org/documentation/docs/sourcemap.html#section-8)
|
41
|
-
options[:sourceFiles] = ["/#{coffee_file.relative_path_from(chill_dir)}"]
|
42
|
-
ret = Source.context.call("CoffeeScript.compile", script, options)
|
43
|
-
|
44
|
-
coffee_file.open('w') {|f| f.puts script }
|
45
|
-
map_file.open('w') {|f| f.puts ret["v3SourceMap"]}
|
46
|
-
|
47
|
-
comment = "//@ sourceMappingURL=/#{map_file.relative_path_from(chill_dir)}\n"
|
48
|
-
return ret['js'] + comment
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# Monkeypatch this method to include the scripts' pathname
|
56
|
-
require 'tilt/coffee'
|
57
|
-
|
58
|
-
module Tilt
|
59
|
-
class CoffeeScriptTemplate < Template
|
60
|
-
def evaluate(scope, locals, &block)
|
61
|
-
pathname = scope.respond_to?(:pathname) ? scope.pathname : nil
|
62
|
-
@output ||= CoffeeScript.compile(data, options.merge(:pathname => pathname))
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|