dxopal 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.ignore +5 -0
  4. data/.nojekyll +4 -0
  5. data/CHANGELOG.md +90 -0
  6. data/DEVELOPMENT.md +57 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +39 -0
  9. data/README.md +22 -0
  10. data/Rakefile +66 -0
  11. data/TODO.md +278 -0
  12. data/build/dxopal.js +46590 -0
  13. data/build/dxopal.min.js +1 -0
  14. data/config.ru +39 -0
  15. data/doc/api/DXOpal.html +129 -0
  16. data/doc/api/DXOpal/Font.html +485 -0
  17. data/doc/api/DXOpal/Image.html +2533 -0
  18. data/doc/api/DXOpal/Input.html +1086 -0
  19. data/doc/api/DXOpal/Input/MouseCodes.html +146 -0
  20. data/doc/api/DXOpal/RemoteResource.html +641 -0
  21. data/doc/api/DXOpal/Sound.html +568 -0
  22. data/doc/api/DXOpal/SoundEffect.html +444 -0
  23. data/doc/api/DXOpal/SoundEffect/WaveTypes.html +130 -0
  24. data/doc/api/DXOpal/Sprite.html +1419 -0
  25. data/doc/api/DXOpal/Window.html +1915 -0
  26. data/doc/api/_index.html +228 -0
  27. data/doc/api/class_list.html +51 -0
  28. data/doc/api/css/common.css +1 -0
  29. data/doc/api/css/full_list.css +58 -0
  30. data/doc/api/css/style.css +492 -0
  31. data/doc/api/file.CHANGELOG.html +162 -0
  32. data/doc/api/file.README.html +124 -0
  33. data/doc/api/file_list.html +61 -0
  34. data/doc/api/frames.html +17 -0
  35. data/doc/api/index.html +124 -0
  36. data/doc/api/js/app.js +248 -0
  37. data/doc/api/js/full_list.js +216 -0
  38. data/doc/api/js/jquery.js +4 -0
  39. data/doc/api/method_list.html +939 -0
  40. data/doc/api/top-level-namespace.html +110 -0
  41. data/doc/en/index.html +93 -0
  42. data/doc/ja/index.html +92 -0
  43. data/dxopal.gemspec +29 -0
  44. data/exe/dxopal +44 -0
  45. data/index.html +56 -0
  46. data/opal/dxopal.rb +54 -0
  47. data/opal/dxopal/constants/colors.rb +16 -0
  48. data/opal/dxopal/font.rb +20 -0
  49. data/opal/dxopal/image.rb +301 -0
  50. data/opal/dxopal/input.rb +170 -0
  51. data/opal/dxopal/input/key_codes.rb +168 -0
  52. data/opal/dxopal/remote_resource.rb +65 -0
  53. data/opal/dxopal/sound.rb +53 -0
  54. data/opal/dxopal/sound_effect.rb +84 -0
  55. data/opal/dxopal/sprite.rb +94 -0
  56. data/opal/dxopal/sprite/collision_area.rb +288 -0
  57. data/opal/dxopal/sprite/collision_check.rb +106 -0
  58. data/opal/dxopal/sprite/collision_checker.rb +169 -0
  59. data/opal/dxopal/sprite/physics.rb +82 -0
  60. data/opal/dxopal/version.rb +3 -0
  61. data/opal/dxopal/window.rb +173 -0
  62. data/template/index.html +13 -0
  63. data/template/main.rb +9 -0
  64. metadata +191 -0
