gamefic-sdk 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/html/core/engine.js +89 -20
- data/html/sinatra/engine.js +27 -13
- data/html/skins/hypertext/index.html +0 -2
- data/html/skins/standard/play.js +0 -66
- data/lib/gamefic-sdk.rb +2 -1
- data/lib/gamefic-sdk/build.rb +11 -19
- data/lib/gamefic-sdk/config.rb +126 -0
- data/lib/gamefic-sdk/platform.rb +12 -0
- data/lib/gamefic-sdk/platform/base.rb +35 -33
- data/lib/gamefic-sdk/platform/gfic.rb +5 -18
- data/lib/gamefic-sdk/platform/sinatra.rb +29 -31
- data/lib/gamefic-sdk/platform/web.rb +72 -65
- data/lib/gamefic-sdk/platform/web/app_config.rb +48 -48
- data/lib/gamefic-sdk/platform/web/engine.rb +10 -7
- data/lib/gamefic-sdk/platform/web/user.rb +3 -3
- data/lib/gamefic-sdk/server.rb +17 -19
- data/lib/gamefic-sdk/shell.rb +68 -16
- data/lib/gamefic-sdk/shell/init.rb +3 -19
- data/lib/gamefic-sdk/shell/test.rb +9 -14
- data/lib/gamefic-sdk/version.rb +1 -1
- data/scripts/save-restore-undo.plot.rb +25 -0
- data/scripts/snapshots.plot.rb +16 -14
- data/scripts/standard.plot.rb +3 -5
- data/scripts/standard/actions.plot.rb +1 -11
- data/scripts/standard/actions/drop.plot.rb +1 -1
- data/scripts/standard/actions/enter.plot.rb +4 -16
- data/scripts/standard/actions/go.plot.rb +2 -36
- data/scripts/standard/actions/insert.plot.rb +7 -21
- data/scripts/standard/actions/inventory.plot.rb +2 -1
- data/scripts/standard/actions/leave.plot.rb +7 -18
- data/scripts/standard/actions/look.plot.rb +45 -44
- data/scripts/standard/actions/nil.plot.rb +1 -1
- data/scripts/standard/actions/take.plot.rb +10 -28
- data/scripts/standard/actions/talk.plot.rb +9 -13
- data/scripts/standard/clothing.plot.rb +4 -0
- data/scripts/standard/clothing/actions.plot.rb +4 -0
- data/scripts/{clothing → standard/clothing}/actions/doff.plot.rb +0 -0
- data/scripts/{clothing → standard/clothing}/actions/drop.plot.rb +8 -8
- data/scripts/{clothing → standard/clothing}/actions/inventory.plot.rb +14 -14
- data/scripts/standard/clothing/actions/wear.plot.rb +20 -0
- data/scripts/standard/clothing/entities.plot.rb +7 -0
- data/scripts/{clothing → standard/clothing}/entities/clothing.plot.rb +0 -2
- data/scripts/standard/clothing/entities/coat.plot.rb +3 -0
- data/scripts/standard/clothing/entities/gloves.plot.rb +3 -0
- data/scripts/standard/clothing/entities/hat.plot.rb +3 -0
- data/scripts/standard/clothing/entities/pants.plot.rb +3 -0
- data/scripts/standard/clothing/entities/shirt.plot.rb +3 -0
- data/scripts/standard/clothing/entities/shoes.plot.rb +3 -0
- data/scripts/standard/container.plot.rb +28 -0
- data/scripts/{debug.plot.rb → standard/container/actions.plot.rb} +0 -0
- data/scripts/standard/container/entities.plot.rb +5 -0
- data/scripts/standard/direction.plot.rb +1 -2
- data/scripts/{edible.plot.rb → standard/edible.plot.rb} +5 -3
- data/scripts/standard/entities.plot.rb +3 -3
- data/scripts/standard/entities/character.plot.rb +9 -6
- data/scripts/standard/entities/fixture.plot.rb +1 -1
- data/scripts/standard/entities/item.plot.rb +2 -4
- data/scripts/standard/entities/portal.plot.rb +9 -5
- data/scripts/standard/entities/receptacle.plot.rb +1 -1
- data/scripts/standard/entities/room.plot.rb +5 -5
- data/scripts/standard/entities/scenery.plot.rb +2 -4
- data/scripts/standard/entities/supporter.plot.rb +4 -7
- data/scripts/standard/entities/thing.plot.rb +7 -0
- data/scripts/standard/{actions/give.plot.rb → give.plot.rb} +27 -25
- data/scripts/standard/lockable.plot.rb +79 -0
- data/scripts/standard/modules.plot.rb +2 -4
- data/scripts/standard/modules/attachable.plot.rb +1 -0
- data/scripts/standard/modules/locale_description.plot.rb +20 -0
- data/scripts/standard/{use.plot.rb → modules/use.plot.rb} +51 -47
- data/scripts/standard/openable.plot.rb +43 -0
- data/scripts/standard/pathfinder.plot.rb +11 -6
- data/scripts/standard/test.plot.rb +2 -0
- data/scripts/undo.plot.rb +13 -11
- metadata +30 -65
- data/lib/gamefic-sdk/plot_config.rb +0 -25
- data/scripts/ansi.plot.rb +0 -13
- data/scripts/autosuggest.plot.rb +0 -165
- data/scripts/clothing.plot.rb +0 -2
- data/scripts/clothing/actions.plot.rb +0 -4
- data/scripts/clothing/actions/wear.plot.rb +0 -19
- data/scripts/clothing/entities.plot.rb +0 -7
- data/scripts/clothing/entities/coat.plot.rb +0 -5
- data/scripts/clothing/entities/gloves.plot.rb +0 -5
- data/scripts/clothing/entities/hat.plot.rb +0 -5
- data/scripts/clothing/entities/pants.plot.rb +0 -5
- data/scripts/clothing/entities/shirt.plot.rb +0 -5
- data/scripts/clothing/entities/shoes.plot.rb +0 -5
- data/scripts/cover.plot.rb +0 -30
- data/scripts/furniture.plot.rb +0 -35
- data/scripts/hints.plot.rb +0 -31
- data/scripts/hypertext.plot.rb +0 -280
- data/scripts/media.plot.rb +0 -17
- data/scripts/multimedia.plot.rb +0 -41
- data/scripts/questions.plot.rb +0 -17
- data/scripts/room-modes.plot.rb +0 -48
- data/scripts/rough-sizes.plot.rb +0 -36
- data/scripts/save-restore.plot.rb +0 -22
- data/scripts/standard/actions/close.plot.rb +0 -16
- data/scripts/standard/actions/lock.plot.rb +0 -59
- data/scripts/standard/actions/look-under.plot.rb +0 -8
- data/scripts/standard/actions/open.plot.rb +0 -34
- data/scripts/standard/actions/read.plot.rb +0 -3
- data/scripts/standard/actions/search.plot.rb +0 -40
- data/scripts/standard/actions/show.plot.rb +0 -13
- data/scripts/standard/actions/unlock.plot.rb +0 -77
- data/scripts/standard/actions/use.plot.rb +0 -25
- data/scripts/standard/entities/container.plot.rb +0 -8
- data/scripts/standard/entities/door.plot.rb +0 -51
- data/scripts/standard/entities/entity.plot.rb +0 -12
- data/scripts/standard/entities/exterior.plot.rb +0 -5
- data/scripts/standard/modules/darkenable.plot.rb +0 -6
- data/scripts/standard/modules/lockable.plot.rb +0 -25
- data/scripts/standard/modules/openable.plot.rb +0 -15
- data/scripts/standard/modules/transparent.plot.rb +0 -6
- data/scripts/standard/plural.plot.rb +0 -2
- data/scripts/standard/plural/actions.plot.rb +0 -4
- data/scripts/standard/plural/actions/drop.plot.rb +0 -126
- data/scripts/standard/plural/actions/insert.plot.rb +0 -60
- data/scripts/standard/plural/actions/place.plot.rb +0 -37
- data/scripts/standard/plural/actions/take.plot.rb +0 -175
- data/scripts/standard/plural/queries.plot.rb +0 -5
- data/scripts/standard/plural/queries/ambiguous_visible.plot.rb +0 -13
- data/scripts/standard/plural/queries/any_expression.plot.rb +0 -17
- data/scripts/standard/plural/queries/many_visible.plot.rb +0 -13
- data/scripts/standard/plural/queries/not_expression.plot.rb +0 -16
- data/scripts/standard/plural/queries/plural_visible.plot.rb +0 -22
- data/scripts/suggestible.plot.rb +0 -54
data/lib/gamefic-sdk/platform.rb
CHANGED
@@ -5,6 +5,18 @@ module Gamefic::Sdk
|
|
5
5
|
autoload :Gfic, 'gamefic-sdk/platform/gfic'
|
6
6
|
autoload :Web, 'gamefic-sdk/platform/web'
|
7
7
|
autoload :Sinatra, 'gamefic-sdk/platform/sinatra'
|
8
|
+
|
9
|
+
#def self.load directory, platform
|
10
|
+
# config_file = File.join(directory, 'config.yaml')
|
11
|
+
#end
|
12
|
+
|
13
|
+
def self.load config, name
|
14
|
+
target = config.targets[name]
|
15
|
+
raise ArgumentError.new("Config does not have a target '#{name}'") if target.nil?
|
16
|
+
cls = Gamefic::Sdk::Platform.const_get(target['platform'])
|
17
|
+
raise ArgumentError.new("Platform '#{target['platform']}' not found") if target.nil?
|
18
|
+
cls.new(config: config, target: target.merge('name' => name))
|
19
|
+
end
|
8
20
|
end
|
9
21
|
|
10
22
|
end
|
@@ -1,62 +1,64 @@
|
|
1
1
|
require 'gamefic-sdk'
|
2
2
|
require 'gamefic-sdk/debug/plot'
|
3
|
-
require 'gamefic-sdk/plot_config'
|
3
|
+
#require 'gamefic-sdk/plot_config'
|
4
|
+
require 'pathname'
|
4
5
|
|
5
6
|
module Gamefic::Sdk
|
6
7
|
class Platform::Base
|
7
|
-
# @return [Gamefic::Sdk::
|
8
|
-
attr_reader :source_dir
|
9
|
-
|
10
|
-
# @return [Hash]
|
8
|
+
# @return [Gamefic::Sdk::Config]
|
11
9
|
attr_reader :config
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
10
|
+
|
11
|
+
# @return [Hash]
|
12
|
+
attr_reader :target
|
13
|
+
|
14
|
+
#def initialize config, name = nil
|
15
|
+
def initialize config: Gamefic::Sdk::Config.new, target: {}
|
16
|
+
#@source_dir = source_dir
|
17
|
+
#@name = name
|
18
|
+
#@config = config
|
19
|
+
#@config.freeze
|
20
|
+
@config = config
|
21
|
+
@target = target
|
21
22
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
|
24
|
+
def name
|
25
|
+
@name ||= (target['name'] || self.class.to_s.split('::').last.downcase)
|
26
|
+
end
|
27
|
+
|
28
|
+
def build_target
|
29
|
+
@build_target ||= File.join(config.build_path, name)
|
26
30
|
end
|
27
|
-
|
31
|
+
|
32
|
+
def release_target
|
33
|
+
@release_target ||= File.join(config.release_path, name)
|
34
|
+
end
|
35
|
+
|
36
|
+
# @return [Gamefic::Plot]
|
28
37
|
def plot
|
29
38
|
if @plot.nil?
|
30
|
-
paths =
|
39
|
+
paths = [config.script_path, config.import_path, Gamefic::Sdk::GLOBAL_SCRIPT_PATH]
|
40
|
+
# @todo: Should really use Gamefic::Sdk::Debug::Plot or just Gamfic::Plot?
|
31
41
|
@plot = Gamefic::Sdk::Debug::Plot.new(Gamefic::Source::File.new(*paths))
|
32
42
|
@plot.script 'main'
|
33
43
|
end
|
34
44
|
@plot
|
35
45
|
end
|
36
|
-
|
37
|
-
# Get a hash of default configuration values.
|
38
|
-
# Platforms can overload this method to define their own defaults.
|
39
|
-
# @return [Hash]
|
40
|
-
def defaults
|
41
|
-
@defaults ||= Hash.new
|
42
|
-
end
|
43
|
-
|
46
|
+
|
44
47
|
def build
|
45
48
|
# Platforms need to build/compile the deployment here.
|
46
49
|
raise "The base Platform class does not have a build method"
|
47
50
|
end
|
48
|
-
|
51
|
+
|
49
52
|
def clean
|
50
53
|
puts "Nothing to do for this platform."
|
51
54
|
end
|
52
|
-
|
53
|
-
# Get a
|
55
|
+
|
56
|
+
# Get a hash of build metadata.
|
54
57
|
#
|
55
58
|
# @return [Hash]
|
56
59
|
def metadata
|
57
60
|
hash = {}
|
58
|
-
uuid =
|
59
|
-
hash[:uuid] = "#{uuid}"
|
61
|
+
hash[:uuid] = config.uuid
|
60
62
|
hash[:gamefic_version] = "#{Gamefic::VERSION}"
|
61
63
|
hash[:sdk_version] = "#{Gamefic::Sdk::VERSION}"
|
62
64
|
hash[:build_date] = "#{DateTime.now}"
|
@@ -5,26 +5,9 @@ require 'yaml'
|
|
5
5
|
module Gamefic::Sdk
|
6
6
|
|
7
7
|
class Platform::Gfic < Platform::Base
|
8
|
-
def defaults
|
9
|
-
@defaults ||= {
|
10
|
-
:filename => nil,
|
11
|
-
:with_html => true,
|
12
|
-
:with_media => true
|
13
|
-
}
|
14
|
-
end
|
15
8
|
def build
|
16
|
-
target_dir = config['target_dir']
|
17
|
-
if config['filename'].to_s == ''
|
18
|
-
if plot_config.title.to_s == ''
|
19
|
-
filename = File.join(target_dir, File.expand_path(source_dir).split('/').delete_if{|i| i.to_s == ''}.last + '.gfic')
|
20
|
-
else
|
21
|
-
filename = File.join(target_dir, plot_config.title.gsub(/ /, '-').downcase + '.gfic')
|
22
|
-
end
|
23
|
-
else
|
24
|
-
filename = File.join(target_dir, config['filename'])
|
25
|
-
end
|
26
9
|
FileUtils.rm filename if File.file?(filename)
|
27
|
-
FileUtils.mkdir_p
|
10
|
+
FileUtils.mkdir_p release_target
|
28
11
|
Zip::File.open(filename, Zip::File::CREATE) do |zipfile|
|
29
12
|
plot.imported_scripts.each { |script|
|
30
13
|
zipfile.add File.join('scripts', "#{script.path}.plot.rb"), script.absolute_path
|
@@ -35,6 +18,10 @@ module Gamefic::Sdk
|
|
35
18
|
end
|
36
19
|
end
|
37
20
|
end
|
21
|
+
|
22
|
+
def filename
|
23
|
+
@filename ||= File.join(release_target, (target['filename'] || 'game.gfic'))
|
24
|
+
end
|
38
25
|
end
|
39
26
|
|
40
27
|
end
|
@@ -8,26 +8,22 @@ module Gamefic::Sdk
|
|
8
8
|
|
9
9
|
def build
|
10
10
|
STDERR.puts "Building for Sinatra"
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
render_index target_dir
|
18
|
-
copy_assets build_dir, target_dir
|
19
|
-
copy_media source_dir, target_dir
|
20
|
-
FileUtils.cp_r File.join(Gamefic::Sdk::HTML_TEMPLATE_PATH, 'sinatra', 'engine.js'), File.join(target_dir, 'core', 'engine.js')
|
11
|
+
FileUtils.mkdir_p release_target
|
12
|
+
copy_html_files
|
13
|
+
render_index
|
14
|
+
copy_assets
|
15
|
+
copy_media
|
16
|
+
FileUtils.cp_r File.join(Gamefic::Sdk::HTML_TEMPLATE_PATH, 'sinatra', 'engine.js'), File.join(release_target, 'core', 'engine.js')
|
21
17
|
end
|
22
18
|
|
23
|
-
def clean
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
19
|
+
#def clean
|
20
|
+
# FileUtils.remove_entry_secure config['build_path'] if File.exist?(config['build_path'])
|
21
|
+
# FileUtils.mkdir_p config['build_path']
|
22
|
+
# puts "#{config['build_path']} cleaned."
|
23
|
+
#end
|
28
24
|
|
29
25
|
def app_config
|
30
|
-
@app_config ||= AppConfig.new source_dir, config, ["core/engine.js"]
|
26
|
+
@app_config ||= AppConfig.new config.source_dir, config, ["core/engine.js"]
|
31
27
|
end
|
32
28
|
|
33
29
|
private
|
@@ -45,52 +41,54 @@ module Gamefic::Sdk
|
|
45
41
|
end
|
46
42
|
|
47
43
|
# Copy everything in source except config and template
|
48
|
-
def copy_html_files
|
44
|
+
def copy_html_files
|
49
45
|
Dir.entries(app_config.html_dir).each { |entry|
|
50
46
|
if entry != 'index.rb' and entry != 'index.html.erb' and entry != '.' and entry != '..'
|
51
|
-
FileUtils.mkdir_p
|
52
|
-
FileUtils.cp_r "#{app_config.html_dir}/#{entry}", "#{
|
47
|
+
FileUtils.mkdir_p release_target + '/' + File.dirname(entry)
|
48
|
+
FileUtils.cp_r "#{app_config.html_dir}/#{entry}", "#{release_target}/#{entry}"
|
53
49
|
end
|
54
50
|
}
|
55
51
|
end
|
56
52
|
|
57
|
-
def render_index
|
53
|
+
def render_index
|
58
54
|
# Render index
|
59
|
-
File.open(
|
55
|
+
File.open(release_target + "/index.html", "w") do |file|
|
60
56
|
file << app_config.render
|
61
57
|
end
|
62
58
|
end
|
63
59
|
|
64
|
-
def copy_assets
|
60
|
+
def copy_assets
|
65
61
|
paths = app_config.resource_paths
|
66
|
-
paths.push
|
62
|
+
paths.push build_target
|
67
63
|
app_config.javascripts.each { |js|
|
68
64
|
absolute = resolve(js, paths)
|
69
|
-
FileUtils.mkdir_p
|
70
|
-
FileUtils.cp_r absolute,
|
65
|
+
FileUtils.mkdir_p release_target + "/" + File.dirname(js)
|
66
|
+
FileUtils.cp_r absolute, release_target + "/" + js
|
71
67
|
}
|
72
68
|
app_config.stylesheets.each { |css|
|
73
69
|
absolute = resolve(css, paths)
|
74
|
-
FileUtils.mkdir_p
|
75
|
-
FileUtils.cp_r absolute,
|
70
|
+
FileUtils.mkdir_p release_target + "/" + File.dirname(css)
|
71
|
+
FileUtils.cp_r absolute, release_target + "/" + css
|
76
72
|
}
|
77
73
|
end
|
78
74
|
|
79
|
-
|
75
|
+
=begin
|
76
|
+
def copy_media
|
80
77
|
# Copy media
|
81
78
|
pc = PlotConfig.new "#{source_dir}/config.yaml"
|
82
79
|
pc.media_paths.each { |path|
|
83
80
|
if File.directory?(path)
|
84
|
-
FileUtils.mkdir_p
|
81
|
+
FileUtils.mkdir_p release_target + "/media"
|
85
82
|
Dir.entries(path).each { |entry|
|
86
83
|
if entry != '.' and entry != '..'
|
87
|
-
FileUtils.mkdir_p
|
88
|
-
FileUtils.cp_r path + "/" + entry,
|
84
|
+
FileUtils.mkdir_p release_target + "/media/" + File.dirname(entry)
|
85
|
+
FileUtils.cp_r path + "/" + entry, release_target + "/media/" + entry
|
89
86
|
end
|
90
87
|
}
|
91
88
|
end
|
92
89
|
}
|
93
90
|
end
|
91
|
+
=end
|
94
92
|
|
95
93
|
def metadata_code
|
96
94
|
"\nGameficOpal.static_plot.metadata = JSON.parse('#{metadata.to_json}')"
|
@@ -8,38 +8,38 @@ module Gamefic::Sdk
|
|
8
8
|
class Platform::Web < Platform::Base
|
9
9
|
autoload :AppConfig, 'gamefic-sdk/platform/web/app_config'
|
10
10
|
|
11
|
-
def defaults
|
12
|
-
@defaults ||= {
|
13
|
-
'html_skin' => 'standard',
|
14
|
-
'with_media' => true
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
11
|
def app_config
|
19
|
-
@app_config ||= AppConfig.new source_dir, config, ["core/opal.js", "core/gamefic.js", "core/static.js", "core/scripts.js", "core/engine.js"]
|
12
|
+
@app_config ||= AppConfig.new config.source_dir, config, ["core/opal.js", "core/gamefic.js", "core/static.js", "core/scripts.js", "core/engine.js"]
|
20
13
|
end
|
21
14
|
|
22
15
|
def build
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
render_index target_dir
|
34
|
-
copy_assets build_dir, target_dir
|
35
|
-
copy_media source_dir, target_dir
|
36
|
-
|
16
|
+
FileUtils.mkdir_p release_target
|
17
|
+
FileUtils.mkdir_p build_target
|
18
|
+
copy_html_files
|
19
|
+
build_opal_js
|
20
|
+
build_gamefic_js
|
21
|
+
build_static_js
|
22
|
+
build_scripts_js
|
23
|
+
render_index
|
24
|
+
copy_assets
|
25
|
+
copy_media
|
37
26
|
end
|
38
27
|
|
39
28
|
def clean
|
40
|
-
FileUtils.remove_entry_secure
|
41
|
-
|
42
|
-
|
29
|
+
FileUtils.remove_entry_secure build_target if File.exist?(build_target)
|
30
|
+
puts "#{name} cleaned."
|
31
|
+
end
|
32
|
+
|
33
|
+
def html_dir
|
34
|
+
if @html_dir.nil?
|
35
|
+
local_dir = (target['html'] ? target['html'] : 'html')
|
36
|
+
@html_dir = Pathname.new(config.source_dir).join(local_dir).to_s
|
37
|
+
@html_dir = nil unless Dir.exist?(@html_dir)
|
38
|
+
if @html_dir.nil?
|
39
|
+
@html_dir = File.join(Gamefic::Sdk::HTML_TEMPLATE_PATH, 'skins', 'standard')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
@html_dir
|
43
43
|
end
|
44
44
|
|
45
45
|
private
|
@@ -57,21 +57,22 @@ module Gamefic::Sdk
|
|
57
57
|
end
|
58
58
|
|
59
59
|
# Copy everything in source except config and template
|
60
|
-
def copy_html_files
|
61
|
-
Dir.entries(app_config.html_dir).each { |entry|
|
60
|
+
def copy_html_files
|
61
|
+
#Dir.entries(app_config.html_dir).each { |entry|
|
62
|
+
Dir.entries(html_dir).each { |entry|
|
62
63
|
if entry != 'index.rb' and entry != 'index.html.erb' and entry != '.' and entry != '..'
|
63
|
-
FileUtils.mkdir_p
|
64
|
-
FileUtils.cp_r "#{app_config.html_dir}/#{entry}", "#{
|
64
|
+
FileUtils.mkdir_p release_target + '/' + File.dirname(entry)
|
65
|
+
FileUtils.cp_r "#{app_config.html_dir}/#{entry}", "#{release_target}/#{entry}"
|
65
66
|
end
|
66
67
|
}
|
67
68
|
end
|
68
69
|
|
69
|
-
def build_opal_js
|
70
|
+
def build_opal_js
|
70
71
|
# Make sure core exists in build directory
|
71
|
-
FileUtils.mkdir_p
|
72
|
+
FileUtils.mkdir_p build_target + "/core"
|
72
73
|
# Opal core
|
73
|
-
if !File.exist?(
|
74
|
-
File.open(
|
74
|
+
if !File.exist?(build_target + "/core/opal.js")
|
75
|
+
File.open(build_target + "/core/opal.js", "w") do |file|
|
75
76
|
file << Uglifier.compile(
|
76
77
|
Opal::Builder.build('opal').to_s + "\n" + Opal::Builder.build('json').to_s + "\n" + Opal::Builder.build('native').to_s
|
77
78
|
)
|
@@ -79,22 +80,20 @@ module Gamefic::Sdk
|
|
79
80
|
end
|
80
81
|
end
|
81
82
|
|
82
|
-
def build_gamefic_js
|
83
|
+
def build_gamefic_js
|
83
84
|
# Gamefic core
|
84
85
|
Opal.use_gem 'gamefic'
|
85
|
-
if !File.exist?(
|
86
|
-
File.open(
|
86
|
+
if !File.exist?(build_target + "/core/gamefic.js")
|
87
|
+
File.open(build_target + "/core/gamefic.js", "w") do |file|
|
87
88
|
file << Uglifier.compile(Opal::Builder.build('gamefic').to_s)
|
88
89
|
end
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
92
|
-
def build_static_js
|
93
|
-
# GameficOpal
|
93
|
+
def build_static_js
|
94
94
|
Opal.append_path Gamefic::Sdk::LIB_PATH
|
95
|
-
if !File.exist?(
|
96
|
-
File.open(
|
97
|
-
#file << Opal::Builder.build('gamefic-sdk/platform/web/gamefic_opal')
|
95
|
+
if !File.exist?(build_target + "/core/static.js")
|
96
|
+
File.open(build_target + "/core/static.js", "w") do |file|
|
98
97
|
file << Uglifier.compile(
|
99
98
|
Opal::Builder.build('gamefic-sdk/platform/web/engine').to_s + "\n" + Opal::Builder.build('gamefic-sdk/platform/web/user').to_s
|
100
99
|
)
|
@@ -102,8 +101,12 @@ module Gamefic::Sdk
|
|
102
101
|
end
|
103
102
|
end
|
104
103
|
|
105
|
-
def build_scripts_js
|
106
|
-
File.open("#{
|
104
|
+
def build_scripts_js
|
105
|
+
File.open("#{build_target}/scripts.rb", 'w') do |file|
|
106
|
+
#file << "def Module.const_missing sym\n"
|
107
|
+
#file << "puts 'From Object to Gamefic'\n"
|
108
|
+
#file << "Gamefic.const_get sym\n"
|
109
|
+
#file << "end\n"
|
107
110
|
file << "module Gamefic\n"
|
108
111
|
file << "$scripts = {}\n"
|
109
112
|
plot.imported_scripts.each { |script|
|
@@ -116,47 +119,51 @@ module Gamefic::Sdk
|
|
116
119
|
file << "$plot.script 'main'\n"
|
117
120
|
file << "$engine = Gamefic::Engine::Web.new($plot)\n"
|
118
121
|
file << "end\n"
|
122
|
+
file << "$plot.stage do\n"
|
123
|
+
file << "def self.const_missing sym\n"
|
124
|
+
file << "Gamefic.const_get sym\n"
|
125
|
+
file << "end\n"
|
126
|
+
file << "end\n"
|
127
|
+
#file << "def $plot.theater.const_missing sym\n"
|
128
|
+
#file << 'puts "Trying to get #{sym} from object"' + "\n"
|
129
|
+
#file << "Object.const_get sym\n"
|
130
|
+
#file << "end\n"
|
119
131
|
end
|
120
|
-
Opal.append_path
|
121
|
-
File.open(
|
132
|
+
Opal.append_path build_target
|
133
|
+
File.open(build_target + "/core/scripts.js", 'w') do |file|
|
122
134
|
file << Uglifier.compile(Opal::Builder.build('scripts').to_s)
|
123
135
|
end
|
124
136
|
end
|
125
137
|
|
126
|
-
def render_index
|
138
|
+
def render_index
|
127
139
|
# Render index
|
128
|
-
File.open(
|
140
|
+
File.open(release_target + "/index.html", "w") do |file|
|
129
141
|
file << app_config.render
|
130
142
|
end
|
131
143
|
end
|
132
144
|
|
133
|
-
def copy_assets
|
145
|
+
def copy_assets
|
134
146
|
paths = app_config.resource_paths
|
135
|
-
paths.push
|
147
|
+
paths.push build_target
|
136
148
|
app_config.javascripts.each { |js|
|
137
149
|
absolute = resolve(js, paths)
|
138
|
-
FileUtils.mkdir_p
|
139
|
-
FileUtils.cp_r absolute,
|
150
|
+
FileUtils.mkdir_p release_target + "/" + File.dirname(js)
|
151
|
+
FileUtils.cp_r absolute, release_target + "/" + js
|
140
152
|
}
|
141
153
|
app_config.stylesheets.each { |css|
|
142
154
|
absolute = resolve(css, paths)
|
143
|
-
FileUtils.mkdir_p
|
144
|
-
FileUtils.cp_r absolute,
|
155
|
+
FileUtils.mkdir_p release_target + "/" + File.dirname(css)
|
156
|
+
FileUtils.cp_r absolute, release_target + "/" + css
|
145
157
|
}
|
146
158
|
end
|
147
159
|
|
148
|
-
def copy_media
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
if
|
153
|
-
FileUtils.mkdir_p
|
154
|
-
|
155
|
-
if entry != '.' and entry != '..'
|
156
|
-
FileUtils.mkdir_p target_dir + "/media/" + File.dirname(entry)
|
157
|
-
FileUtils.cp_r path + "/" + entry, target_dir + "/media/" + entry
|
158
|
-
end
|
159
|
-
}
|
160
|
+
def copy_media
|
161
|
+
FileUtils.mkdir_p release_target + "/media"
|
162
|
+
return unless File.directory?(config.media_path)
|
163
|
+
Dir.entries(config.media_path).each { |entry|
|
164
|
+
if entry != '.' and entry != '..'
|
165
|
+
FileUtils.mkdir_p release_target + "/media/" + File.dirname(entry)
|
166
|
+
FileUtils.cp_r config.media_path + "/" + entry, release_target + "/media/" + entry
|
160
167
|
end
|
161
168
|
}
|
162
169
|
end
|