gamefic-sdk 2.1.0 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e191127d0c07f062207511ce1abb9b6b8237252a2c211751554673cc43a9572d
4
- data.tar.gz: e68a2692143010304e89abe4ccaf5d99f3227a39f89ef10c1cb7d56df6ed0c25
3
+ metadata.gz: 1eae9343564055a00e7ca5cf1039ab349af0c67dfe75a17edf3d2f09506dbb65
4
+ data.tar.gz: 4bf5da93fd0d2b5dfd6d4b630c2bbdb0c7ee7e5eab592d62d3c6169d74ed082d
5
5
  SHA512:
6
- metadata.gz: b871b39cc1371113111d917ec0ff01180483daefefbe9725e95f1d486f9b72d708215b8ca8b483784b908d3682c7430b29ecb6fc13953b626c92b170555a315e
7
- data.tar.gz: a3e31833934272af6363b821f76cb8b1af8427b1797ccc0b61dcaff023aa9dc6323b9b4de174387d659a9ee1307020be81ee111560b173dba2b2afb99e6874f9
6
+ metadata.gz: 46e0e4f96795702bb01071048284827944d23dcb75fb8de9b0aadc06eb48658db5554e27ad809ff925b17fee4b0a878ae7120569e7cd2b7cdd366f3a999c90e1
7
+ data.tar.gz: b8de100c44bd07dbfbc04423ba97a68ef275820d1d43f912016be4f633effd4fc9e9f29e968f99f714f5015dafd329b7deebf9015a1c5838289df292f1adf768
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## 2.3.3 - July 3, 2021
2
+ - Rename READMEs in scaffolds so they get rendered
3
+ - Update gamefic dependency
4
+ - Fix bundle install in scaffold build
5
+
6
+ ## 2.3.2 - March 11, 2021
7
+ - Add READMEs to project scaffolds
8
+ - Disable css-loader esModule option in webpack config
9
+
10
+ ## 2.3.1 - March 3, 2021
11
+ - Update opal dependency
12
+
13
+ ## 2.3.0 - December 14, 2020
14
+ - Update package dependencies for web builds
15
+
16
+ ## 2.2.0 - August 29, 2020
17
+ - Update to react-gamefic 0.4.0
18
+
1
19
  ## 2.1.0 - August 27, 2020
2
20
  - Update web app with customizable scene components
3
21
 
data/gamefic-sdk.gemspec CHANGED
@@ -24,11 +24,11 @@ Gem::Specification.new do |s|
24
24
 
25
25
  s.required_ruby_version = '>= 2.3.0'
26
26
 
27
- s.add_runtime_dependency 'gamefic', '~> 2.0', '>= 2.0.2'
27
+ s.add_runtime_dependency 'gamefic', '~> 2.0', '>= 2.1.1'
28
28
  s.add_runtime_dependency 'gamefic-standard', '~> 2.0'
29
29
  s.add_runtime_dependency 'gamefic-tty', '~> 2.0', '>= 2.0.1'
30
30
  s.add_runtime_dependency 'listen', '~> 3.0'
31
- s.add_runtime_dependency 'opal', '~> 1.0'
31
+ s.add_runtime_dependency 'opal', '~> 1.1'
32
32
  s.add_runtime_dependency 'sinatra', '~> 2'
33
33
  s.add_runtime_dependency 'thor', '~> 1.0'
34
34
 
@@ -47,7 +47,7 @@ module Gamefic
47
47
  end
48
48
  end
49
49
  map.each_pair { |src, dst| custom_copy src, dst, data }
50
- system "bundle install --gemfile=#{Shellwords.escape(File.join(destination, 'Gemfile'))}"
50
+ system "cd #{Shellwords.escape(destination)} && bundle install"
51
51
  end
52
52
  end
53
53
  end
@@ -41,7 +41,6 @@ module Gamefic
41
41
  def build
42
42
  check_for_web_build
43
43
  Dir.chdir absolute_path do
44
- # exec 'npm run build'
45
44
  pid = Process.spawn 'npm run build'
46
45
  Process.wait pid
47
46
  end
@@ -1,5 +1,5 @@
1
1
  module Gamefic
2
2
  module Sdk
3
- VERSION = '2.1.0'
3
+ VERSION = '2.3.3'
4
4
  end
5
5
  end