@@ -0,0 +1,110 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.9.9
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index</a> &raquo;
40
+
41
+
42
+ <span class="title">Top Level Namespace</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Top Level Namespace
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ </div>
80
+
81
+ <h2>Defined Under Namespace</h2>
82
+ <p class="children">
83
+
84
+
85
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="DXOpal.html" title="DXOpal (module)">DXOpal</a></span>
86
+
87
+
88
+
89
+
90
+ </p>
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+ </div>
101
+
102
+ <div id="footer">
103
+ Generated on Tue Oct 17 13:56:27 2017 by
104
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
+ 0.9.9 (ruby-2.4.2).
106
+ </div>
107
+
108
+ </div>
109
+ </body>
110
+ </html>
data/doc/en/index.html ADDED
@@ -0,0 +1,93 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset= "utf-8" />
5
+ <title>DXOpal demo</title>
6
+
7
+ <link href='https://fonts.googleapis.com/css?family=Arvo:400,700,400italic' rel='stylesheet' type='text/css'>
8
+ <link rel="stylesheet" href="../../vendor/pages-themes-dinky-14e8031/_site/assets/css/style.css">
9
+ <script src="../../vendor/pages-themes-dinky-14e8031/_site/assets/js/scale.fix.js"></script>
10
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
11
+ </head>
12
+
13
+ <body>
14
+ <div class="wrapper">
15
+ <header>
16
+ <h1 class="header"><a href='../../index.html'>DXOpal</a></h1>
17
+ <p class="header">
18
+ <a href='index.html'>English</a> | <a href='../ja/index.html'>日本語</a>
19
+ </p>
20
+ <p class="header">
21
+ DXOpal (<a href='https://github.com/yhara/dxopal'>github</a>) is a game development framework for <a href='http://opalrb.com'>Opal</a>.
22
+ </p>
23
+ </header>
24
+
25
+ <section>
26
+ <h2>Overview</h2>
27
+ <p>
28
+ DXOpal (<a href='https://github.com/yhara/dxopal'>github</a>) is a RubyGem to make browser games with Ruby.
29
+ API is similar to <a href='http://dxruby.osdn.jp/'>DXRuby</a>.
30
+ </p>
31
+
32
+ <h2>Examples</h2>
33
+ <ul>
34
+ <li>
35
+ <a href="../../examples/apple_catcher/index.html">Apple Catcher</a>
36
+ </li>
37
+ <li>
38
+ <a href="../../examples/collision/index.html">Collision detection</a>
39
+ </li>
40
+ <li>
41
+ <a href="../../examples/triangles/index.html">STG-like demo</a>
42
+ </li>
43
+ <li>
44
+ <a href="../../examples/matter/index.html">Physics</a> (experimental / powered by <a href='http://brm.io/matter-js/'>Matter.js</a>)
45
+ </li>
46
+ </ul>
47
+
48
+ <h2>Getting Started</h2>
49
+ <h3>If you have Ruby installed:</h3>
50
+ <p>
51
+ <pre><code>$ gem install dxopal
52
+ $ mkdir game1
53
+ $ cd game1
54
+ $ dxopal init
55
+ $ dxopal server</code></pre>
56
+ </p>
57
+ <p>
58
+ Open <a href='http://localhost:7521/index.html'>http://localhost:7521/index.html</a> in browser.
59
+ </p>
60
+ <p>
61
+ Then edit main.rb and reload browser.
62
+ </p>
63
+
64
+ <h3>If you don't want to install Ruby:</h3>
65
+ <p>
66
+ If you have Git command, clone <a href='https://github.com/yhara/dxopal-starter-kit'>yhara/dxopal-starter-kit</a>.
67
+ Otherwise, download latest zip from <a href='https://github.com/yhara/dxopal-starter-kit/releases'>releases</a>.
68
+ </p>
69
+ <p>
70
+ Then open index.html with Firefox. (Note: you cannot use Google Chrome because it doesn't allow Ajax access to <code>file://</code>.)
71
+ </p>
72
+ <p>
73
+ Then edit main.rb and reload the browser tab.
74
+ </p>
75
+
76
+ <h2>Resources</h2>
77
+ <ul>
78
+ <li>
79
+ <a href="../api/index.html">API reference</a>
80
+ </li>
81
+ <li>
82
+ <a href="https://github.com/yhara/dxopal">Source code (github)</a>
83
+ </li>
84
+ </ul>
85
+
86
+ </section>
87
+ <footer>
88
+ <p><small>Hosted on <a href="https://pages.github.com">GitHub Pages</a> using the <a href='https://github.com/pages-themes/dinky'>Dinky theme</a></small></p>
89
+ </footer>
90
+ </div>
91
+ </body>
92
+ </html>
93
+
data/doc/ja/index.html ADDED
@@ -0,0 +1,92 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset= "utf-8" />
5
+ <title>DXOpal demo</title>
6
+
7
+ <link href='https://fonts.googleapis.com/css?family=Arvo:400,700,400italic' rel='stylesheet' type='text/css'>
8
+ <link rel="stylesheet" href="../../vendor/pages-themes-dinky-14e8031/_site/assets/css/style.css">
9
+ <script src="../../vendor/pages-themes-dinky-14e8031/_site/assets/js/scale.fix.js"></script>
10
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
11
+ </head>
12
+
13
+ <body>
14
+ <div class="wrapper">
15
+ <header>
16
+ <h1 class="header"><a href='../../index.html'>DXOpal</a></h1>
17
+ <p class="header">
18
+ <a href='../en/index.html'>English</a> | <a href='index.html'>日本語</a>
19
+ </p>
20
+ <p class="header">
21
+ DXOpal (<a href='https://github.com/yhara/dxopal'>github</a>) は<a href='http://opalrb.com'>Opal</a>のためのゲームフレームワークです。
22
+ </p>
23
+ </header>
24
+
25
+ <section>
26
+ <h2>概要</h2>
27
+ <p>
28
+ DXOpalはRuby(<a href='http://opalrb.com'>Opal</a>)でブラウザゲームを作るためのライブラリです。
29
+ <a href='http://dxruby.osdn.jp/'>DXRuby</a>に似たAPIを持っています。
30
+ </p>
31
+
32
+ <h2>デモ</h2>
33
+ <ul>
34
+ <li>
35
+ <a href="../../examples/apple_catcher/index.html">Apple Catcher</a>
36
+ </li>
37
+ <li>
38
+ <a href="../../examples/collision/index.html">Collision detection</a>
39
+ </li>
40
+ <li>
41
+ <a href="../../examples/triangles/index.html">STG-like demo</a>
42
+ </li>
43
+ <li>
44
+ <a href="../../examples/matter/index.html">Physics</a> (experimental / powered by <a href='http://brm.io/matter-js/'>Matter.js</a>)
45
+ </li>
46
+ </ul>
47
+
48
+ <h2>セットアップ</h2>
49
+ <h3>Rubyがインストール済みのとき</h3>
50
+ <p>
51
+ <pre><code>$ gem install dxopal
52
+ $ mkdir game1
53
+ $ cd game1
54
+ $ dxopal init
55
+ $ dxopal server</code></pre>
56
+ </p>
57
+ <p>
58
+ <a href='http://localhost:7521/index.html'>http://localhost:7521/index.html</a>を開くと画面が出ます。
59
+ </p>
60
+ <p>
61
+ main.rbを編集してブラウザをリロードすると動くはずです。
62
+ </p>
63
+
64
+ <h3>Rubyをインストールしたくないとき</h3>
65
+ <p>
66
+ Gitコマンドが使える場合は<a href='https://github.com/yhara/dxopal-starter-kit'>yhara/dxopal-starter-kit</a>をgit cloneしてください。そうでない場合は<a href='https://github.com/yhara/dxopal-starter-kit/releases'>releases</a>から最新のzipをダウンロードして展開してください。
67
+ </p>
68
+ <p>
69
+ index.htmlをFirefoxで開くと画面が出ます (Google Chromeは<code>file://</code>へのAjaxアクセスができないのでだめ)。
70
+ </p>
71
+ <p>
72
+ main.rbを編集してブラウザをリロードすると動くはずです。
73
+ </p>
74
+
75
+ <h2>リンク</h2>
76
+ <ul>
77
+ <li>
78
+ <a href="../api/index.html">APIリファレンス(英語)</a>
79
+ </li>
80
+ <li>
81
+ <a href="https://github.com/yhara/dxopal">ソースコード(github)</a>
82
+ </li>
83
+ </ul>
84
+
85
+ </section>
86
+ <footer>
87
+ <p><small>Hosted on <a href="https://pages.github.com">GitHub Pages</a> using the <a href='https://github.com/pages-themes/dinky'>Dinky theme</a></small></p>
88
+ </footer>
89
+ </div>
90
+ </body>
91
+ </html>
92
+
data/dxopal.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require_relative 'opal/dxopal/version.rb'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "dxopal"
8
+ spec.version = DXOpal::VERSION
9
+ spec.authors = ["Yutaka HARA"]
10
+ spec.email = ["yutaka.hara+github@gmail.com"]
11
+
12
+ spec.summary = %q{Game development framework for Opal}
13
+ spec.homepage = "https://github.com/yhara/dxopal"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(examples|vendor|test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.add_runtime_dependency "opal", "~> 0.10.5"
24
+ spec.add_runtime_dependency "thor", "~> 0.19.1"
25
+ spec.add_runtime_dependency "rack", "~> 2.0"
26
+ spec.add_development_dependency "bundler", "~> 1.14"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "yard", "~> 0.9.9"
29
+ end
data/exe/dxopal ADDED
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+ require 'rack'
4
+ require 'thor'
5
+ require_relative '../opal/dxopal/version' # Import DXOpal::VERSION
6
+
7
+ module DXOpal
8
+ class Cli < Thor
9
+ GEM_ROOT = "#{__dir__}/../"
10
+
11
+ desc "init", "Copy template files into this directory"
12
+ def init
13
+ FileUtils.cp("#{GEM_ROOT}/template/index.html", Dir.pwd)
14
+ puts "Wrote index.html"
15
+ FileUtils.cp("#{GEM_ROOT}/template/main.rb", Dir.pwd)
16
+ puts "Wrote main.rb"
17
+ FileUtils.cp("#{GEM_ROOT}/build/dxopal.min.js", Dir.pwd)
18
+ puts "Wrote dxopal.min.js"
19
+ end
20
+
21
+ desc "update", "Update dxopal.min.js"
22
+ def update
23
+ src = "#{GEM_ROOT}/build/dxopal.min.js"
24
+ dst = "#{Dir.pwd}/dxopal.min.js"
25
+ if File.exist?(dst) && File.read(src) == File.read(dst)
26
+ puts "dxopal.min.js is already up-to-date."
27
+ return
28
+ end
29
+ FileUtils.cp(src, dst)
30
+ puts "Wrote #{dst}"
31
+ end
32
+
33
+ desc "server", "Start local server"
34
+ def server
35
+ puts "Starting DXOpal Server"
36
+ puts "(Open http://localhost:7521/index.html in browser)"
37
+ puts "---"
38
+ app = Rack::Directory.new(Dir.pwd)
39
+ Rack::Server.start(app: app, Port: 7521)
40
+ end
41
+ end
42
+ end
43
+
44
+ DXOpal::Cli.start
data/index.html ADDED
@@ -0,0 +1,56 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset= "utf-8" />
5
+ <title>DXOpal demo</title>
6
+
7
+ <link href='https://fonts.googleapis.com/css?family=Arvo:400,700,400italic' rel='stylesheet' type='text/css'>
8
+ <link rel="stylesheet" href="vendor/pages-themes-dinky-14e8031/_site/assets/css/style.css">
9
+ <script src="vendor/pages-themes-dinky-14e8031/_site/assets/js/scale.fix.js"></script>
10
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
11
+ </head>
12
+
13
+ <body>
14
+ <div class="wrapper">
15
+ <header>
16
+ <h1 class="header"><a href='index.html'>DXOpal</a></h1>
17
+ <p class="header">
18
+ <a href='doc/en/index.html'>English</a> | <a href='doc/ja/index.html'>日本語</a>
19
+ </p>
20
+ </header>
21
+
22
+ <section>
23
+ <canvas id="dxopal-canvas" style='float: left'></canvas>
24
+ <div id="editor" style='width: 350px; height: 300px; position: relative'></div>
25
+ <input type='button' style='float: right' id='run' value='Run'>
26
+ </section>
27
+ </div>
28
+
29
+ <script type="text/javascript" src="build/dxopal.js"></script>
30
+ <script>
31
+ eval(Opal.compile("DXOpal::Input.keyevent_target = `document.getElementById('dxopal-canvas')`"));
32
+ </script>
33
+ <script type="text/ruby" src="examples/top_page/main.rb"></script>
34
+
35
+ <script type="text/javascript" src="examples/_vendor/ace/ace.js" type="text/javascript" charset="utf-8"></script>
36
+ <script type="text/javascript" src="examples/_vendor/jquery-3.2.1.js"></script>
37
+ <script>
38
+ var editor = ace.edit("editor");
39
+ editor.setTheme("ace/theme/github");
40
+ editor.getSession().setMode("ace/mode/ruby");
41
+ $.get("examples/top_page/main.rb", function(rb) {
42
+ editor.setValue(rb, -1); // -1: set cursor to document start
43
+ });
44
+ $('#run').on("click", function() {
45
+ try {
46
+ eval(Opal.compile(editor.getValue()));
47
+ }
48
+ catch(e) {
49
+ alert(e);
50
+ throw e;
51
+ }
52
+ });
53
+ </script>
54
+ </body>
55
+ </html>
56
+
data/opal/dxopal.rb ADDED
@@ -0,0 +1,54 @@
1
+ require 'opal'
2
+ require 'console'; def console; $console; end
3
+
4
+ require 'dxopal/constants/colors'
5
+ require 'dxopal/font'
6
+ require 'dxopal/input'
7
+ require 'dxopal/input/key_codes'
8
+ require 'dxopal/image'
9
+ require 'dxopal/sound'
10
+ require 'dxopal/sound_effect'
11
+ require 'dxopal/sprite'
12
+ require 'dxopal/window'
13
+ require 'dxopal/version'
14
+ # Enable runtime compilation of Opal code (so that you can make games
15
+ # without even install Ruby)
16
+ require 'opal-parser'
17
+ def require_remote(url)
18
+ %x{
19
+ var r = new XMLHttpRequest();
20
+ r.overrideMimeType("text/plain"); // Patch for Firefox + file://
21
+ r.open("GET", url, false);
22
+ r.send('');
23
+ }
24
+ eval `r.responseText`
25
+ end
26
+
27
+ # These libraries will be included in dxopal.js:
28
+ require 'pp'
29
+
30
+ module DXOpal
31
+ include DXOpal::Constants::Colors
32
+ include DXOpal::Input::KeyCodes
33
+ include DXOpal::Input::MouseCodes
34
+ include DXOpal::SoundEffect::WaveTypes
35
+
36
+ # Like `Kernel.p`, but prints only limited times for each `key`
37
+ # This is useful for debugging your game without flooding the
38
+ # developer console.
39
+ #
40
+ # Example:
41
+ # p_ player_x: @player.x
42
+ # p_({player_x: @player.x}, 20)
43
+ P_CT = Hash.new{|h, k| h[k] = 0}
44
+ def p_(hash, n=10)
45
+ key = hash.keys.sort.join
46
+ return if P_CT[key] >= n
47
+ `console.log(#{hash.inspect})`
48
+ P_CT[key] += 1
49
+ end
50
+ end
51
+
52
+ # `require 'dxopal'` will automatically import names like `Window` to the
53
+ # toplevel (as `require 'dxruby'` does)
54
+ include DXOpal