diff --git a/client/naturalCrit/architecture (T440s-002's conflicted copy 2015-12-17).json b/client/naturalCrit/architecture (T440s-002's conflicted copy 2015-12-17).json new file mode 100644 index 0000000..324415a --- /dev/null +++ b/client/naturalCrit/architecture (T440s-002's conflicted copy 2015-12-17).json @@ -0,0 +1,91 @@ +{ + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\homebrew\\homebrew.jsx": [ + "react", + "lodash", + "classnames", + "marked" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\shared\\naturalCrit\\defaultMonsterManual.js": [], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\shared\\naturalCrit\\combat.actions.js": [ + "pico-flux" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\shared\\naturalCrit\\rollDice.js": [ + "lodash" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\combatManager\\sidebar\\dmDice\\dmDice.jsx": [ + "react", + "lodash", + "classnames", + "naturalCrit/rollDice" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\shared\\naturalCrit\\jsonFileEditor\\jsonFileEditor.jsx": [ + "react", + "lodash", + "classnames", + "jsoneditor" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\combatManager\\encounter\\monsterCard\\attackSlot\\attackSlot.jsx": [ + "react", + "lodash", + "classnames", + "naturalCrit/rollDice" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\combatManager\\encounter\\monsterCard\\monsterCard.jsx": [ + "react", + "lodash", + "classnames", + "./attackSlot/attackSlot.jsx" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\combatManager\\encounter\\encounter.jsx": [ + "react", + "lodash", + "classnames", + "naturalCrit/combat.store.js", + "./monsterCard/monsterCard.jsx" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\combatManager\\sidebar\\encounters\\encounters.jsx": [ + "react", + "lodash", + "classnames", + "naturalCrit/combat.store.js", + "naturalCrit/combat.actions.js", + "naturalCrit/jsonFileEditor/jsonFileEditor.jsx" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\combatManager\\sidebar\\sidebar.jsx": [ + "react", + "lodash", + "classnames", + "naturalCrit/combat.store.js", + "naturalCrit/combat.actions.js", + "./dmDice/dmDice.jsx", + "naturalCrit/jsonFileEditor/jsonFileEditor.jsx", + "./encounters/encounters.jsx" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\shared\\naturalCrit\\randomEncounter.js": [ + "lodash" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\shared\\naturalCrit\\combat.store.js": [ + "pico-flux", + "lodash", + "naturalCrit/defaultMonsterManual.js", + "naturalCrit/randomEncounter.js" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\combatManager\\combatManager.jsx": [ + "react", + "lodash", + "classnames", + "naturalCrit/defaultMonsterManual.js", + "naturalCrit/combat.actions", + "./encounter/encounter.jsx", + "./sidebar/sidebar.jsx", + "naturalCrit/combat.store" + ], + "C:\\Dropbox\\root\\Programming\\Javascript\\NaturalCrit\\client\\naturalCrit\\naturalCrit.jsx": [ + "react", + "lodash", + "classnames", + "pico-router", + "./homebrew/homebrew.jsx", + "./combatManager/combatManager.jsx" + ] +} \ No newline at end of file diff --git a/client/naturalCrit/combatManager/combatManager.jsx b/client/naturalCrit/combatManager/combatManager.jsx new file mode 100644 index 0000000..1487a39 --- /dev/null +++ b/client/naturalCrit/combatManager/combatManager.jsx @@ -0,0 +1,165 @@ +var React = require('react'); +var _ = require('lodash'); +var cx = require('classnames'); + +var Sidebar = require('./sidebar/sidebar.jsx'); +var Encounter = require('./encounter/encounter.jsx'); + +var encounters = [ + { + name : 'The Big Bad', + desc : 'The big fight!', + reward : 'gems', + enemies : ['goblin', 'goblin'], + reserve : ['goblin'], + }, + { + name : 'Demon Goats', + desc : 'Gross fight', + reward : 'curved horn, goat sac', + enemies : ['demon_goat', 'demon_goat', 'demon_goat'], + unique : { + demon_goat : { + "hp" : 140, + "ac" : 16, + "attr" : { + "str" : 8, + "con" : 8, + "dex" : 8, + "int" : 8, + "wis" : 8, + "cha" : 8 + }, + "attacks" : { + "charge" : { + "atk" : "1d20+5", + "dmg" : "1d8+5", + "type" : "bludge" + } + }, + "abilities" : ["charge"], + } + } + }, + +]; + +var defaultMonsterManual = require('naturalCrit/defaultMonsterManual.js'); + +var attrMod = function(attr){ + return Math.floor(attr/2) - 5; +} + + +var Store = require('naturalCrit/combat.store'); +var Actions = require('naturalCrit/combat.actions'); + + + +var CombatManager = React.createClass({ + mixins : [Store.mixin()], + + + getInitialState: function() { + var self = this; + return { + selectedEncounterIndex : 0, + encounters : JSON.parse(localStorage.getItem('encounters')) || encounters, + monsterManual : JSON.parse(localStorage.getItem('monsterManual')) || defaultMonsterManual, + + players : localStorage.getItem('players') || 'jasper 13\nzatch 19', + + + }; + }, + + onStoreChange : function(){ + console.log('STORE CAHNGE', Store.getInc()); + this.setState({ + inc : Store.getInc() + }) + }, + + + handleEncounterJSONChange : function(encounterIndex, json){ + this.state.encounters[encounterIndex] = json; + this.setState({ + encounters : this.state.encounters + }) + localStorage.setItem("encounters", JSON.stringify(this.state.encounters)); + }, + handleMonsterManualJSONChange : function(json){ + this.setState({ + monsterManual : json + }); + localStorage.setItem("monsterManual", JSON.stringify(this.state.monsterManual)); + }, + handlePlayerChange : function(e){ + this.setState({ + players : e.target.value + }); + localStorage.setItem("players", e.target.value); + }, + handleSelectedEncounterChange : function(encounterIndex){ + console.log(encounterIndex); + this.setState({ + selectedEncounterIndex : encounterIndex + }); + }, + handleRemoveEncounter : function(encounterIndex){ + this.state.encounters.splice(encounterIndex, 1); + this.setState({ + encounters : this.state.encounters + }); + localStorage.setItem("encounters", JSON.stringify(this.state.encounters)); + }, + + renderSelectedEncounter : function(){ + var self = this; + + if(this.state.selectedEncounterIndex != null && this.state.encounters[this.state.selectedEncounterIndex]){ + var selectedEncounter = this.state.encounters[this.state.selectedEncounterIndex] + return + } + + return null; + }, + + temp : function(){ + Actions.setInc(++this.state.inc); + }, + + + render : function(){ + var self = this; + return( +
+ + + + {this.renderSelectedEncounter()} + + + +
+ ); + } +}); + +module.exports = CombatManager; diff --git a/client/naturalCrit/combatManager/combatManager.less b/client/naturalCrit/combatManager/combatManager.less new file mode 100644 index 0000000..63bb121 --- /dev/null +++ b/client/naturalCrit/combatManager/combatManager.less @@ -0,0 +1,8 @@ +.combatManager{ + + .encounterContainer{ + display: inline-block; + vertical-align: top; + } + +} \ No newline at end of file diff --git a/client/naturalCrit/encounter/encounter.jsx b/client/naturalCrit/combatManager/encounter/encounter.jsx similarity index 95% rename from client/naturalCrit/encounter/encounter.jsx rename to client/naturalCrit/combatManager/encounter/encounter.jsx index 2fe57ae..b0f8ea3 100644 --- a/client/naturalCrit/encounter/encounter.jsx +++ b/client/naturalCrit/combatManager/encounter/encounter.jsx @@ -2,13 +2,28 @@ var React = require('react'); var _ = require('lodash'); var cx = require('classnames'); +var Store = require('naturalCrit/combat.store.js'); + var MonsterCard = require('./monsterCard/monsterCard.jsx'); + + var attrMod = function(attr){ return Math.floor(attr/2) - 5; } var Encounter = React.createClass({ + mixins : [Store.mixin()], + getInitialState: function() { + return { + enemies: this.createEnemies(this.props) + }; + }, + + onStoreChange : function(){ + var players = Store.getplayersText(); + + }, getDefaultProps: function() { return { @@ -23,11 +38,7 @@ var Encounter = React.createClass({ }; }, - getInitialState: function() { - return { - enemies: this.createEnemies(this.props) - }; - }, + componentWillReceiveProps: function(nextProps) { this.setState({ diff --git a/client/naturalCrit/encounter/encounter.less b/client/naturalCrit/combatManager/encounter/encounter.less similarity index 100% rename from client/naturalCrit/encounter/encounter.less rename to client/naturalCrit/combatManager/encounter/encounter.less diff --git a/client/naturalCrit/encounter/monsterCard/attackSlot/attackSlot.jsx b/client/naturalCrit/combatManager/encounter/monsterCard/attackSlot/attackSlot.jsx similarity index 100% rename from client/naturalCrit/encounter/monsterCard/attackSlot/attackSlot.jsx rename to client/naturalCrit/combatManager/encounter/monsterCard/attackSlot/attackSlot.jsx diff --git a/client/naturalCrit/encounter/monsterCard/attackSlot/attackSlot.less b/client/naturalCrit/combatManager/encounter/monsterCard/attackSlot/attackSlot.less similarity index 100% rename from client/naturalCrit/encounter/monsterCard/attackSlot/attackSlot.less rename to client/naturalCrit/combatManager/encounter/monsterCard/attackSlot/attackSlot.less diff --git a/client/naturalCrit/encounter/monsterCard/monsterCard.jsx b/client/naturalCrit/combatManager/encounter/monsterCard/monsterCard.jsx similarity index 100% rename from client/naturalCrit/encounter/monsterCard/monsterCard.jsx rename to client/naturalCrit/combatManager/encounter/monsterCard/monsterCard.jsx diff --git a/client/naturalCrit/encounter/monsterCard/monsterCard.less b/client/naturalCrit/combatManager/encounter/monsterCard/monsterCard.less similarity index 100% rename from client/naturalCrit/encounter/monsterCard/monsterCard.less rename to client/naturalCrit/combatManager/encounter/monsterCard/monsterCard.less diff --git a/client/naturalCrit/sidebar/CODE Bold.otf b/client/naturalCrit/combatManager/sidebar/CODE Bold.otf similarity index 100% rename from client/naturalCrit/sidebar/CODE Bold.otf rename to client/naturalCrit/combatManager/sidebar/CODE Bold.otf diff --git a/client/naturalCrit/sidebar/CODE Light.otf b/client/naturalCrit/combatManager/sidebar/CODE Light.otf similarity index 100% rename from client/naturalCrit/sidebar/CODE Light.otf rename to client/naturalCrit/combatManager/sidebar/CODE Light.otf diff --git a/client/naturalCrit/sidebar/dmDice/dmDice.jsx b/client/naturalCrit/combatManager/sidebar/dmDice/dmDice.jsx similarity index 100% rename from client/naturalCrit/sidebar/dmDice/dmDice.jsx rename to client/naturalCrit/combatManager/sidebar/dmDice/dmDice.jsx diff --git a/client/naturalCrit/sidebar/dmDice/dmDice.less b/client/naturalCrit/combatManager/sidebar/dmDice/dmDice.less similarity index 100% rename from client/naturalCrit/sidebar/dmDice/dmDice.less rename to client/naturalCrit/combatManager/sidebar/dmDice/dmDice.less diff --git a/client/naturalCrit/sidebar/encounters/encounters.jsx b/client/naturalCrit/combatManager/sidebar/encounters/encounters.jsx similarity index 63% rename from client/naturalCrit/sidebar/encounters/encounters.jsx rename to client/naturalCrit/combatManager/sidebar/encounters/encounters.jsx index 552d1ec..632f230 100644 --- a/client/naturalCrit/sidebar/encounters/encounters.jsx +++ b/client/naturalCrit/combatManager/sidebar/encounters/encounters.jsx @@ -4,10 +4,27 @@ var cx = require('classnames'); var JSONFileEditor = require('naturalCrit/jsonFileEditor/jsonFileEditor.jsx'); -var GetRandomEncounter = require('naturalCrit/randomEncounter.js'); +//var GetRandomEncounter = require('naturalCrit/randomEncounter.js'); + +var Store = require('naturalCrit/combat.store.js'); +var Actions = require('naturalCrit/combat.actions.js'); var Encounters = React.createClass({ + mixins : [Store.mixin()], + onStoreChange : function(){ + this.setState({ + encounters : Store.getEncounters(), + selectedEncounter : Store.getSelectedEncounterIndex() + }); + }, + getInitialState: function() { + return { + encounters : Store.getEncounters(), + selectedEncounter : Store.getSelectedEncounterIndex() + }; + }, + /* getDefaultProps: function() { return { encounters : [], @@ -18,27 +35,29 @@ var Encounters = React.createClass({ onRemoveEncounter : function(encounterIndex){} }; }, - + */ handleJSONChange : function(encounterIndex, json){ - this.props.onJSONChange(encounterIndex, json); + //this.props.onJSONChange(encounterIndex, json); + Actions.updateEncounter(encounterIndex, json); }, handleSelectEncounter : function(encounterIndex){ - this.props.onSelectEncounter(encounterIndex); + //this.props.onSelectEncounter(encounterIndex); + Actions.selectEncounter(encounterIndex); }, handleRemoveEncounter : function(encounterIndex){ - this.props.onRemoveEncounter(encounterIndex); + //this.props.onRemoveEncounter(encounterIndex); + Actions.removeEncounter(encounterIndex); }, - addRandomEncounter : function(){ - this.props.onJSONChange(this.props.encounters.length, GetRandomEncounter()); + Actions.addEncounter(); }, renderEncounters : function(){ var self = this; - return _.map(this.props.encounters, function(encounter, index){ + return _.map(this.state.encounters, function(encounter, index){ - var isSelected = self.props.selectedEncounter == index; + var isSelected = self.state.selectedEncounter == index; return
- - - - - - - -
- }) + handleMonsterManualChange : function(json){ + Actions.updateMonsterManual(json); }, -*/ + handlePlayerChange : function(e){ + Actions.updatePlayers(e.target.value); + }, + render : function(){ var self = this; return( @@ -79,39 +54,20 @@ var Sidebar = React.createClass({
-
- - - - +

Players

-