Browse Source

Adding basic Atom Atomic Game Engine package

Josh Engebretson 10 years ago
parent
commit
3eedde4f75

+ 3 - 0
CLI/atomic-game-engine/.gitignore

@@ -0,0 +1,3 @@
+.DS_Store
+npm-debug.log
+node_modules

+ 3 - 0
CLI/atomic-game-engine/CHANGELOG.md

@@ -0,0 +1,3 @@
+## 0.1.0 - First Release
+* Every feature added
+* Every bug fixed

+ 20 - 0
CLI/atomic-game-engine/LICENSE.md

@@ -0,0 +1,20 @@
+Copyright (c) 2015 THUNDERBEAST GAMES LLC
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 5 - 0
CLI/atomic-game-engine/README.md

@@ -0,0 +1,5 @@
+# atomic-game-engine package
+
+A short description of your package.
+
+![A screenshot of your package](https://f.cloud.github.com/assets/69169/2290250/c35d867a-a017-11e3-86be-cd7c5bf3ff9b.gif)

+ 11 - 0
CLI/atomic-game-engine/keymaps/atomic-game-engine.cson

@@ -0,0 +1,11 @@
+# Keybindings require three things to be fully defined: A selector that is
+# matched against the focused element, the keystroke and the command to
+# execute.
+#
+# Below is a basic keybinding which registers on all platforms by applying to
+# the root workspace element.
+
+# For more detailed documentation see
+# https://atom.io/docs/latest/behind-atom-keymaps-in-depth
+'atom-workspace':
+  'ctrl-alt-o': 'atomic-game-engine:toggle'

+ 22 - 0
CLI/atomic-game-engine/lib/atomic-game-engine-view.coffee

@@ -0,0 +1,22 @@
+module.exports =
+class AtomicGameEngineView
+  constructor: (serializedState) ->
+    # Create root element
+    @element = document.createElement('div')
+    @element.classList.add('atomic-game-engine')
+
+    # Create message element
+    message = document.createElement('div')
+    message.textContent = "The AtomicGameEngine package is Alive! It's ALIVE!"
+    message.classList.add('message')
+    @element.appendChild(message)
+
+  # Returns an object that can be retrieved when package is activated
+  serialize: ->
+
+  # Tear down any state and detach
+  destroy: ->
+    @element.remove()
+
+  getElement: ->
+    @element

+ 34 - 0
CLI/atomic-game-engine/lib/atomic-game-engine.coffee

@@ -0,0 +1,34 @@
+AtomicCLI = require 'atomic-cli'
+glob = require 'glob'
+{CompositeDisposable} = require 'atom'
+
+module.exports = AtomicGameEngine =
+  subscriptions: null
+
+  activate: (state) ->
+    # Events subscribed to in atom's system can be easily cleaned up with a CompositeDisposable
+    @subscriptions = new CompositeDisposable
+
+    # Register command that toggles this view
+    @subscriptions.add atom.commands.add 'atom-workspace', 'atomic-game-engine:toggle': => @toggle()
+
+  deactivate: ->
+    @subscriptions.dispose()
+
+  serialize: ->
+
+  toggle: ->
+
+    # AtomicCLI.atomiceditor([])
+    paths = atom.project.getPaths();
+
+    gotone = false;
+    for path in paths
+      glob path + "/*.atomic", (er, files) ->
+        if files.length
+          gotone = true
+          AtomicCLI.atomiceditor ["-project", path]
+      if gotone
+        break
+
+    console.log 'AtomicGameEngine was toggled!'

+ 22 - 0
CLI/atomic-game-engine/menus/atomic-game-engine.cson

@@ -0,0 +1,22 @@
+# See https://atom.io/docs/latest/hacking-atom-package-word-count#menus for more details
+'context-menu':
+  'atom-text-editor': [
+    {
+      'label': 'Toggle atomic-game-engine'
+      'command': 'atomic-game-engine:toggle'
+    }
+  ]
+'menu': [
+  {
+    'label': 'Packages'
+    'submenu': [
+      'label': 'Atomic Game Engine'
+      'submenu': [
+        {
+          'label': 'Toggle'
+          'command': 'atomic-game-engine:toggle'
+        }
+      ]
+    ]
+  }
+]

+ 17 - 0
CLI/atomic-game-engine/package.json

@@ -0,0 +1,17 @@
+{
+  "name": "atomic-game-engine",
+  "main": "./lib/atomic-game-engine",
+  "version": "0.0.0",
+  "description": "A short description of your package",
+  "activationCommands": {
+    "atom-workspace": "atomic-game-engine:toggle"
+  },
+  "repository": "https://github.com/atom/atomic-game-engine",
+  "license": "MIT",
+  "engines": {
+    "atom": ">=0.174.0 <2.0.0"
+  },
+  "dependencies": {
+    "glob" : "*"
+  }
+}

+ 62 - 0
CLI/atomic-game-engine/spec/atomic-game-engine-spec.coffee

@@ -0,0 +1,62 @@
+AtomicGameEngine = require '../lib/atomic-game-engine'
+
+# Use the command `window:run-package-specs` (cmd-alt-ctrl-p) to run specs.
+#
+# To run a specific `it` or `describe` block add an `f` to the front (e.g. `fit`
+# or `fdescribe`). Remove the `f` to unfocus the block.
+
+describe "AtomicGameEngine", ->
+  [workspaceElement, activationPromise] = []
+
+  beforeEach ->
+    workspaceElement = atom.views.getView(atom.workspace)
+    activationPromise = atom.packages.activatePackage('atomic-game-engine')
+
+  describe "when the atomic-game-engine:toggle event is triggered", ->
+    it "hides and shows the modal panel", ->
+      # Before the activation event the view is not on the DOM, and no panel
+      # has been created
+      expect(workspaceElement.querySelector('.atomic-game-engine')).not.toExist()
+
+      # This is an activation event, triggering it will cause the package to be
+      # activated.
+      atom.commands.dispatch workspaceElement, 'atomic-game-engine:toggle'
+
+      waitsForPromise ->
+        activationPromise
+
+      runs ->
+        expect(workspaceElement.querySelector('.atomic-game-engine')).toExist()
+
+        atomicGameEngineElement = workspaceElement.querySelector('.atomic-game-engine')
+        expect(atomicGameEngineElement).toExist()
+
+        atomicGameEnginePanel = atom.workspace.panelForItem(atomicGameEngineElement)
+        expect(atomicGameEnginePanel.isVisible()).toBe true
+        atom.commands.dispatch workspaceElement, 'atomic-game-engine:toggle'
+        expect(atomicGameEnginePanel.isVisible()).toBe false
+
+    it "hides and shows the view", ->
+      # This test shows you an integration test testing at the view level.
+
+      # Attaching the workspaceElement to the DOM is required to allow the
+      # `toBeVisible()` matchers to work. Anything testing visibility or focus
+      # requires that the workspaceElement is on the DOM. Tests that attach the
+      # workspaceElement to the DOM are generally slower than those off DOM.
+      jasmine.attachToDOM(workspaceElement)
+
+      expect(workspaceElement.querySelector('.atomic-game-engine')).not.toExist()
+
+      # This is an activation event, triggering it causes the package to be
+      # activated.
+      atom.commands.dispatch workspaceElement, 'atomic-game-engine:toggle'
+
+      waitsForPromise ->
+        activationPromise
+
+      runs ->
+        # Now we can test for view visibility
+        atomicGameEngineElement = workspaceElement.querySelector('.atomic-game-engine')
+        expect(atomicGameEngineElement).toBeVisible()
+        atom.commands.dispatch workspaceElement, 'atomic-game-engine:toggle'
+        expect(atomicGameEngineElement).not.toBeVisible()

+ 5 - 0
CLI/atomic-game-engine/spec/atomic-game-engine-view-spec.coffee

@@ -0,0 +1,5 @@
+AtomicGameEngineView = require '../lib/atomic-game-engine-view'
+
+describe "AtomicGameEngineView", ->
+  it "has one valid test", ->
+    expect("life").toBe "easy"

+ 8 - 0
CLI/atomic-game-engine/styles/atomic-game-engine.less

@@ -0,0 +1,8 @@
+// The ui-variables file is provided by base themes provided by Atom.
+//
+// See https://github.com/atom/atom-dark-ui/blob/master/styles/ui-variables.less
+// for a full listing of what's available.
+@import "ui-variables";
+
+.atomic-game-engine {
+}