├── .gitignore ├── src ├── rl.js ├── mixins.js └── console.js ├── .jshintrc ├── docs ├── assets │ ├── css │ │ ├── logo.png │ │ └── external-small.png │ ├── favicon.png │ ├── img │ │ └── spinner.gif │ ├── index.html │ ├── js │ │ ├── yui-prettify.js │ │ ├── api-filter.js │ │ └── api-search.js │ └── vendor │ │ └── prettify │ │ └── prettify-min.css ├── files │ └── index.html ├── classes │ └── index.html ├── modules │ └── index.html └── api.js ├── manual ├── assets │ ├── fonts │ │ ├── DejaVuSansMono.eot │ │ ├── DejaVuSansMono.ttf │ │ └── DejaVuSansMono.woff │ ├── less │ │ ├── bootstrap │ │ │ ├── mixins │ │ │ │ ├── center-block.less │ │ │ │ ├── size.less │ │ │ │ ├── opacity.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── text-overflow.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── resize.less │ │ │ │ ├── labels.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── alerts.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── pagination.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── panels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── table-row.less │ │ │ │ ├── image.less │ │ │ │ ├── buttons.less │ │ │ │ ├── forms.less │ │ │ │ └── grid-framework.less │ │ │ ├── wells.less │ │ │ ├── responsive-embed.less │ │ │ ├── component-animations.less │ │ │ ├── breadcrumbs.less │ │ │ ├── close.less │ │ │ ├── thumbnails.less │ │ │ ├── utilities.less │ │ │ ├── media.less │ │ │ ├── pager.less │ │ │ ├── jumbotron.less │ │ │ ├── mixins.less │ │ │ ├── badges.less │ │ │ ├── labels.less │ │ │ ├── bootstrap.less │ │ │ ├── code.less │ │ │ ├── grid.less │ │ │ ├── alerts.less │ │ │ ├── print.less │ │ │ ├── pagination.less │ │ │ ├── progress-bars.less │ │ │ ├── tooltip.less │ │ │ └── scaffolding.less │ │ └── main.less │ └── js │ │ ├── bootstrap │ │ ├── .jshintrc │ │ ├── .jscsrc │ │ ├── transition.js │ │ └── alert.js │ │ └── main.js ├── index │ ├── array-2d │ │ └── js │ │ │ ├── create.js │ │ │ ├── get-adjacent.js │ │ │ ├── filter.js │ │ │ ├── get-within-square-radius.js │ │ │ ├── manipulate-coord-values.js │ │ │ ├── get-line-through.js │ │ │ ├── get-nearest.js │ │ │ └── init.js │ ├── tile │ │ └── js │ │ │ └── defining-types.js │ ├── entity │ │ └── js │ │ │ ├── basic-combat.js │ │ │ └── pushable.js │ ├── input │ │ └── js │ │ │ └── triggered-actions.js │ ├── game │ │ └── js │ │ │ └── basic.js │ ├── tile.html │ ├── input.html │ ├── game.html │ ├── valid-targets.html │ └── entity.html └── js │ └── make-basic-game.js ├── manual-src ├── assets │ ├── fonts │ │ ├── DejaVuSansMono.eot │ │ ├── DejaVuSansMono.ttf │ │ └── DejaVuSansMono.woff │ ├── less │ │ ├── bootstrap │ │ │ ├── mixins │ │ │ │ ├── center-block.less │ │ │ │ ├── size.less │ │ │ │ ├── opacity.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── text-overflow.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── labels.less │ │ │ │ ├── resize.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── alerts.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── pagination.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── panels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── table-row.less │ │ │ │ ├── image.less │ │ │ │ ├── buttons.less │ │ │ │ ├── forms.less │ │ │ │ └── grid-framework.less │ │ │ ├── wells.less │ │ │ ├── responsive-embed.less │ │ │ ├── component-animations.less │ │ │ ├── breadcrumbs.less │ │ │ ├── close.less │ │ │ ├── thumbnails.less │ │ │ ├── utilities.less │ │ │ ├── media.less │ │ │ ├── pager.less │ │ │ ├── jumbotron.less │ │ │ ├── mixins.less │ │ │ ├── badges.less │ │ │ ├── labels.less │ │ │ ├── bootstrap.less │ │ │ ├── code.less │ │ │ ├── grid.less │ │ │ ├── alerts.less │ │ │ ├── print.less │ │ │ ├── pagination.less │ │ │ ├── progress-bars.less │ │ │ └── tooltip.less │ │ └── main.less │ └── js │ │ ├── bootstrap │ │ ├── .jshintrc │ │ ├── .jscsrc │ │ ├── transition.js │ │ └── alert.js │ │ └── main.js ├── src │ ├── index.md │ ├── index │ │ ├── game.md │ │ ├── input.md │ │ ├── tile.md │ │ ├── entity.md │ │ ├── array-2d.md │ │ ├── overview.md │ │ ├── valid-targets.md │ │ ├── tile │ │ │ ├── defining-types.md │ │ │ └── js │ │ │ │ └── defining-types.js │ │ ├── array-2d │ │ │ ├── create.md │ │ │ ├── filter.md │ │ │ ├── js │ │ │ │ ├── create.js │ │ │ │ ├── get-adjacent.js │ │ │ │ ├── filter.js │ │ │ │ ├── get-within-square-radius.js │ │ │ │ ├── manipulate-coord-values.js │ │ │ │ ├── get-line-through.js │ │ │ │ ├── get-nearest.js │ │ │ │ └── init.js │ │ │ ├── get-nearest.md │ │ │ ├── get-adjacent.md │ │ │ ├── get-line-through.md │ │ │ ├── get-within-square-radius.md │ │ │ └── manipulate-coord-values.md │ │ ├── input │ │ │ ├── triggered-actions.md │ │ │ └── js │ │ │ │ └── triggered-actions.js │ │ ├── game │ │ │ ├── basic.md │ │ │ └── js │ │ │ │ └── basic.js │ │ ├── entity │ │ │ ├── js │ │ │ │ ├── basic-combat.js │ │ │ │ └── pushable.js │ │ │ ├── pushable.md │ │ │ ├── basic-combat.md │ │ │ └── basic-movement.md │ │ └── valid-targets │ │ │ └── filtering-and-selection.md │ └── js │ │ └── make-basic-game.js └── tpl │ ├── nav.dust │ ├── breadcrumb.dust │ ├── footer.dust │ └── page-class.dust ├── index.html ├── readme.md ├── package.json ├── LICENSE └── Gruntfile.js /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ -------------------------------------------------------------------------------- /src/rl.js: -------------------------------------------------------------------------------- 1 | // define RL lib global variable 2 | window.RL = {}; -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "laxbreak": true, 3 | "node": true, 4 | "unused": true 5 | } -------------------------------------------------------------------------------- /docs/assets/css/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/docs/assets/css/logo.png -------------------------------------------------------------------------------- /docs/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/docs/assets/favicon.png -------------------------------------------------------------------------------- /docs/assets/img/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/docs/assets/img/spinner.gif -------------------------------------------------------------------------------- /docs/assets/css/external-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/docs/assets/css/external-small.png -------------------------------------------------------------------------------- /manual/assets/fonts/DejaVuSansMono.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/manual/assets/fonts/DejaVuSansMono.eot -------------------------------------------------------------------------------- /manual/assets/fonts/DejaVuSansMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/manual/assets/fonts/DejaVuSansMono.ttf -------------------------------------------------------------------------------- /manual/assets/fonts/DejaVuSansMono.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/manual/assets/fonts/DejaVuSansMono.woff -------------------------------------------------------------------------------- /manual-src/assets/fonts/DejaVuSansMono.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/manual-src/assets/fonts/DejaVuSansMono.eot -------------------------------------------------------------------------------- /manual-src/assets/fonts/DejaVuSansMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/manual-src/assets/fonts/DejaVuSansMono.ttf -------------------------------------------------------------------------------- /manual-src/assets/fonts/DejaVuSansMono.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unstoppablecarl/js-roguelike-skeleton/HEAD/manual-src/assets/fonts/DejaVuSansMono.woff -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /manual-src/src/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Roguelike JS Skeleton 3 | template: page-index.dust 4 | nav_sort: 1 5 | nav_groups: 6 | - primary 7 | - footer 8 | --- 9 | 10 | -------------------------------------------------------------------------------- /manual-src/src/index/game.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Game 3 | template: page-class.dust 4 | nav_sort: 1 5 | nav_groups: primary 6 | docs_class: Game 7 | related_methods: 8 | - Game 9 | --- -------------------------------------------------------------------------------- /manual-src/src/index/input.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Input 3 | template: page-class.dust 4 | nav_sort: 5 5 | nav_groups: primary 6 | docs_class: Input 7 | related_methods: 8 | - Input 9 | --- -------------------------------------------------------------------------------- /manual-src/src/index/tile.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tile 3 | template: page-class.dust 4 | nav_sort: 6 5 | nav_groups: primary 6 | docs_class: Tile 7 | related_methods: 8 | - Tile 9 | --- -------------------------------------------------------------------------------- /manual-src/src/index/entity.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Entity 3 | template: page-class.dust 4 | nav_sort: 2 5 | nav_groups: primary 6 | docs_class: Entity 7 | related_methods: 8 | - Entity 9 | --- -------------------------------------------------------------------------------- /manual-src/src/index/array-2d.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Array2d 3 | template: page-class.dust 4 | nav_sort: 4 5 | nav_groups: primary 6 | docs_class: Array2d 7 | related_methods: 8 | - Array2d 9 | --- -------------------------------------------------------------------------------- /manual-src/src/index/overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Overview 3 | template: page-class.dust 4 | nav_sort: 5 5 | nav_groups: primary 6 | draft: true 7 | --- 8 | 9 | ## The `Game` object 10 | 11 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # JS Roguelike Skeleton 2 | 3 | A simple JS roguelike micro-framework for developers new to programming and or JS. 4 | 5 | ## [More Info](http://unstoppablecarl.github.io/js-roguelike-skeleton/) 6 | 7 | 8 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: @color; 7 | // color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: @color; 7 | // color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /manual-src/src/index/valid-targets.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Valid Targets 3 | template: page-class.dust 4 | nav_sort: 3 5 | nav_groups: primary 6 | docs_class: ValidTargets 7 | related_methods: 8 | - ValidTargets 9 | - ValidTargetsFinder 10 | --- -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /manual-src/assets/less/bootstrap/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /manual/assets/less/bootstrap/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /docs/files/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |18 | {#yui_class_data.description} 19 | {yui_class_data.description} 20 | {:else} 21 | No class description. 22 | {/yui_class_data.description} 23 |
24 | {/nav_children.primary} 25 |21 | 22 | Represents a tile in the game map. 23 | 24 |
25 | 26 |21 | 22 | Helper for binding user key input to actions. 23 | 24 |
25 | 26 |21 | 22 | Container for all game objects. 23 | Handles updating the state of game objects each turn. 24 | Listens for player input to trigger and resolve new turns. 25 | 26 |
27 | 28 |