@@ -0,0 +1,19 @@
1
+ # <%= name %>
2
+
3
+ An extension library for Gamefic
4
+
5
+ ## Installation
6
+
7
+ Add this line to your Gamefic project's Gemfile:
8
+
9
+ ```ruby
10
+ gem '<%= name %>'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ ## Usage
18
+
19
+ TODO: Write usage instructions here
@@ -0,0 +1,49 @@
1
+ # <%= name %>
2
+
3
+ A Gamefic game project
4
+
5
+ ## Installation
6
+
7
+ $ bundle install
8
+
9
+ ## Running on the Command Line
10
+
11
+ $ rake ruby:run
12
+
13
+ ## Building a CLI Game
14
+
15
+ $ rake ruby:build
16
+
17
+ The script will be saved in the `builds/ruby` directory.
18
+
19
+ ## Web-Based Games
20
+
21
+ The Gamefic SDK also supports web-based versions of games. The project gets built into a single-page application with the Ruby game code compiled into JavaScript.
22
+
23
+ First you need to install the web project scaffold:
24
+
25
+ ```
26
+ $ rake web:generate
27
+ ```
28
+
29
+ ## Running a Web Game
30
+
31
+ To run the app in debug mode:
32
+
33
+ ```
34
+ $ rake web:run
35
+ ```
36
+
37
+ Open http://localhost:4342 in a browser.
38
+
39
+ ## Building a Web Game
40
+
41
+ ```
42
+ $ rake web:build
43
+ ```
44
+
45
+ The application will be saved in the `builds/web/production` directory.
46
+
47
+ ## More Information
48
+
49
+ Go to https://gamefic.com for documentation.
@@ -1,3 +1,3 @@
1
1
  {
2
- "presets" : ["env", "react"]
2
+ "presets" : ["@babel/preset-env", "@babel/preset-react"]
3
3
  }
@@ -8,27 +8,27 @@
8
8
  "private": true,
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
11
- "build": "webpack --env=production -p",
12
- "develop": "webpack --env=development -d"
11
+ "build": "webpack --mode production",
12
+ "develop": "webpack --mode development"
13
13
  },
14
14
  "devDependencies": {
15
- "babel-core": "^6.26.3",
16
- "babel-loader": "^7.1.5",
17
- "babel-preset-env": "^1.7.0",
18
- "babel-preset-react": "^6.24.1",
19
- "copy-webpack-plugin": "^4.5.3",
20
- "css-loader": "^1.0.0",
21
- "file-loader": "^3.0.1",
15
+ "@babel/core": "^7.12.0",
16
+ "babel-loader": "^8.2.2",
17
+ "@babel/preset-env": "^7.12.10",
18
+ "@babel/preset-react": "^7.12.10",
19
+ "copy-webpack-plugin": "^7.0.0",
20
+ "css-loader": "^5.0.1",
21
+ "file-loader": "^6.2.0",
22
22
  "opal-webpack-bundler": "^0.0.1",
23
23
  "style-loader": "^0.23.1",
24
- "url-loader": "^1.1.2",
25
- "webpack": "^4.20.2",
26
- "webpack-cli": "^3.1.2"
24
+ "url-loader": "^4.1.1",
25
+ "webpack": "^5.10.1",
26
+ "webpack-cli": "^4.2.0"
27
27
  },
28
28
  "dependencies": {
29
29
  "gamefic-driver": "^0.2.1",
30
30
  "react": "^16.5.2",
31
31
  "react-dom": "^16.5.2",
32
- "react-gamefic": "^0.3.0"
32
+ "react-gamefic": "^0.5.0"
33
33
  }
34
34
  }
@@ -4,16 +4,16 @@ import { Console, Terminal } from 'react-gamefic';
4
4
 
5
5
  import { driver } from 'driver';
6
6
 
7
- import { ActivityScene, PauseScene, MultipleChoiceScene, ConclusionScene } from './scenes';
7
+ import { Activity, Pause, MultipleChoice, Conclusion } from './scenes';
8
8
  import 'react-gamefic/styles/ebook';
9
9
  import './style.css';
10
10
 
11
11
  const sceneComponents = {
12
- Activity: ActivityScene,
13
- Pause: PauseScene,
14
- MultipleChoice: MultipleChoiceScene,
15
- YesOrNo: MultipleChoiceScene,
16
- Conclusion: ConclusionScene
12
+ Activity: Activity,
13
+ Pause: Pause,
14
+ MultipleChoice: MultipleChoice,
15
+ YesOrNo: MultipleChoice,
16
+ Conclusion: Conclusion
17
17
  }
18
18
 
19
19
  render(
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { ActivityScene, Output, CommandForm } from 'react-gamefic';
3
+
4
+ export class Activity extends React.Component {
5
+ render() {
6
+ return (
7
+ <ActivityScene>
8
+ <Output {...this.props} transcribe={true} />
9
+ <CommandForm prompt={this.props.state.prompt} />
10
+ </ActivityScene>
11
+ );
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { ConclusionScene, Output } from 'react-gamefic';
3
+
4
+ export class Conclusion extends React.Component {
5
+ render() {
6
+ return (
7
+ <ConclusionScene>
8
+ <Output {...this.props} transcribe={true} />
9
+ </ConclusionScene>
10
+ );
11
+ }
12
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { MultipleChoiceScene, ChoiceList } from 'react-gamefic';
3
+
4
+ export class MultipleChoice extends React.Component {
5
+ render() {
6
+ return (
7
+ <MultipleChoiceScene>
8
+ <Output {...this.props} transcribe={true} />,
9
+ <ChoiceList options={this.props.state.options} prompt={this.props.state.prompt} />
10
+ </MultipleChoiceScene>
11
+ );
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { PauseScene, Output, CommandLink } from 'react-gamefic';
3
+
4
+ export class Pause extends React.Component {
5
+ render() {
6
+ return (
7
+ <PauseScene>
8
+ <Output {...this.props} transcribe={true} />
9
+ <CommandLink command="">Continue</CommandLink>
10
+ </PauseScene>
11
+ );
12
+ }
13
+ }
@@ -1,11 +1,11 @@
1
- import { ActivityScene } from './ActivityScene.jsx';
2
- import { PauseScene } from './PauseScene.jsx';
3
- import { MultipleChoiceScene } from './MultipleChoiceScene.jsx';
4
- import { ConclusionScene } from './ConclusionScene.jsx';
1
+ import { Activity } from './Activity.jsx';
2
+ import { Pause } from './Pause.jsx';
3
+ import { MultipleChoice } from './MultipleChoice.jsx';
4
+ import { Conclusion } from './Conclusion.jsx';
5
5
 
6
6
  export {
7
- ActivityScene,
8
- PauseScene,
9
- MultipleChoiceScene,
10
- ConclusionScene
7
+ Activity,
8
+ Pause,
9
+ MultipleChoice,
10
+ Conclusion
11
11
  }
@@ -1,51 +1,56 @@
1
1
  const path = require('path');
2
2
  const CopyWebpackPlugin = require('copy-webpack-plugin');
3
3
 
4
- module.exports = (env) => {
4
+ module.exports = (_env, argv) => {
5
5
  var config = {
6
6
  entry: path.resolve(__dirname, 'web', 'src', 'index.js'),
7
7
  output: {
8
8
  filename: 'bundle.js',
9
- path: path.resolve(__dirname, "builds", "web", env)
9
+ path: path.resolve(__dirname, "builds", "web", argv.mode)
10
10
  },
11
11
  resolve: {
12
12
  alias: {
13
- driver: path.join(__dirname, 'web', 'src', 'driver', env)
13
+ driver: path.join(__dirname, 'web', 'src', 'driver', argv.mode)
14
14
  }
15
15
  },
16
16
  plugins: [
17
- new CopyWebpackPlugin([
18
- {
19
- from: path.resolve(__dirname, 'web', 'public')
20
- },
21
- ])
17
+ new CopyWebpackPlugin({
18
+ patterns: [
19
+ {
20
+ from: path.resolve(__dirname, 'web', 'public')
21
+ }
22
+ ]
23
+ })
22
24
  ],
23
25
  module: {
24
- rules: [
25
- {
26
- test: /\.css$/,
27
- use: ['style-loader', 'css-loader']
28
- },
29
- {
30
- test: /\.(png|jp(e*)g|svg)$/,
31
- use: [{
32
- loader: 'url-loader',
33
- options: {
34
- limit: 8000, // Convert images < 8kb to base64 strings
35
- name: 'images/[hash]-[name].[ext]'
36
- }
37
- }]
38
- },
39
- {
40
- test: /\.jsx?/,
41
- include: path.resolve(__dirname, 'web'),
42
- use: 'babel-loader'
26
+ rules: [
27
+ {
28
+ test: /\.css$/,
29
+ use: [
30
+ 'style-loader',
31
+ { loader: 'css-loader', options: { esModule: false } }
32
+ ]
33
+ },
34
+ {
35
+ test: /\.(png|jp(e*)g|svg)$/,
36
+ use: [{
37
+ loader: 'url-loader',
38
+ options: {
39
+ limit: 8000, // Convert images < 8kb to base64 strings
40
+ name: 'images/[hash]-[name].[ext]'
43
41
  }
44
- ]
42
+ }]
43
+ },
44
+ {
45
+ test: /\.jsx?/,
46
+ include: path.resolve(__dirname, 'web'),
47
+ use: 'babel-loader'
48
+ }
49
+ ]
45
50
  }
46
51
  }
47
52
 
48
- if (env == 'production') {
53
+ if (argv.mode == 'production') {
49
54
  config.module.rules.push(
50
55
  {
51
56
  // opal-webpack-bundler will compile and include ruby files in the pack
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gamefic-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-27 00:00:00.000000000 Z
11
+ date: 2021-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gamefic
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '2.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 2.0.2
22
+ version: 2.1.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '2.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 2.0.2
32
+ version: 2.1.1
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: gamefic-standard
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -84,14 +84,14 @@ dependencies:
84
84
  requirements:
85
85
  - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: '1.0'
87
+ version: '1.1'
88
88
  type: :runtime
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: '1.0'
94
+ version: '1.1'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: sinatra
97
97
  requirement: !ruby/object:Gem::Requirement
@@ -248,10 +248,12 @@ files:
248
248
  - lib/gamefic-sdk/tasks/web.rb
249
249
  - lib/gamefic-sdk/version.rb
250
250
  - scaffolds/library/Gemfile
251
+ - scaffolds/library/README.md.gf.erb
251
252
  - scaffolds/library/__name__.gemspec.gf.erb
252
253
  - scaffolds/library/lib/__name__.rb
253
254
  - scaffolds/project/.gitignore
254
255
  - scaffolds/project/Gemfile
256
+ - scaffolds/project/README.md.gf.erb
255
257
  - scaffolds/project/Rakefile
256
258
  - scaffolds/project/main.rb.gf.erb
257
259
  - scaffolds/react/.babelrc
@@ -261,10 +263,10 @@ files:
261
263
  - scaffolds/react/web/src/driver/opal.rb
262
264
  - scaffolds/react/web/src/driver/production.js
263
265
  - scaffolds/react/web/src/index.js
264
- - scaffolds/react/web/src/scenes/ActivityScene.jsx
265
- - scaffolds/react/web/src/scenes/ConclusionScene.jsx
266
- - scaffolds/react/web/src/scenes/MultipleChoiceScene.jsx
267
- - scaffolds/react/web/src/scenes/PauseScene.jsx
266
+ - scaffolds/react/web/src/scenes/Activity.jsx
267
+ - scaffolds/react/web/src/scenes/Conclusion.jsx
268
+ - scaffolds/react/web/src/scenes/MultipleChoice.jsx
269
+ - scaffolds/react/web/src/scenes/Pause.jsx
268
270
  - scaffolds/react/web/src/scenes/index.js
269
271
  - scaffolds/react/web/src/style.css
270
272
  - scaffolds/react/webpack.config.js
@@ -272,7 +274,7 @@ homepage: http://gamefic.com
272
274
  licenses:
273
275
  - MIT
274
276
  metadata: {}
275
- post_install_message:
277
+ post_install_message:
276
278
  rdoc_options: []
277
279
  require_paths:
278
280
  - lib
@@ -287,8 +289,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
287
289
  - !ruby/object:Gem::Version
288
290
  version: '0'
289
291
  requirements: []
290
- rubygems_version: 3.1.2
291
- signing_key:
292
+ rubygems_version: 3.1.6
293
+ signing_key:
292
294
  specification_version: 4
293
295
  summary: Gamefic SDK
294
296
  test_files: []
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { Output, CommandForm } from 'react-gamefic';
3
-
4
- export class ActivityScene extends React.Component {
5
- render() {
6
- return (
7
- <div className="ActivityScene">
8
- <Output {...this.props} />
9
- <CommandForm prompt={this.props.state.prompt} />
10
- </div>
11
- );
12
- }
13
- }
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { Output } from 'react-gamefic';
3
-
4
- export class ConclusionScene extends React.Component {
5
- render() {
6
- return (
7
- <div className="ConclusionScene">
8
- <Output {...this.props} />
9
- </div>
10
- );
11
- }
12
- }
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import { Output } from 'react-gamefic';
3
- import { CommandLink } from 'react-gamefic';
4
-
5
- export class MultipleChoiceScene extends React.Component {
6
- renderChoices() {
7
- if (this.props.state.options) {
8
- const listItems = this.props.state.options.map((opt, index) => {
9
- return (
10
- <li key={index}>
11
- <CommandLink command={opt}>{opt}</CommandLink>
12
- </li>
13
- );
14
- });
15
- return (
16
- <nav>
17
- <ol>
18
- {listItems}
19
- </ol>
20
- </nav>
21
- );
22
- } else {
23
- console.warn("Error: Multiple choice scene does not have any options");
24
- return '';
25
- }
26
- }
27
-
28
- render() {
29
- return (
30
- <div className="MultipleChoiceScene">
31
- <Output {...this.props} />
32
- <label>{this.props.state.prompt}</label>
33
- {this.renderChoices()}
34
- </div>
35
- );
36
- }
37
- }
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { Output, CommandLink, CommandForm } from 'react-gamefic';
3
-
4
- export class PauseScene extends React.Component {
5
- render() {
6
- return (
7
- <div className="PauseScene">
8
- <Output {...this.props} />
9
- <CommandLink command="">Continue</CommandLink>
10
- </div>
11
- );
12
- }
13
- }