From 0d0ce101f3fad70695e58497feae891583f5b892 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Fri, 24 Feb 2017 00:49:21 -0500 Subject: [PATCH 01/21] Starting to set up the snippets --- client/homebrew/pages/hijackPrint.js | 12 - package.json | 4 +- scripts/phb.js | 16 - scripts/snippet.test.js | 4 + shared/homebrewery/snippets/brew/index.js | 13 + .../homebrewery/snippets/brew/random.data.js | 312 ++++++++++++++++++ .../snippets/brew/spell.snippet.js | 46 +++ .../snippets/brew/spellname.list.js | 47 +++ .../snippets/brew/table.snippet.js | 14 + shared/homebrewery/snippets/index.js | 4 + shared/homebrewery/snippets/style/index.js | 0 11 files changed, 443 insertions(+), 29 deletions(-) delete mode 100644 client/homebrew/pages/hijackPrint.js delete mode 100644 scripts/phb.js create mode 100644 scripts/snippet.test.js create mode 100644 shared/homebrewery/snippets/brew/index.js create mode 100644 shared/homebrewery/snippets/brew/random.data.js create mode 100644 shared/homebrewery/snippets/brew/spell.snippet.js create mode 100644 shared/homebrewery/snippets/brew/spellname.list.js create mode 100644 shared/homebrewery/snippets/brew/table.snippet.js create mode 100644 shared/homebrewery/snippets/index.js create mode 100644 shared/homebrewery/snippets/style/index.js diff --git a/client/homebrew/pages/hijackPrint.js b/client/homebrew/pages/hijackPrint.js deleted file mode 100644 index e19f5fb..0000000 --- a/client/homebrew/pages/hijackPrint.js +++ /dev/null @@ -1,12 +0,0 @@ -//TODO: Depricate - -module.exports = function(shareId){ - return function(event){ - event = event || window.event; - if((event.ctrlKey || event.metaKey) && event.keyCode == 80){ - var win = window.open(`/homebrew/print/${shareId}?dialog=true`, '_blank'); - win.focus(); - event.preventDefault(); - } - }; -}; \ No newline at end of file diff --git a/package.json b/package.json index c7dd14c..36235ec 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,10 @@ "dev": "node scripts/dev.js", "quick": "node scripts/quick.js", "build": "node scripts/build.js", - "phb": "node scripts/phb.js", "populate": "node scripts/populate.js", + + "temp" : "nodemon scripts/snippet.test.js", + "prod": "set NODE_ENV=production&& npm run build", "postinstall": "npm run build", "start": "node server.js", diff --git a/scripts/phb.js b/scripts/phb.js deleted file mode 100644 index 945a20e..0000000 --- a/scripts/phb.js +++ /dev/null @@ -1,16 +0,0 @@ -//DEPRICATE - -const less = require('less'); -const fs = require('fs'); - - -console.log('you should not b using this'); - - -less.render(fs.readFileSync('./client/homebrew/phbStyle/phb.style.less', 'utf8'), {compress : true}) - .then((output) => { - fs.writeFileSync('./phb.standalone.css', output.css); - console.log('phb.standalone.css created!'); - }, (err) => { - console.error(err); - }); \ No newline at end of file diff --git a/scripts/snippet.test.js b/scripts/snippet.test.js new file mode 100644 index 0000000..e366e41 --- /dev/null +++ b/scripts/snippet.test.js @@ -0,0 +1,4 @@ +const snippets = require('../shared/homebrewery/snippets/brew'); + + +console.log(snippets.phb.spell.gen()); \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/index.js b/shared/homebrewery/snippets/brew/index.js new file mode 100644 index 0000000..85955ef --- /dev/null +++ b/shared/homebrewery/snippets/brew/index.js @@ -0,0 +1,13 @@ +const _ = require('lodash'); + +const process = (imports)=>{ + +}; + +module.exports = { + phb : _.keyBy([ + require('./spell.snippet.js') + ], (spt)=>_.snakeCase(spt.name)), + + +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/random.data.js b/shared/homebrewery/snippets/brew/random.data.js new file mode 100644 index 0000000..d4a405b --- /dev/null +++ b/shared/homebrewery/snippets/brew/random.data.js @@ -0,0 +1,312 @@ +module.exports = { + + titles : [ + `The Burning Gallows`, + `The Ring of Nenlast`, + `Below the Blind Tavern`, + `Below the Hungering River`, + `Before Bahamut's Land`, + `The Cruel Grave from Within`, + `The Strength of Trade Road`, + `Through The Raven Queen's Worlds`, + `Within the Settlement`, + `The Crown from Within`, + `The Merchant Within the Battlefield`, + `Ioun's Fading Traveler`, + `The Legion Ingredient`, + `The Explorer Lure`, + `Before the Charming Badlands`, + `The Living Dead Above the Fearful Cage`, + `Vecna's Hidden Sage`, + `Bahamut's Demonspawn`, + `Across Gruumsh's Elemental Chaos`, + `The Blade of Orcus`, + `Beyond Revenge`, + `Brain of Insanity`, + `Breed Battle!, A New Beginning`, + `Evil Lake, A New Beginning`, + `Invasion of the Gigantic Cat, Part II`, + `Kraken War 2020`, + `The Body Whisperers`, + `The Diabolical Tales of the Ape-Women`, + `The Doctor Immortal`, + `The Doctor from Heaven`, + `Azure Core`, + `Core Battle`, + `Core of Heaven: The Guardian of Amazement`, + `Deadly Amazement III`, + `Dry Chaos IX`, + `Gate Thunder`, + `Guardian: Skies of the Dark Wizard`, + `Lute of Eternity`, + `Mercury's Planet: Brave Evolution`, + `Ruby of Atlantis: The Quake of Peace`, + `Vyse's Skies`, + `White Greatness III`, + `Yellow Divinity`, + `Zidane's Ghost` + ], + + subtitles : [ + `In an ominous universe, a botanist opposes terrorism.`, + `In a demon-haunted city, in an age of lies and hate, a physicist tries to find an ancient treasure and battles a mob of aliens.`, + `In a land of corruption, two cyberneticists and a dungeon delver search for freedom.`, + `In an evil empire of horror, two rangers battle the forces of hell.`, + `In a lost city, in an age of sorcery, a librarian quests for revenge.`, + `In a universe of illusions and danger, three time travellers and an adventurer search for justice.`, + `In a forgotten universe of barbarism, in an era of terror and mysticism, a virtual reality programmer and a spy try to find vengance and battle crime.`, + `In a universe of demons, in an era of insanity and ghosts, three bodyguards and a bodyguard try to find vengance.`, + `In a kingdom of corruption and battle, seven artificial intelligences try to save the last living fertile woman.`, + `In a universe of virutal reality and agony, in an age of ghosts and ghosts, a fortune-teller and a wanderer try to avert the apocalypse.`, + `In a crime-infested kingdom, three martial artists quest for the truth and oppose evil.`, + `In a terrifying universe of lost souls, in an era of lost souls, eight dancers fight evil.`, + `In a galaxy of confusion and insanity, three martial artists and a duke battle a mob of psychics.`, + `In an amazing kingdom, a wizard and a secretary hope to prevent the destruction of mankind.`, + `In a kingdom of deception, a reporter searches for fame.`, + `In a hellish empire, a swordswoman and a duke try to find the ultimate weapon and battle a conspiracy.`, + `In an evil galaxy of illusion, in a time of technology and misery, seven psychiatrists battle crime.`, + `In a dark city of confusion, three swordswomen and a singer battle lawlessness.`, + `In an ominous empire, in an age of hate, two philosophers and a student try to find justice and battle a mob of mages intent on stealing the souls of the innocent.`, + `In a kingdom of panic, six adventurers oppose lawlessness.`, + `In a land of dreams and hopelessness, three hackers and a cyborg search for justice.`, + `On a planet of mysticism, three travelers and a fire fighter quest for the ultimate weapon and oppose evil.`, + `In a wicked universe, five seers fight lawlessness.`, + `In a kingdom of death, in an era of illusion and blood, four colonists search for fame.`, + `In an amazing kingdom, in an age of sorcery and lost souls, eight space pirates quest for freedom.`, + `In a cursed empire, five inventors oppose terrorism.`, + `On a crime-ridden planet of conspiracy, a watchman and an artificial intelligence try to find love and oppose lawlessness.`, + `In a forgotten land, a reporter and a spy try to stop the apocalypse.`, + `In a forbidden land of prophecy, a scientist and an archivist oppose a cabal of barbarians intent on stealing the souls of the innocent.`, + `On an infernal world of illusion, a grave robber and a watchman try to find revenge and combat a syndicate of mages intent on stealing the source of all magic.`, + `In a galaxy of dark magic, four fighters seek freedom.`, + `In an empire of deception, six tomb-robbers quest for the ultimate weapon and combat an army of raiders.`, + `In a kingdom of corruption and lost souls, in an age of panic, eight planetologists oppose evil.`, + `In a galaxy of misery and hopelessness, in a time of agony and pain, five planetologists search for vengance.`, + `In a universe of technology and insanity, in a time of sorcery, a computer techician quests for hope.`, + `On a planet of dark magic and barbarism, in an age of horror and blasphemy, seven librarians search for fame.`, + `In an empire of dark magic, in a time of blood and illusions, four monks try to find the ultimate weapon and combat terrorism.`, + `In a forgotten empire of dark magic, six kings try to prevent the destruction of mankind.`, + `In a galaxy of dark magic and horror, in an age of hopelessness, four marines and an outlaw combat evil.`, + `In a mysterious city of illusion, in an age of computerization, a witch-hunter tries to find the ultimate weapon and opposes an evil corporation.`, + `In a damned kingdom of technology, a virtual reality programmer and a fighter seek fame.`, + `In a hellish kingdom, in an age of blasphemy and blasphemy, an astrologer searches for fame.`, + `In a damned world of devils, an alien and a ranger quest for love and oppose a syndicate of demons.`, + `In a cursed galaxy, in a time of pain, seven librarians hope to avert the apocalypse.`, + `In a crime-infested galaxy, in an era of hopelessness and panic, three champions and a grave robber try to solve the ultimate crime.` + ], + + classes : [ + 'Archivist', + 'Armadillomaster', + 'Beat Priest', + 'Beer Mentalist', + 'Berserker-Typist', + 'Bonsai Hooligan', + 'Candy Finder', + 'Coffeemancer', + 'Concierge', + 'Corn Theif', + 'Cottonsmith', + 'Dirtmistress', + 'Fancyman', + 'Fishmongerer', + 'Fletcher', + 'Flow Robber', + 'Haberdasher', + 'Hamster Lady', + 'Jam Robber', + 'Linguist', + 'Lizard Trainer', + 'Manicurist', + 'Markermaster', + 'Mint Handler', + 'Narwhalologer', + 'Notary', + 'Otter Mentalist', + 'Plastic Diviner', + 'Rhymemancer', + 'Rum Buster', + 'Whaleologer', + ], + + + gear : [ + `a squeegee`, + '6 rubber chickens', + '10 lint fluffs', + '1 button', + 'a cherished lost sock', + 'a small doll', + 'hopes and dreams', + '1st born child', + '3rd born child', + 'a crushed button worth at least 1cp', + 'discarded gum wrapper', + `Broch of Air Blasts`, + `Elven Leather Armor`, + `Glaive of the Deathly Viper`, + `Mystical Eagle's Ointment of the Eagles`, + `Mystical Scintillating Cudgel`, + `Wise Thinker's Anklet`, + `The four fragments of the Disk of Madness` + ], + + + + spellNames : [ + "Astral Rite of Acne", + "Create Acne", + "Cursed Ramen Erruption", + "Dark Chant of the Dentists", + "Erruption of Immaturity", + "Flaming Disc of Inconvenience", + "Heal Bad Hygene", + "Heavenly Transfiguration of the Cream Devil", + "Hellish Cage of Mucus", + "Irritate Peanut Butter Fairy", + "Luminous Erruption of Tea", + "Mystic Spell of the Poser", + "Sorcerous Enchantment of the Chimneysweep", + "Steak Sauce Ray", + "Talk to Groupie", + "Astonishing Chant of Chocolate", + "Astounding Pasta Puddle", + "Ball of Annoyance", + "Cage of Yarn", + "Control Noodles Elemental", + "Create Nervousness", + "Cure Baldness", + "Cursed Ritual of Bad Hair", + "Dispell Piles in Dentist", + "Eliminate Florists", + "Illusionary Transfiguration of the Babysitter", + "Necromantic Armor of Salad Dressing", + "Occult Transfiguration of Foot Fetish", + "Protection from Mucus Giant", + "Tinsel Blast", + "Alchemical Evocation of the Goths", + "Call Fangirl", + "Divine Spell of Crossdressing", + "Dominate Ramen Giant", + "Eliminate Vindictiveness in Gym Teacher", + "Extra-Planar Spell of Irritation", + "Induce Whining in Babysitter", + "Invoke Complaining", + "Magical Enchantment of Arrogance", + "Occult Globe of Salad Dressing", + "Overwhelming Enchantment of the Chocolate Fairy", + "Sorcerous Dandruff Globe", + "Spiritual Invocation of the Costumers", + "Ultimate Rite of the Confetti Angel", + "Ultimate Ritual of Mouthwash", + + ], + + effects : [ + 'Induces politicians to parade through the streets naked, and makes the nearest unbetrothed prince or princess dance around the maypole making dirty jokes.', + 'Tricks enchanted princesses to spin straw into gold, and makes princesses trapped in towers steal from the rich and give to the poor.', + 'Drives the man or woman of your dreams to jump up and down on the spot, and makes angry dragons grow onions wherever they walk.', + 'Causes enchanted talking animals to fall down dead, and makes large pumpkins attract love-struck unicorns.', + 'Induces officers of the law to adopt small, fluffy bunnies as pets, and makes enchanted wooden puppets vomit gold coins.', + 'Causes accountants to give you all of their possessions, and makes officers of the law grow mushrooms out of their ears.', + 'Induces goats to eat until they burst, and makes men with small heads vomit gold coins.', + 'Tricks enchanted princesses to turn into small pumpkins, and makes evil landlords declare themselves king.', + 'Induces your enemies to steal from the palace cook, and makes rich merchants propose marriage.', + 'Causes evil landlords to vomit gold coins, and makes the nearest unbetrothed prince or princess drink beer.', + 'Induces men with small heads to grow mushrooms out of their ears, and makes witches steal from the rich and give to the poor.', + `Conjures food with energy equal to whatever was used to cast the spell.`, + `Allows a living target to withstand extreme cold.`, + `Conjures a thick fog that acts as a smoke screen.`, + `Creates a bubble in which time is stopped for a short period.`, + `Creates several bolts of shadowy energy.`, + `Causes a living target to panic for a period of time.`, + `Creates a floating scroll and quill that'll write down everything the caster or target says for a period of time.`, + `Causes whoever is targeted to enter a state of confusion for a period of time.`, + `Creates a magical barrier that blocks all with dark intentions or dark influences over them.`, + `Creates a bolt of demonic energy.`, + `Causes whoever is targeted to drop whatever they're holding.` + ], + + effects2 : [ + 'Unless they pass a Constitution save, the creature gains 1 level of Exhaustion.', + 'Pushed 5 feet unless they pass a Strength save. ', + 'Unless they pass a Wisdom save, the creature is Charmed.', + 'Unless they pass a Wisdom save, the creature is Frightened. The creature can remake this save on each of their turns.', + 'Unless they pass a Wisdom save, the creature is Frightened. The creature can remake this save on each of their turns.', + 'Unless they pass a Wisdom save, the creature is Paralyzed. The creature can remake this save on each of their turns.', + 'Pushed 25 feet unless they pass a Strength save. ', + 'Unless they pass a Constitution save, the creature is Poisoned. The creature can remake this save on each of their turns.', + 'Unless they pass a Wisdom save, the creature is Charmed.', + 'Unless they pass a Constitution save, the creature is Slowed. The creature can remake this save on each of their turns.', + 'Unless they pass a Constitution save, the creature is Slowed. The creature can remake this save on each of their turns.', + 'Knocked Prone unless they pass a Dexterity save. ', + 'Unless they pass a Constitution save, the creature is Deafened. The creature can remake this save on each of their turns.', + 'Knocked Prone unless they pass a Dexterity save. ', + 'Unless they pass a Constitution save, the creature gains 1 level of Exhaustion.', + 'Knocked Prone unless they pass a Dexterity save. ', + 'Unless they pass a Constitution save, the creature is Deafened. The creature can remake this save on each of their turns.', + 'Unless they pass a Constitution save, the creature gains 1 level of Exhaustion.', + 'Pushed 20 feet unless they pass a Strength save. ', + 'Resistance to Radiant damage until 1 round' + + ], + + attacks : [ + `Aquatic Press of the Romantic Demons`, + `Barbarian Raider Pinch of the Cemetary`, + `Beetle Hold of the Fangs`, + `Confident Badger Pinch of Lyres`, + `Emperor's Roll of the Nine Volcanos`, + `Firey Rake of the Endings`, + `Fortuitous Underhook of the Wolves`, + `God's Knee of Blessings`, + `Hawk Dance`, + `Heavenly Rat's Roll`, + `Hellish Meteor`, + `High Noose of the Ruthless Guardian`, + `Hold of Poisons`, + `King Drop of the Fighting Protectors`, + `Leg Clap of the Dogs`, + `Northeastern Seventeen Cats Claw`, + `Phantasmal Plague Finger`, + `Pose of Perfect Sunsets`, + `Seal Hammer of the Forty Sages`, + `Shaman Pull of Destructions`, + `Southeastern Automaton Pull`, + `Southwestern Eighty Chants Clap`, + `Tackle of Foul Leaves`, + `Tornado of the Uncounted Hawks`, + `Yielding Throw of the Mills`, + ], + + alignments : [ + "Annoying Evil", + "Chaotic Gossipy", + "Chaotic Sloppy", + "Depressed Neutral", + "Lawful Bogus", + "Lawful Coy", + "Manic-Depressive Evil", + "Narrow-Minded Neutral", + "Neutral Annoying", + "Neutral Ignorant", + "Oedpipal Neutral", + "Silly Neutral", + "Unoriginal Neutral", + "Weird Neutral", + "Wordy Evil", + "Unaligned", + "Lawful Gossipy", + "Neurotic Good", + "Sarcastic Evil", + "Snotty Neutral", + "Wannabe Good" + ], + + sizes : ['Microscopic', 'Tiny', 'Small', 'Medium', 'Large', 'Gargantuan', 'Stupidly vast'], + + + + + +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/spell.snippet.js b/shared/homebrewery/snippets/brew/spell.snippet.js new file mode 100644 index 0000000..2b96d76 --- /dev/null +++ b/shared/homebrewery/snippets/brew/spell.snippet.js @@ -0,0 +1,46 @@ +const _ = require('lodash'); + +const spellNames = require('./spellname.list.js'); + +const Data = require('./random.data.js'); + + +const levels = ['1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th']; +const schools = ['abjuration', 'conjuration', 'divination', 'enchantment', 'evocation', 'illusion', 'necromancy', 'transmutation']; + + + +module.exports = { + name : 'Spell', + icon : 'fa-spell', + gen : ()=>{ + + let components = _.sampleSize(['V', 'S', 'M'], _.random(1,3)).join(', '); + if(components.indexOf('M') !== -1){ + components += ' (' + _.sampleSize(Data.gear, _.random(1,3)).join(', ') + ')' + } + + const duration = _.sample([ + 'Until dispelled', + '1 round', + 'Instantaneous', + 'Concentration, up to 10 minutes', + '1 hour' + ]); + + const description = _.sampleSize(Data.effects, _.random(1,2)).concat(_.sample(Data.effects2)).join(' '); + + + return `{{spell +#### ${_.sample(spellNames)} +*${_.sample(levels)}-level ${_.sample(schools)}* +- **Casting Time:** ${_.sample(['1 action', 'Reaction', '10 minutes', '1 hour'])} +- **Range:** ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])} +- **Components:** ${components} +- **Duration:** ${duration} + +${description} +}}`; + + } +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/spellname.list.js b/shared/homebrewery/snippets/brew/spellname.list.js new file mode 100644 index 0000000..f75ae67 --- /dev/null +++ b/shared/homebrewery/snippets/brew/spellname.list.js @@ -0,0 +1,47 @@ +module.exports = [ + 'Astral Rite of Acne', + 'Create Acne', + 'Cursed Ramen Erruption', + 'Dark Chant of the Dentists', + 'Erruption of Immaturity', + 'Flaming Disc of Inconvenience', + 'Heal Bad Hygene', + 'Heavenly Transfiguration of the Cream Devil', + 'Hellish Cage of Mucus', + 'Irritate Peanut Butter Fairy', + 'Luminous Erruption of Tea', + 'Mystic Spell of the Poser', + 'Sorcerous Enchantment of the Chimneysweep', + 'Steak Sauce Ray', + 'Talk to Groupie', + 'Astonishing Chant of Chocolate', + 'Astounding Pasta Puddle', + 'Ball of Annoyance', + 'Cage of Yarn', + 'Control Noodles Elemental', + 'Create Nervousness', + 'Cure Baldness', + 'Cursed Ritual of Bad Hair', + 'Dispell Piles in Dentist', + 'Eliminate Florists', + 'Illusionary Transfiguration of the Babysitter', + 'Necromantic Armor of Salad Dressing', + 'Occult Transfiguration of Foot Fetish', + 'Protection from Mucus Giant', + 'Tinsel Blast', + 'Alchemical Evocation of the Goths', + 'Call Fangirl', + 'Divine Spell of Crossdressing', + 'Dominate Ramen Giant', + 'Eliminate Vindictiveness in Gym Teacher', + 'Extra-Planar Spell of Irritation', + 'Induce Whining in Babysitter', + 'Invoke Complaining', + 'Magical Enchantment of Arrogance', + 'Occult Globe of Salad Dressing', + 'Overwhelming Enchantment of the Chocolate Fairy', + 'Sorcerous Dandruff Globe', + 'Spiritual Invocation of the Costumers', + 'Ultimate Rite of the Confetti Angel', + 'Ultimate Ritual of Mouthwash', +]; \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/table.snippet.js b/shared/homebrewery/snippets/brew/table.snippet.js new file mode 100644 index 0000000..a500e5d --- /dev/null +++ b/shared/homebrewery/snippets/brew/table.snippet.js @@ -0,0 +1,14 @@ +const _ = require('lodash'); + +- spell lists +- roll charts + + + +module.exports = { + name : 'Table', + icon : 'fa-table', + gen: ()=>{ + + }, +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/index.js b/shared/homebrewery/snippets/index.js new file mode 100644 index 0000000..3311a8c --- /dev/null +++ b/shared/homebrewery/snippets/index.js @@ -0,0 +1,4 @@ +module.exports = { + brew : require('./brew'), + style : require('./style') +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/style/index.js b/shared/homebrewery/snippets/style/index.js new file mode 100644 index 0000000..e69de29 From 9d4d337bb9bfeff61d6e7ef9f0c77ca8f1382501 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Feb 2017 11:53:40 -0500 Subject: [PATCH 02/21] Snippet bar has been replaced and new style of snippets being worked on --- changelog.md | 4 + package.json | 2 +- scripts/snippet.test.js | 7 +- shared/homebrewery/brewEditor/brewEditor.jsx | 27 +- shared/homebrewery/brewEditor/brewEditor.less | 2 +- .../brewEditor/menubar/menubar.jsx | 22 +- .../brewEditor/menubar/menubar.less | 5 + .../brewEditor/menubar/snippet.map.js | 48 ++++ .../menubar/snippetGroup/snippetGroup.jsx | 42 +++ .../menubar/snippetGroup/snippetGroup.less | 56 ++++ .../brewEditor/snippetbar/snippetbar.jsx | 94 ------ .../brewEditor/snippetbar/snippetbar.less | 72 ----- .../snippetbar/snippets/classfeature.gen.js | 42 --- .../snippetbar/snippets/classtable.gen.js | 114 -------- .../snippetbar/snippets/coverpage.gen.js | 117 -------- .../snippetbar/snippets/fullclass.gen.js | 43 --- .../snippetbar/snippets/magic.gen.js | 91 ------ .../snippetbar/snippets/monsterblock.gen.js | 196 ------------- .../snippetbar/snippets/snippets.js | 267 ------------------ .../snippets/tableOfContents.gen.js | 72 ----- shared/homebrewery/snippets/brew/index.js | 20 +- .../homebrewery/snippets/brew/random.data.js | 11 +- .../snippets/brew/spell.snippet.js | 13 +- .../snippets/brew/spellname.list.js | 47 --- .../snippets/brew/table.snippet.js | 58 +++- .../homebrewery/snippets/style/a4.snippet.js | 8 + shared/homebrewery/snippets/style/index.js | 6 + .../homebrewery/snippets/style/ink.snippet.js | 9 + 28 files changed, 302 insertions(+), 1193 deletions(-) create mode 100644 shared/homebrewery/brewEditor/menubar/snippet.map.js create mode 100644 shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx create mode 100644 shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.less delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippetbar.jsx delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippetbar.less delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/classfeature.gen.js delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/classtable.gen.js delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/coverpage.gen.js delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/fullclass.gen.js delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/magic.gen.js delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/monsterblock.gen.js delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/snippets.js delete mode 100644 shared/homebrewery/brewEditor/snippetbar/snippets/tableOfContents.gen.js delete mode 100644 shared/homebrewery/snippets/brew/spellname.list.js create mode 100644 shared/homebrewery/snippets/style/a4.snippet.js create mode 100644 shared/homebrewery/snippets/style/ink.snippet.js diff --git a/changelog.md b/changelog.md index cc60014..a6da7f7 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,9 @@ # changelog + +The self-discovery aspect of the snippets isn't working out. + + ## BIG NEWS With the next major release of Homebrewery, v3.0.0, this tool *will no longer support raw HTML input for brew code*. Most issues and errors users are having are because of this feature and it's become too taxing to help and fix these issues. diff --git a/package.json b/package.json index 36235ec..50ffe10 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build": "node scripts/build.js", "populate": "node scripts/populate.js", - "temp" : "nodemon scripts/snippet.test.js", + "snippet" : "nodemon scripts/snippet.test.js", "prod": "set NODE_ENV=production&& npm run build", "postinstall": "npm run build", diff --git a/scripts/snippet.test.js b/scripts/snippet.test.js index e366e41..7cb4bf3 100644 --- a/scripts/snippet.test.js +++ b/scripts/snippet.test.js @@ -1,4 +1,7 @@ -const snippets = require('../shared/homebrewery/snippets/brew'); +const snippets = require('../shared/homebrewery/snippets'); +console.log(snippets); -console.log(snippets.phb.spell.gen()); \ No newline at end of file +console.log(snippets.style.print.a4PageSize()); +console.log(snippets.brew.phb.spell()); +console.log(snippets.brew.phb.table()); \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/brewEditor.jsx b/shared/homebrewery/brewEditor/brewEditor.jsx index 721e481..ab8a81a 100644 --- a/shared/homebrewery/brewEditor/brewEditor.jsx +++ b/shared/homebrewery/brewEditor/brewEditor.jsx @@ -32,6 +32,10 @@ const BrewEditor = React.createClass({ view : 'code', //'code', 'style', 'meta' }; }, + isCode : function(){ return this.state.view == 'code' }, + isStyle : function(){ return this.state.view == 'style' }, + isMeta : function(){ return this.state.view == 'meta' }, + componentDidMount: function() { this.updateEditorSize(); @@ -53,11 +57,16 @@ const BrewEditor = React.createClass({ handleInject : function(injectText){ - const lines = this.props.value.split('\n'); - lines[this.cursorPosition.line] = splice(lines[this.cursorPosition.line], this.cursorPosition.ch, injectText); + const text = (this.isCode() ? this.props.brew.text : this.props.brew.style); - this.handleTextChange(lines.join('\n')); - this.refs.codeEditor.setCursorPosition(this.cursorPosition.line, this.cursorPosition.ch + injectText.length); + const lines = text.split('\n'); + const cursorPos = this.refs.codeEditor.getCursorPosition(); + lines[cursorPos.line] = splice(lines[cursorPos.line], cursorPos.ch, injectText); + + this.refs.codeEditor.setCursorPosition(cursorPos.line, cursorPos.ch + injectText.length); + + if(this.state.view == 'code') this.props.onCodeChange(lines.join('\n')); + if(this.state.view == 'style') this.props.onStyleChange(lines.join('\n')); }, @@ -87,6 +96,9 @@ const BrewEditor = React.createClass({ //MOve this to a util.sj file highlightPageLines : function(){ if(!this.refs.codeEditor) return; + if(!this.isCode()) return; + + const codeMirror = this.refs.codeEditor.codeMirror; const lineNumbers = _.reduce(this.props.brew.text.split('\n'), (r, line, lineNumber)=>{ @@ -116,19 +128,19 @@ const BrewEditor = React.createClass({ renderEditor : function(){ - if(this.state.view == 'meta'){ + if(this.isMeta()){ return } - if(this.state.view == 'style'){ + if(this.isStyle()){ return } - if(this.state.view == 'code'){ + if(this.isCode()){ return diff --git a/shared/homebrewery/brewEditor/brewEditor.less b/shared/homebrewery/brewEditor/brewEditor.less index a47dc69..d54d8f8 100644 --- a/shared/homebrewery/brewEditor/brewEditor.less +++ b/shared/homebrewery/brewEditor/brewEditor.less @@ -9,7 +9,7 @@ border-bottom : #333 solid 1px; } .block{ - color : blue; + color : purple; //font-style: italic; } } diff --git a/shared/homebrewery/brewEditor/menubar/menubar.jsx b/shared/homebrewery/brewEditor/menubar/menubar.jsx index ed47e08..32624a5 100644 --- a/shared/homebrewery/brewEditor/menubar/menubar.jsx +++ b/shared/homebrewery/brewEditor/menubar/menubar.jsx @@ -1,19 +1,37 @@ - const React = require('react'); const _ = require('lodash'); const cx = require('classnames'); +const SnippetMap = require('./snippet.map.js'); +const SnippetGroup = require('./snippetGroup/snippetGroup.jsx'); + +console.log(SnippetMap); const Menubar = React.createClass({ getDefaultProps: function() { return { - view : '', + view : 'code', onViewChange : ()=>{}, onSnippetInject : ()=>{}, }; }, + renderSnippets : function(){ + if(this.props.view == 'meta') return ; + + let mapping; + if(this.props.view == 'code') mapping = SnippetMap.brew; + if(this.props.view == 'style') mapping = SnippetMap.style; + + const groups = _.map(mapping, (group)=>{ + return + }); + + return
{groups}
+ }, render: function(){ return
+ {this.renderSnippets()} +
diff --git a/shared/homebrewery/brewEditor/menubar/menubar.less b/shared/homebrewery/brewEditor/menubar/menubar.less index 653e82c..e857528 100644 --- a/shared/homebrewery/brewEditor/menubar/menubar.less +++ b/shared/homebrewery/brewEditor/menubar/menubar.less @@ -32,4 +32,9 @@ } } } + + .snippets{ + display : flex; + height : 100%; + } } \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/menubar/snippet.map.js b/shared/homebrewery/brewEditor/menubar/snippet.map.js new file mode 100644 index 0000000..85571de --- /dev/null +++ b/shared/homebrewery/brewEditor/menubar/snippet.map.js @@ -0,0 +1,48 @@ +const Snippets = require('homebrewery/snippets'); + +module.exports = { + brew : [ + { + name : 'PHB', + icon : 'fa-book', + snippets : [ + { + name : 'Spell', + icon : 'fa-magic', + gen : Snippets.brew.spell + }, + { + name : 'Table', + icon : 'fa-table', + gen : Snippets.brew.table + }, + + ] + }, + { + name : 'Mods', + icon : 'fa-gear', + snippets : [] + } + ], + + style : [ + { + name : 'Print', + icon : 'fa-print', + snippets : [ + { + name : 'Ink Friendly', + icon : 'fa-tint', + gen : Snippets.style.inkFriendly + }, + { + name : 'A4 Page Size', + icon : 'fa-file', + gen : Snippets.style.a4 + }, + + ] + } + ] +} \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx b/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx new file mode 100644 index 0000000..8268e0e --- /dev/null +++ b/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx @@ -0,0 +1,42 @@ + +const React = require('react'); +const _ = require('lodash'); +const cx = require('classnames'); + +const SnippetGroup = React.createClass({ + getDefaultProps: function() { + return { + brew : '', + name : '', + icon : 'fa-rocket', + snippets : [], + onClick : function(){}, + }; + }, + handleSnippetClick : function(snippet){ + this.props.onClick(snippet.gen()); + }, + renderSnippets : function(){ + return _.map(this.props.snippets, (snippet)=>{ + return
+ + {snippet.name} +
+ }) + }, + + render : function(){ + return
+
+ + {this.props.name} +
+
+ {this.renderSnippets()} +
+
+ }, + +}); + +module.exports = SnippetGroup; diff --git a/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.less b/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.less new file mode 100644 index 0000000..9dab435 --- /dev/null +++ b/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.less @@ -0,0 +1,56 @@ +.snippetGroup{ + //display : inline-block; + display : flex; + height : 100%; + align-items : center; + + //height : @menuHeight; + padding : 0px 5px; + cursor : pointer; + font-size : 0.6em; + font-weight : 800; + ///line-height : @menuHeight; + text-transform : uppercase; + border-right : 1px solid black; + i{ + vertical-align : middle; + margin-right : 3px; + font-size : 1.2em; + } + &:hover, &.selected{ + background-color : #999; + } + .text{ + //line-height : @menuHeight; + .groupName{ + font-size : 10px; + } + } + &:hover{ + .dropdown{ + visibility : visible; + } + } + .dropdown{ + position : absolute; + top : 100%; + visibility : hidden; + z-index : 1000; + margin-left : -5px; + padding : 0px; + background-color : #ddd; + .snippet{ + .animate(background-color); + padding : 10px; + cursor : pointer; + font-size : 10px; + i{ + margin-right : 8px; + font-size : 13px; + } + &:hover{ + background-color : #999; + } + } + } +} \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/snippetbar/snippetbar.jsx b/shared/homebrewery/brewEditor/snippetbar/snippetbar.jsx deleted file mode 100644 index 29c6b43..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippetbar.jsx +++ /dev/null @@ -1,94 +0,0 @@ -const React = require('react'); -const _ = require('lodash'); -const cx = require('classnames'); - - -const Snippets = require('./snippets/snippets.js'); - -const execute = function(val, brew){ - if(_.isFunction(val)) return val(brew); - return val; -} - - - -const Snippetbar = React.createClass({ - getDefaultProps: function() { - return { - brew : '', - onInject : ()=>{}, - onToggle : ()=>{}, - showmeta : false - }; - }, - - handleSnippetClick : function(injectedText){ - this.props.onInject(injectedText) - }, - - renderSnippetGroups : function(){ - return _.map(Snippets, (snippetGroup)=>{ - return - }) - }, - - render : function(){ - return
- {this.renderSnippetGroups()} -
- -
-
- } -}); - -module.exports = Snippetbar; - - - - - - -const SnippetGroup = React.createClass({ - getDefaultProps: function() { - return { - brew : '', - groupName : '', - icon : 'fa-rocket', - snippets : [], - onSnippetClick : function(){}, - }; - }, - handleSnippetClick : function(snippet){ - this.props.onSnippetClick(execute(snippet.gen, this.props.brew)); - }, - renderSnippets : function(){ - return _.map(this.props.snippets, (snippet)=>{ - return
- - {snippet.name} -
- }) - }, - - render : function(){ - return
-
- - {this.props.groupName} -
-
- {this.renderSnippets()} -
-
- }, - -}); \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/snippetbar/snippetbar.less b/shared/homebrewery/brewEditor/snippetbar/snippetbar.less deleted file mode 100644 index 45a6efe..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippetbar.less +++ /dev/null @@ -1,72 +0,0 @@ - -.snippetBar{ - @height : 25px; - position : relative; - height : @height; - background-color : #ddd; - .toggleMeta{ - position : absolute; - top : 0px; - right : 0px; - height : @height; - width : @height; - cursor : pointer; - line-height : @height; - text-align : center; - &:hover, &.selected{ - background-color : #999; - } - } - .snippetGroup{ - display : inline-block; - height : @height; - padding : 0px 5px; - cursor : pointer; - font-size : 0.6em; - font-weight : 800; - line-height : @height; - text-transform : uppercase; - border-right : 1px solid black; - i{ - vertical-align : middle; - margin-right : 3px; - font-size : 1.2em; - } - &:hover, &.selected{ - background-color : #999; - } - .text{ - line-height : @height; - .groupName{ - font-size : 10px; - } - } - &:hover{ - .dropdown{ - visibility : visible; - } - } - .dropdown{ - position : absolute; - top : 100%; - visibility : hidden; - z-index : 1000; - margin-left : -5px; - padding : 0px; - background-color : #ddd; - .snippet{ - .animate(background-color); - padding : 5px; - cursor : pointer; - font-size : 10px; - i{ - margin-right : 8px; - font-size : 13px; - } - &:hover{ - background-color : #999; - } - } - } - } -} \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/classfeature.gen.js b/shared/homebrewery/brewEditor/snippetbar/snippets/classfeature.gen.js deleted file mode 100644 index 2ca3abc..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/classfeature.gen.js +++ /dev/null @@ -1,42 +0,0 @@ -var _ = require('lodash'); - -module.exports = function(classname){ - - classname = classname || _.sample(['archivist', 'fancyman', 'linguist', 'fletcher', - 'notary', 'berserker-typist', 'fishmongerer', 'manicurist', 'haberdasher', 'concierge']) - - classname = classname.toLowerCase(); - - var hitDie = _.sample([4, 6, 8, 10, 12]); - - var abilityList = ["Strength", "Dexerity", "Constitution", "Wisdom", "Charisma", "Intelligence"]; - var skillList = ["Acrobatics ", "Animal Handling", "Arcana", "Athletics", "Deception", "History", "Insight", "Intimidation", "Investigation", "Medicine", "Nature", "Perception", "Performance", "Persuasion", "Religion", "Sleight of Hand", "Stealth", "Survival"]; - - - return [ - "## Class Features", - "As a " + classname + ", you gain the following class features", - "#### Hit Points", - "___", - "- **Hit Dice:** 1d" + hitDie + " per " + classname + " level", - "- **Hit Points at 1st Level:** " + hitDie + " + your Constitution modifier", - "- **Hit Points at Higher Levels:** 1d" + hitDie + " (or " + (hitDie/2 + 1) + ") + your Constitution modifier per " + classname + " level after 1st", - "", - "#### Proficiencies", - "___", - "- **Armor:** " + (_.sampleSize(["Light armor", "Medium armor", "Heavy armor", "Shields"], _.random(0,3)).join(', ') || "None"), - "- **Weapons:** " + (_.sampleSize(["Squeegee", "Rubber Chicken", "Simple weapons", "Martial weapons"], _.random(0,2)).join(', ') || "None"), - "- **Tools:** " + (_.sampleSize(["Artian's tools", "one musical instrument", "Thieve's tools"], _.random(0,2)).join(', ') || "None"), - "", - "___", - "- **Saving Throws:** " + (_.sampleSize(abilityList, 2).join(', ')), - "- **Skills:** Choose two from " + (_.sampleSize(skillList, _.random(4, 6)).join(', ')), - "", - "#### Equipment", - "You start with the following equipment, in addition to the equipment granted by your background:", - "- *(a)* a martial weapon and a shield or *(b)* two martial weapons", - "- *(a)* five javelins or *(b)* any simple melee weapon", - "- " + (_.sample(["10 lint fluffs", "1 button", "a cherished lost sock"])), - "\n\n\n" - ].join('\n'); -} diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/classtable.gen.js b/shared/homebrewery/brewEditor/snippetbar/snippets/classtable.gen.js deleted file mode 100644 index 649d85b..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/classtable.gen.js +++ /dev/null @@ -1,114 +0,0 @@ -var _ = require('lodash'); - -var features = [ - "Astrological Botany", - "Astrological Chemistry", - "Biochemical Sorcery", - "Civil Alchemy", - "Consecrated Biochemistry", - "Demonic Anthropology", - "Divinatory Mineralogy", - "Genetic Banishing", - "Hermetic Geography", - "Immunological Incantations", - "Nuclear Illusionism", - "Ritual Astronomy", - "Seismological Divination", - "Spiritual Biochemistry", - "Statistical Occultism", - "Police Necromancer", - "Sixgun Poisoner", - "Pharmaceutical Gunslinger", - "Infernal Banker", - "Spell Analyst", - "Gunslinger Corruptor", - "Torque Interfacer", - "Exo Interfacer", - "Gunpowder Torturer", - "Orbital Gravedigger", - "Phased Linguist", - "Mathematical Pharmacist", - "Plasma Outlaw", - "Malefic Chemist", - "Police Cultist" -]; - -var classnames = ['Archivist', 'Fancyman', 'Linguist', 'Fletcher', - 'Notary', 'Berserker-Typist', 'Fishmongerer', 'Manicurist', 'Haberdasher', 'Concierge']; - -var levels = ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", "20th"] - -var profBonus = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6]; - -var getFeature = (level)=>{ - var res = [] - if(_.includes([4,6,8,12,14,16,19], level+1)){ - res = ["Ability Score Improvement"] - } - res = _.union(res, _.sampleSize(features, _.sample([0,1,1,1,1,1]))); - if(!res.length) return "─"; - return res.join(', '); -} - -module.exports = { - full : function(){ - var classname = _.sample(classnames) - - var maxes = [4,3,3,3,3,2,2,1,1] - var drawSlots = function(Slots){ - var slots = Number(Slots); - return _.times(9, function(i){ - var max = maxes[i]; - if(slots < 1) return "—"; - var res = _.min([max, slots]); - slots -= res; - return res; - }).join(' | ') - } - - - var cantrips = 3; - var spells = 1; - var slots = 2; - return "
\n##### The " + classname + "\n" + - "| Level | Proficiency Bonus | Features | Cantrips Known | Spells Known | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n"+ - "|:---:|:---:|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n" + - _.map(levels, function(levelName, level){ - var res = [ - levelName, - "+" + profBonus[level], - getFeature(level), - cantrips, - spells, - drawSlots(slots) - ].join(' | '); - - cantrips += _.random(0,1); - spells += _.random(0,1); - slots += _.random(0,2); - - return "| " + res + " |"; - }).join('\n') +'\n
\n\n'; - }, - - half : function(){ - var classname = _.sample(classnames) - - var featureScore = 1 - return "
\n##### The " + classname + "\n" + - "| Level | Proficiency Bonus | Features | " + _.sample(features) + "|\n" + - "|:---:|:---:|:---|:---:|\n" + - _.map(levels, function(levelName, level){ - var res = [ - levelName, - "+" + profBonus[level], - getFeature(level), - "+" + featureScore - ].join(' | '); - - featureScore += _.random(0,1); - - return "| " + res + " |"; - }).join('\n') +'\n
\n\n'; - } -}; \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/coverpage.gen.js b/shared/homebrewery/brewEditor/snippetbar/snippets/coverpage.gen.js deleted file mode 100644 index d4b69d6..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/coverpage.gen.js +++ /dev/null @@ -1,117 +0,0 @@ -var _ = require('lodash'); - -var titles = [ - "The Burning Gallows", - "The Ring of Nenlast", - "Below the Blind Tavern", - "Below the Hungering River", - "Before Bahamut's Land", - "The Cruel Grave from Within", - "The Strength of Trade Road", - "Through The Raven Queen's Worlds", - "Within the Settlement", - "The Crown from Within", - "The Merchant Within the Battlefield", - "Ioun's Fading Traveler", - "The Legion Ingredient", - "The Explorer Lure", - "Before the Charming Badlands", - "The Living Dead Above the Fearful Cage", - "Vecna's Hidden Sage", - "Bahamut's Demonspawn", - "Across Gruumsh's Elemental Chaos", - "The Blade of Orcus", - "Beyond Revenge", - "Brain of Insanity", - "Breed Battle!, A New Beginning", - "Evil Lake, A New Beginning", - "Invasion of the Gigantic Cat, Part II", - "Kraken War 2020", - "The Body Whisperers", - "The Diabolical Tales of the Ape-Women", - "The Doctor Immortal", - "The Doctor from Heaven", - "The Graveyard", - "Azure Core", - "Core Battle", - "Core of Heaven: The Guardian of Amazement", - "Deadly Amazement III", - "Dry Chaos IX", - "Gate Thunder", - "Guardian: Skies of the Dark Wizard", - "Lute of Eternity", - "Mercury's Planet: Brave Evolution", - "Ruby of Atlantis: The Quake of Peace", - "Sky of Zelda: The Thunder of Force", - "Vyse's Skies", - "White Greatness III", - "Yellow Divinity", - "Zidane's Ghost" -]; - -var subtitles = [ - "In an ominous universe, a botanist opposes terrorism.", - "In a demon-haunted city, in an age of lies and hate, a physicist tries to find an ancient treasure and battles a mob of aliens.", - "In a land of corruption, two cyberneticists and a dungeon delver search for freedom.", - "In an evil empire of horror, two rangers battle the forces of hell.", - "In a lost city, in an age of sorcery, a librarian quests for revenge.", - "In a universe of illusions and danger, three time travellers and an adventurer search for justice.", - "In a forgotten universe of barbarism, in an era of terror and mysticism, a virtual reality programmer and a spy try to find vengance and battle crime.", - "In a universe of demons, in an era of insanity and ghosts, three bodyguards and a bodyguard try to find vengance.", - "In a kingdom of corruption and battle, seven artificial intelligences try to save the last living fertile woman.", - "In a universe of virutal reality and agony, in an age of ghosts and ghosts, a fortune-teller and a wanderer try to avert the apocalypse.", - "In a crime-infested kingdom, three martial artists quest for the truth and oppose evil.", - "In a terrifying universe of lost souls, in an era of lost souls, eight dancers fight evil.", - "In a galaxy of confusion and insanity, three martial artists and a duke battle a mob of psychics.", - "In an amazing kingdom, a wizard and a secretary hope to prevent the destruction of mankind.", - "In a kingdom of deception, a reporter searches for fame.", - "In a hellish empire, a swordswoman and a duke try to find the ultimate weapon and battle a conspiracy.", - "In an evil galaxy of illusion, in a time of technology and misery, seven psychiatrists battle crime.", - "In a dark city of confusion, three swordswomen and a singer battle lawlessness.", - "In an ominous empire, in an age of hate, two philosophers and a student try to find justice and battle a mob of mages intent on stealing the souls of the innocent.", - "In a kingdom of panic, six adventurers oppose lawlessness.", - "In a land of dreams and hopelessness, three hackers and a cyborg search for justice.", - "On a planet of mysticism, three travelers and a fire fighter quest for the ultimate weapon and oppose evil.", - "In a wicked universe, five seers fight lawlessness.", - "In a kingdom of death, in an era of illusion and blood, four colonists search for fame.", - "In an amazing kingdom, in an age of sorcery and lost souls, eight space pirates quest for freedom.", - "In a cursed empire, five inventors oppose terrorism.", - "On a crime-ridden planet of conspiracy, a watchman and an artificial intelligence try to find love and oppose lawlessness.", - "In a forgotten land, a reporter and a spy try to stop the apocalypse.", - "In a forbidden land of prophecy, a scientist and an archivist oppose a cabal of barbarians intent on stealing the souls of the innocent.", - "On an infernal world of illusion, a grave robber and a watchman try to find revenge and combat a syndicate of mages intent on stealing the source of all magic.", - "In a galaxy of dark magic, four fighters seek freedom.", - "In an empire of deception, six tomb-robbers quest for the ultimate weapon and combat an army of raiders.", - "In a kingdom of corruption and lost souls, in an age of panic, eight planetologists oppose evil.", - "In a galaxy of misery and hopelessness, in a time of agony and pain, five planetologists search for vengance.", - "In a universe of technology and insanity, in a time of sorcery, a computer techician quests for hope.", - "On a planet of dark magic and barbarism, in an age of horror and blasphemy, seven librarians search for fame.", - "In an empire of dark magic, in a time of blood and illusions, four monks try to find the ultimate weapon and combat terrorism.", - "In a forgotten empire of dark magic, six kings try to prevent the destruction of mankind.", - "In a galaxy of dark magic and horror, in an age of hopelessness, four marines and an outlaw combat evil.", - "In a mysterious city of illusion, in an age of computerization, a witch-hunter tries to find the ultimate weapon and opposes an evil corporation.", - "In a damned kingdom of technology, a virtual reality programmer and a fighter seek fame.", - "In a hellish kingdom, in an age of blasphemy and blasphemy, an astrologer searches for fame.", - "In a damned world of devils, an alien and a ranger quest for love and oppose a syndicate of demons.", - "In a cursed galaxy, in a time of pain, seven librarians hope to avert the apocalypse.", - "In a crime-infested galaxy, in an era of hopelessness and panic, three champions and a grave robber try to solve the ultimate crime." -]; - - -module.exports = () => { - return ` - -
- -# ${_.sample(titles)} - -
-
-##### ${_.sample(subtitles)} -
- -\\page` -} \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/fullclass.gen.js b/shared/homebrewery/brewEditor/snippetbar/snippets/fullclass.gen.js deleted file mode 100644 index 9a2da20..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/fullclass.gen.js +++ /dev/null @@ -1,43 +0,0 @@ -var _ = require('lodash'); - -var ClassFeatureGen = require('./classfeature.gen.js'); - -var ClassTableGen = require('./classtable.gen.js'); - -module.exports = function(){ - - var classname = _.sample(['Archivist', 'Fancyman', 'Linguist', 'Fletcher', - 'Notary', 'Berserker-Typist', 'Fishmongerer', 'Manicurist', 'Haberdasher', 'Concierge']) - - - var image = _.sample(_.map([ - "http://orig01.deviantart.net/4682/f/2007/099/f/c/bard_stick_figure_by_wrpigeek.png", - "http://img07.deviantart.net/a3c9/i/2007/099/3/a/archer_stick_figure_by_wrpigeek.png", - "http://pre04.deviantart.net/d596/th/pre/f/2007/099/5/2/adventurer_stick_figure_by_wrpigeek.png", - "http://img13.deviantart.net/d501/i/2007/099/d/4/black_mage_stick_figure_by_wrpigeek.png", - "http://img09.deviantart.net/5cf3/i/2007/099/d/d/dark_knight_stick_figure_by_wrpigeek.png", - "http://pre01.deviantart.net/7a34/th/pre/f/2007/099/6/3/monk_stick_figure_by_wrpigeek.png", - "http://img11.deviantart.net/5dcc/i/2007/099/d/1/mystic_knight_stick_figure_by_wrpigeek.png", - "http://pre08.deviantart.net/ad45/th/pre/f/2007/099/a/0/thief_stick_figure_by_wrpigeek.png", - ], function(url){ - return "" - })) - - - return [ - image, - "", - "```", - "```", - "
\n\n", - "## " + classname, - "Cool intro stuff will go here", - - "\\page", - ClassTableGen(classname), - ClassFeatureGen(classname), - - - - ].join('\n') + '\n\n\n'; -}; \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/magic.gen.js b/shared/homebrewery/brewEditor/snippetbar/snippets/magic.gen.js deleted file mode 100644 index 82469cd..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/magic.gen.js +++ /dev/null @@ -1,91 +0,0 @@ -var _ = require('lodash'); - -var spellNames = [ - "Astral Rite of Acne", - "Create Acne", - "Cursed Ramen Erruption", - "Dark Chant of the Dentists", - "Erruption of Immaturity", - "Flaming Disc of Inconvenience", - "Heal Bad Hygene", - "Heavenly Transfiguration of the Cream Devil", - "Hellish Cage of Mucus", - "Irritate Peanut Butter Fairy", - "Luminous Erruption of Tea", - "Mystic Spell of the Poser", - "Sorcerous Enchantment of the Chimneysweep", - "Steak Sauce Ray", - "Talk to Groupie", - "Astonishing Chant of Chocolate", - "Astounding Pasta Puddle", - "Ball of Annoyance", - "Cage of Yarn", - "Control Noodles Elemental", - "Create Nervousness", - "Cure Baldness", - "Cursed Ritual of Bad Hair", - "Dispell Piles in Dentist", - "Eliminate Florists", - "Illusionary Transfiguration of the Babysitter", - "Necromantic Armor of Salad Dressing", - "Occult Transfiguration of Foot Fetish", - "Protection from Mucus Giant", - "Tinsel Blast", - "Alchemical Evocation of the Goths", - "Call Fangirl", - "Divine Spell of Crossdressing", - "Dominate Ramen Giant", - "Eliminate Vindictiveness in Gym Teacher", - "Extra-Planar Spell of Irritation", - "Induce Whining in Babysitter", - "Invoke Complaining", - "Magical Enchantment of Arrogance", - "Occult Globe of Salad Dressing", - "Overwhelming Enchantment of the Chocolate Fairy", - "Sorcerous Dandruff Globe", - "Spiritual Invocation of the Costumers", - "Ultimate Rite of the Confetti Angel", - "Ultimate Ritual of Mouthwash", -]; - -module.exports = { - - spellList : function(){ - var levels = ['Cantrips (0 Level)', '2nd Level', '3rd Level', '4th Level', '5th Level', '6th Level', '7th Level', '8th Level', '9th Level']; - - var content = _.map(levels, (level)=>{ - var spells = _.map(_.sampleSize(spellNames, _.random(5, 15)), (spell)=>{ - return `- ${spell}`; - }).join('\n'); - return `##### ${level} \n${spells} \n`; - }).join('\n'); - - return `
\n${content}\n
`; - }, - - spell : function(){ - var level = ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th"]; - var spellSchools = ["abjuration", "conjuration", "divination", "enchantment", "evocation", "illusion", "necromancy", "transmutation"]; - - - var components = _.sampleSize(["V", "S", "M"], _.random(1,3)).join(', '); - if(components.indexOf("M") !== -1){ - components += " (" + _.sampleSize(['a small doll', 'a crushed button worth at least 1cp', 'discarded gum wrapper'], _.random(1,3)).join(', ') + ")" - } - - return [ - "#### " + _.sample(spellNames), - "*" + _.sample(level) + "-level " + _.sample(spellSchools) + "*", - "___", - "- **Casting Time:** 1 action", - "- **Range:** " + _.sample(["Self", "Touch", "30 feet", "60 feet"]), - "- **Components:** " + components, - "- **Duration:** " + _.sample(["Until dispelled", "1 round", "Instantaneous", "Concentration, up to 10 minutes", "1 hour"]), - "", - "A flame, equivalent in brightness to a torch, springs from from an object that you touch. ", - "The effect look like a regular flame, but it creates no heat and doesn't use oxygen. ", - "A *continual flame* can be covered or hidden but not smothered or quenched.", - "\n\n\n" - ].join('\n'); - } -} \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/monsterblock.gen.js b/shared/homebrewery/brewEditor/snippetbar/snippets/monsterblock.gen.js deleted file mode 100644 index abbcd6c..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/monsterblock.gen.js +++ /dev/null @@ -1,196 +0,0 @@ -var _ = require('lodash'); - -var genList = function(list, max){ - return _.sampleSize(list, _.random(0,max)).join(', ') || "None"; -} - -var getMonsterName = function(){ - return _.sample([ - "All-devouring Baseball Imp", - "All-devouring Gumdrop Wraith", - "Chocolate Hydra", - "Devouring Peacock", - "Economy-sized Colossus of the Lemonade Stand", - "Ghost Pigeon", - "Gibbering Duck", - "Sparklemuffin Peacock Spider", - "Gum Elemental", - "Illiterate Construct of the Candy Store", - "Ineffable Chihuahua", - "Irritating Death Hamster", - "Irritating Gold Mouse", - "Juggernaut Snail", - "Juggernaut of the Sock Drawer", - "Koala of the Cosmos", - "Mad Koala of the West", - "Milk Djinni of the Lemonade Stand", - "Mind Ferret", - "Mystic Salt Spider", - "Necrotic Halitosis Angel", - "Pinstriped Famine Sheep", - "Ritalin Leech", - "Shocker Kangaroo", - "Stellar Tennis Juggernaut", - "Wailing Quail of the Sun", - "Angel Pigeon", - "Anime Sphinx", - "Bored Avalanche Sheep of the Wasteland", - "Devouring Nougat Sphinx of the Sock Drawer", - "Djinni of the Footlocker", - "Ectoplasmic Jazz Devil", - "Flatuent Angel", - "Gelatinous Duck of the Dream-Lands", - "Gelatinous Mouse", - "Golem of the Footlocker", - "Lich Wombat", - "Mechanical Sloth of the Past", - "Milkshake Succubus", - "Puffy Bone Peacock of the East", - "Rainbow Manatee", - "Rune Parrot", - "Sand Cow", - "Sinister Vanilla Dragon", - "Snail of the North", - "Spider of the Sewer", - "Stellar Sawdust Leech", - "Storm Anteater of Hell", - "Stupid Spirit of the Brewery", - "Time Kangaroo", - "Tomb Poodle", - ]); -} - -var getType = function(){ - return _.sample(['Tiny', 'Small', 'Medium', 'Large', 'Gargantuan', 'Stupidly vast']) + " " + _.sample(['beast', 'fiend', 'annoyance', 'guy', 'cutie']) -} - -var getAlignment = function(){ - return _.sample([ - "annoying evil", - "chaotic gossipy", - "chaotic sloppy", - "depressed neutral", - "lawful bogus", - "lawful coy", - "manic-depressive evil", - "narrow-minded neutral", - "neutral annoying", - "neutral ignorant", - "oedpipal neutral", - "silly neutral", - "unoriginal neutral", - "weird neutral", - "wordy evil", - "unaligned" - ]); -}; - -var getStats = function(){ - return '>|' + _.times(6, function(){ - var num = _.random(1,20); - var mod = Math.ceil(num/2 - 5) - return num + " (" + (mod >= 0 ? '+'+mod : mod ) + ")" - }).join('|') + '|'; -} - -var genAbilities = function(){ - return _.sample([ - "> ***Pack Tactics.*** These guys work together. Like super well, you don't even know.", - "> ***False Appearance. *** While the armor reamin motionless, it is indistinguishable from a normal suit of armor.", - ]); -} - -var genAction = function(){ - var name = _.sample([ - "Abdominal Drop", - "Airplane Hammer", - "Atomic Death Throw", - "Bulldog Rake", - "Corkscrew Strike", - "Crossed Splash", - "Crossface Suplex", - "DDT Powerbomb", - "Dual Cobra Wristlock", - "Dual Throw", - "Elbow Hold", - "Gory Body Sweep", - "Heel Jawbreaker", - "Jumping Driver", - "Open Chin Choke", - "Scorpion Flurry", - "Somersault Stump Fists", - "Suffering Wringer", - "Super Hip Submission", - "Super Spin", - "Team Elbow", - "Team Foot", - "Tilt-a-whirl Chin Sleeper", - "Tilt-a-whirl Eye Takedown", - "Turnbuckle Roll" - ]) - - return "> ***" + name + ".*** *Melee Weapon Attack:* +4 to hit, reach 5ft., one target. *Hit* 5 (1d6 + 2) "; -} - - -module.exports = { - - full : function(){ - return [ - "___", - "___", - "> ## " + getMonsterName(), - ">*" + getType() + ", " + getAlignment() + "*", - "> ___", - "> - **Armor Class** " + _.random(10,20), - "> - **Hit Points** " + _.random(1, 150) + "(1d4 + 5)", - "> - **Speed** " + _.random(0,50) + "ft.", - ">___", - ">|STR|DEX|CON|INT|WIS|CHA|", - ">|:---:|:---:|:---:|:---:|:---:|:---:|", - getStats(), - ">___", - "> - **Condition Immunities** " + genList(["groggy", "swagged", "weak-kneed", "buzzed", "groovy", "melancholy", "drunk"], 3), - "> - **Senses** passive Perception " + _.random(3, 20), - "> - **Languages** " + genList(["Common", "Pottymouth", "Gibberish", "Latin", "Jive"], 2), - "> - **Challenge** " + _.random(0, 15) + " (" + _.random(10,10000)+ " XP)", - "> ___", - _.times(_.random(3,6), function(){ - return genAbilities() - }).join('\n>\n'), - "> ### Actions", - _.times(_.random(4,6), function(){ - return genAction() - }).join('\n>\n'), - ].join('\n') + '\n\n\n'; - }, - - half : function(){ - return [ - "___", - "> ## " + getMonsterName(), - ">*" + getType() + ", " + getAlignment() + "*", - "> ___", - "> - **Armor Class** " + _.random(10,20), - "> - **Hit Points** " + _.random(1, 150) + "(1d4 + 5)", - "> - **Speed** " + _.random(0,50) + "ft.", - ">___", - ">|STR|DEX|CON|INT|WIS|CHA|", - ">|:---:|:---:|:---:|:---:|:---:|:---:|", - getStats(), - ">___", - "> - **Condition Immunities** " + genList(["groggy", "swagged", "weak-kneed", "buzzed", "groovy", "melancholy", "drunk"], 3), - "> - **Senses** passive Perception " + _.random(3, 20), - "> - **Languages** " + genList(["Common", "Pottymouth", "Gibberish", "Latin", "Jive"], 2), - "> - **Challenge** " + _.random(0, 15) + " (" + _.random(10,10000)+ " XP)", - "> ___", - _.times(_.random(0,2), function(){ - return genAbilities() - }).join('\n>\n'), - "> ### Actions", - _.times(_.random(1,2), function(){ - return genAction() - }).join('\n>\n'), - ].join('\n') + '\n\n\n'; - } -} diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/snippets.js b/shared/homebrewery/brewEditor/snippetbar/snippets/snippets.js deleted file mode 100644 index bcb1df9..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/snippets.js +++ /dev/null @@ -1,267 +0,0 @@ -var MagicGen = require('./magic.gen.js'); -var ClassTableGen = require('./classtable.gen.js'); -var MonsterBlockGen = require('./monsterblock.gen.js'); -var ClassFeatureGen = require('./classfeature.gen.js'); -var FullClassGen = require('./fullclass.gen.js'); -var CoverPageGen = require('./coverpage.gen.js'); -var TableOfContentsGen = require('./tableOfContents.gen.js'); - - -module.exports = [ - - { - groupName : 'Editor', - icon : 'fa-pencil', - snippets : [ - { - name : "Column Break", - icon : 'fa-columns', - gen : "```\n```\n\n" - }, - { - name : "New Page", - icon : 'fa-file-text', - gen : "\\page\n\n" - }, - { - name : "Vertical Spacing", - icon : 'fa-arrows-v', - gen : "
\n\n" - }, - { - name : "Wide Block", - icon : 'fa-arrows-h', - gen : "
\nEverything in here will be extra wide. Tables, text, everything! Beware though, CSS columns can behave a bit weird sometimes.\n
\n" - }, - { - name : "Image", - icon : 'fa-image', - gen : [ - "", - "Credit: Kyounghwan Kim" - ].join('\n') - }, - { - name : "Background Image", - icon : 'fa-tree', - gen : [ - "" - ].join('\n') - }, - - { - name : "Page Number", - icon : 'fa-bookmark', - gen : "
1
\n
PART 1 | FANCINESS
\n\n" - }, - - { - name : "Auto-incrementing Page Number", - icon : 'fa-sort-numeric-asc', - gen : "
\n" - }, - - { - name : "Link to page", - icon : 'fa-link', - gen : "[Click here](#p3) to go to page 3\n" - }, - - { - name : "Table of Contents", - icon : 'fa-book', - gen : TableOfContentsGen - }, - - - ] - }, - - - /************************* PHB ********************/ - - { - groupName : 'PHB', - icon : 'fa-book', - snippets : [ - { - name : 'Spell', - icon : 'fa-magic', - gen : MagicGen.spell, - }, - { - name : 'Spell List', - icon : 'fa-list', - gen : MagicGen.spellList, - }, - { - name : 'Class Feature', - icon : 'fa-trophy', - gen : ClassFeatureGen, - }, - { - name : 'Note', - icon : 'fa-sticky-note', - gen : function(){ - return [ - "> ##### Time to Drop Knowledge", - "> Use notes to point out some interesting information. ", - "> ", - "> **Tables and lists** both work within a note." - ].join('\n'); - }, - }, - { - name : 'Descriptive Text Box', - icon : 'fa-sticky-note-o', - gen : function(){ - return [ - "
", - "##### Time to Drop Knowledge", - "Use notes to point out some interesting information. ", - "", - "**Tables and lists** both work within a note.", - "
" - ].join('\n'); - }, - }, - { - name : 'Monster Stat Block', - icon : 'fa-bug', - gen : MonsterBlockGen.half, - }, - { - name : 'Wide Monster Stat Block', - icon : 'fa-paw', - gen : MonsterBlockGen.full, - }, - { - name : 'Cover Page', - icon : 'fa-file-word-o', - gen : CoverPageGen, - }, - ] - }, - - - - /********************* TABLES *********************/ - - { - groupName : 'Tables', - icon : 'fa-table', - snippets : [ - { - name : "Class Table", - icon : 'fa-table', - gen : ClassTableGen.full, - }, - { - name : "Half Class Table", - icon : 'fa-list-alt', - gen : ClassTableGen.half, - }, - { - name : 'Table', - icon : 'fa-th-list', - gen : function(){ - return [ - "##### Cookie Tastiness", - "| Tastiness | Cookie Type |", - "|:----:|:-------------|", - "| -5 | Raisin |", - "| 8th | Chocolate Chip |", - "| 11th | 2 or lower |", - "| 14th | 3 or lower |", - "| 17th | 4 or lower |\n\n", - ].join('\n'); - }, - }, - { - name : 'Wide Table', - icon : 'fa-list', - gen : function(){ - return [ - "
", - "##### Cookie Tastiness", - "| Tastiness | Cookie Type |", - "|:----:|:-------------|", - "| -5 | Raisin |", - "| 8th | Chocolate Chip |", - "| 11th | 2 or lower |", - "| 14th | 3 or lower |", - "| 17th | 4 or lower |", - "
\n\n" - ].join('\n'); - }, - }, - { - name : 'Split Table', - icon : 'fa-th-large', - gen : function(){ - return [ - "
", - "| d10 | Damage Type |", - "|:---:|:------------|", - "| 1 | Acid |", - "| 2 | Cold |", - "| 3 | Fire |", - "| 4 | Force |", - "| 5 | Lightning |", - "", - "```", - "```", - "", - "| d10 | Damage Type |", - "|:---:|:------------|", - "| 6 | Necrotic |", - "| 7 | Poison |", - "| 8 | Psychic |", - "| 9 | Radiant |", - "| 10 | Thunder |", - "
\n\n", - ].join('\n'); - }, - } - ] - }, - - - - - /**************** PRINT *************/ - - { - groupName : 'Print', - icon : 'fa-print', - snippets : [ - { - name : "A4 PageSize", - icon : 'fa-file-o', - gen : ['' - ].join('\n') - }, - { - name : "Ink Friendly", - icon : 'fa-tint', - gen : ['', - '' - ].join('\n') - }, - ] - }, - -] diff --git a/shared/homebrewery/brewEditor/snippetbar/snippets/tableOfContents.gen.js b/shared/homebrewery/brewEditor/snippetbar/snippets/tableOfContents.gen.js deleted file mode 100644 index 448b2f4..0000000 --- a/shared/homebrewery/brewEditor/snippetbar/snippets/tableOfContents.gen.js +++ /dev/null @@ -1,72 +0,0 @@ -const _ = require('lodash'); - -const getTOC = (pages) => { - const add1 = (title, page)=>{ - res.push({ - title : title, - page : page + 1, - children : [] - }); - } - const add2 = (title, page)=>{ - if(!_.last(res)) add1('', page); - _.last(res).children.push({ - title : title, - page : page + 1, - children : [] - }); - } - const add3 = (title, page)=>{ - if(!_.last(res)) add1('', page); - if(!_.last(_.last(res).children)) add2('', page); - _.last(_.last(res).children).children.push({ - title : title, - page : page + 1, - children : [] - }); - } - - let res = []; - _.each(pages, (page, pageNum)=>{ - const lines = page.split('\n'); - _.each(lines, (line) => { - if(_.startsWith(line, '# ')){ - const title = line.replace('# ', ''); - add1(title, pageNum) - } - if(_.startsWith(line, '## ')){ - const title = line.replace('## ', ''); - add2(title, pageNum); - } - if(_.startsWith(line, '### ')){ - const title = line.replace('### ', ''); - add3(title, pageNum); - } - }) - }); - return res; -} - -module.exports = function(brew){ - const pages = brew.split('\\page'); - const TOC = getTOC(pages); - const markdown = _.reduce(TOC, (r, g1, idx1)=>{ - r.push(`- **[${idx1 + 1} ${g1.title}](#p${g1.page})**`) - if(g1.children.length){ - _.each(g1.children, (g2, idx2) => { - r.push(` - [${idx1 + 1}.${idx2 + 1} ${g2.title}](#p${g2.page})`); - if(g2.children.length){ - _.each(g2.children, (g3, idx3) => { - r.push(` - [${idx1 + 1}.${idx2 + 1}.${idx3 + 1} ${g3.title}](#p${g3.page})`); - }); - } - }); - } - return r; - }, []).join('\n'); - - return `
-##### Table Of Contents -${markdown} -
\n`; -} \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/index.js b/shared/homebrewery/snippets/brew/index.js index 85955ef..dab63e4 100644 --- a/shared/homebrewery/snippets/brew/index.js +++ b/shared/homebrewery/snippets/brew/index.js @@ -1,13 +1,15 @@ const _ = require('lodash'); -const process = (imports)=>{ - -}; - -module.exports = { - phb : _.keyBy([ - require('./spell.snippet.js') - ], (spt)=>_.snakeCase(spt.name)), +module.exports = _.merge( + require('./spell.snippet.js'), + require('./table.snippet.js') -} \ No newline at end of file + //wide + //colors + //brushed + //font + //alignment + + +); \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/random.data.js b/shared/homebrewery/snippets/brew/random.data.js index d4a405b..c194bd2 100644 --- a/shared/homebrewery/snippets/brew/random.data.js +++ b/shared/homebrewery/snippets/brew/random.data.js @@ -1,4 +1,9 @@ -module.exports = { +const _ = require('lodash'); + +const Data = { + rand : (name, max = 1, min = 1)=>{ + return _.sampleSize(Data[name], _.random(min, max)); + }, titles : [ `The Burning Gallows`, @@ -309,4 +314,6 @@ module.exports = { -} \ No newline at end of file +}; + +module.exports = Data; \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/spell.snippet.js b/shared/homebrewery/snippets/brew/spell.snippet.js index 2b96d76..658dfc1 100644 --- a/shared/homebrewery/snippets/brew/spell.snippet.js +++ b/shared/homebrewery/snippets/brew/spell.snippet.js @@ -1,7 +1,4 @@ const _ = require('lodash'); - -const spellNames = require('./spellname.list.js'); - const Data = require('./random.data.js'); @@ -11,13 +8,11 @@ const schools = ['abjuration', 'conjuration', 'divination', 'enchantment', 'evoc module.exports = { - name : 'Spell', - icon : 'fa-spell', - gen : ()=>{ + spell : ()=>{ let components = _.sampleSize(['V', 'S', 'M'], _.random(1,3)).join(', '); if(components.indexOf('M') !== -1){ - components += ' (' + _.sampleSize(Data.gear, _.random(1,3)).join(', ') + ')' + components += ` (${Data.rand('gear',3).join(', ')})` } const duration = _.sample([ @@ -28,11 +23,11 @@ module.exports = { '1 hour' ]); - const description = _.sampleSize(Data.effects, _.random(1,2)).concat(_.sample(Data.effects2)).join(' '); + const description = Data.rand('effects', 2).concat(Data.rand('effects2')).join(' '); return `{{spell -#### ${_.sample(spellNames)} +#### ${_.sample(Data.spellNames)} *${_.sample(levels)}-level ${_.sample(schools)}* - **Casting Time:** ${_.sample(['1 action', 'Reaction', '10 minutes', '1 hour'])} - **Range:** ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])} diff --git a/shared/homebrewery/snippets/brew/spellname.list.js b/shared/homebrewery/snippets/brew/spellname.list.js deleted file mode 100644 index f75ae67..0000000 --- a/shared/homebrewery/snippets/brew/spellname.list.js +++ /dev/null @@ -1,47 +0,0 @@ -module.exports = [ - 'Astral Rite of Acne', - 'Create Acne', - 'Cursed Ramen Erruption', - 'Dark Chant of the Dentists', - 'Erruption of Immaturity', - 'Flaming Disc of Inconvenience', - 'Heal Bad Hygene', - 'Heavenly Transfiguration of the Cream Devil', - 'Hellish Cage of Mucus', - 'Irritate Peanut Butter Fairy', - 'Luminous Erruption of Tea', - 'Mystic Spell of the Poser', - 'Sorcerous Enchantment of the Chimneysweep', - 'Steak Sauce Ray', - 'Talk to Groupie', - 'Astonishing Chant of Chocolate', - 'Astounding Pasta Puddle', - 'Ball of Annoyance', - 'Cage of Yarn', - 'Control Noodles Elemental', - 'Create Nervousness', - 'Cure Baldness', - 'Cursed Ritual of Bad Hair', - 'Dispell Piles in Dentist', - 'Eliminate Florists', - 'Illusionary Transfiguration of the Babysitter', - 'Necromantic Armor of Salad Dressing', - 'Occult Transfiguration of Foot Fetish', - 'Protection from Mucus Giant', - 'Tinsel Blast', - 'Alchemical Evocation of the Goths', - 'Call Fangirl', - 'Divine Spell of Crossdressing', - 'Dominate Ramen Giant', - 'Eliminate Vindictiveness in Gym Teacher', - 'Extra-Planar Spell of Irritation', - 'Induce Whining in Babysitter', - 'Invoke Complaining', - 'Magical Enchantment of Arrogance', - 'Occult Globe of Salad Dressing', - 'Overwhelming Enchantment of the Chocolate Fairy', - 'Sorcerous Dandruff Globe', - 'Spiritual Invocation of the Costumers', - 'Ultimate Rite of the Confetti Angel', - 'Ultimate Ritual of Mouthwash', -]; \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/table.snippet.js b/shared/homebrewery/snippets/brew/table.snippet.js index a500e5d..673d075 100644 --- a/shared/homebrewery/snippets/brew/table.snippet.js +++ b/shared/homebrewery/snippets/brew/table.snippet.js @@ -1,14 +1,62 @@ const _ = require('lodash'); +const Data = require('./random.data.js'); + + + +/* +- Roll +- Level +- Cost - spell lists -- roll charts +- cost +- Class +*/ + + +const columns = { + roll : (rows)=>{ + return _.concat([`d${rows}`, ':---:'], _.times(rows, (i)=>i+1)); + }, + level : (rows)=>{ + return _.concat([`${_.sample(Data.classes)} Level`, ':---:'], _.times(rows, (i)=>`${i*2+3}th`)); + }, + + spell : (rows)=>{ + return _.concat(['Spells', ':---'], _.times(rows, (i)=>{ + return `_${Data.rand('spellNames', 2).join(', ')}_` + })); + }, + cost : (rows)=>{ + return _.concat([`Cost`, '---:'], _.times(rows, (i)=>{ + return _.sample(['1 gp', '10 gp', '5 cp', '10,000 gp', '200 sp', '1 pp', '2 gp']); + })); + }, + gear : (rows)=>{ + return _.concat([_.sample(['Equipment', 'Reward', 'Treasure']), ':---'], _.times(rows, (i)=>{ + return Data.rand('gear'); + })); + } +} module.exports = { - name : 'Table', - icon : 'fa-table', - gen: ()=>{ + table : () => { + const rows = _.sample([4,6,8,10]); - }, + const cols = [ + columns.roll(rows), + columns.level(rows), + columns.gear(rows) + ]; + + return _.times(rows + 2, (i)=>{ + if(i==1){ + return '|' + _.map(cols, (col)=>col[i]).join('|') + '|'; + }else{ + return '| ' + _.map(cols, (col)=>col[i]).join(' | ') + ' |'; + } + }).join('\n'); + } } \ No newline at end of file diff --git a/shared/homebrewery/snippets/style/a4.snippet.js b/shared/homebrewery/snippets/style/a4.snippet.js new file mode 100644 index 0000000..bc62d33 --- /dev/null +++ b/shared/homebrewery/snippets/style/a4.snippet.js @@ -0,0 +1,8 @@ +module.exports = { + a4 : ()=>{ + return `.phb{ + width : 210mm; + height : 296.8mm; +}`; + } +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/style/index.js b/shared/homebrewery/snippets/style/index.js index e69de29..995e36d 100644 --- a/shared/homebrewery/snippets/style/index.js +++ b/shared/homebrewery/snippets/style/index.js @@ -0,0 +1,6 @@ +const _ = require('lodash'); + +module.exports = _.merge( + require('./ink.snippet.js'), + require('./a4.snippet.js') +); diff --git a/shared/homebrewery/snippets/style/ink.snippet.js b/shared/homebrewery/snippets/style/ink.snippet.js new file mode 100644 index 0000000..ffd6d1e --- /dev/null +++ b/shared/homebrewery/snippets/style/ink.snippet.js @@ -0,0 +1,9 @@ + + +module.exports = { + inkFriendly : ()=>{ + return `.phb{ background : white;} +.phb img{ display : none;} +.phb hr+blockquote{background : white;}`; + } +} \ No newline at end of file From fbc18a017cd407353a9b1d7f4de63f5133696a2d Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Feb 2017 13:01:48 -0500 Subject: [PATCH 03/21] Creating new stlying for the snippet blocks --- shared/homebrewery/brewEditor/brewEditor.jsx | 9 ---- .../brewEditor/menubar/menubar.jsx | 26 ++++++++++- shared/homebrewery/phb_style/phb.blocks.less | 44 +++++++++++++++++++ shared/homebrewery/phb_style/phb.less | 4 +- .../snippets/brew/classTable.snippet.js | 2 + 5 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 shared/homebrewery/phb_style/phb.blocks.less create mode 100644 shared/homebrewery/snippets/brew/classTable.snippet.js diff --git a/shared/homebrewery/brewEditor/brewEditor.jsx b/shared/homebrewery/brewEditor/brewEditor.jsx index ab8a81a..6d142b1 100644 --- a/shared/homebrewery/brewEditor/brewEditor.jsx +++ b/shared/homebrewery/brewEditor/brewEditor.jsx @@ -3,9 +3,7 @@ const _ = require('lodash'); const cx = require('classnames'); const CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx'); -const SnippetBar = require('./snippetbar/snippetbar.jsx'); const MetadataEditor = require('./metadataEditor/metadataEditor.jsx'); - const Menubar = require('./menubar/menubar.jsx'); const splice = function(str, index, inject){ @@ -152,13 +150,6 @@ const BrewEditor = React.createClass({ render : function(){ this.highlightPageLines(); return
- {/* - - */} {}, }; }, + + //TODO: remove + renderDevGroup : function(){ + const Snippets = require('homebrewery/snippets/brew'); + + const snippets = _.map(Snippets, (gen, name)=>{ + return { + name, + gen, + icon : 'fa-question' + } + }) + + return + }, + renderSnippets : function(){ if(this.props.view == 'meta') return ; @@ -21,10 +43,12 @@ const Menubar = React.createClass({ if(this.props.view == 'code') mapping = SnippetMap.brew; if(this.props.view == 'style') mapping = SnippetMap.style; - const groups = _.map(mapping, (group)=>{ + let groups = _.map(mapping, (group)=>{ return }); + groups = groups.concat(this.renderDevGroup()); + return
{groups}
}, render: function(){ diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less new file mode 100644 index 0000000..58bf366 --- /dev/null +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -0,0 +1,44 @@ + +.spell{ + ul:first-of-type{ + margin-top : -0.5em; + margin-bottom : 0.5em; + padding-left : 1em; + text-indent : -1em; + list-style-type : none; + &+p{ + text-indent : 0em; + } + } +} + +.monster{ + +} + + + + +.frame{ + background-color : white; + border : initial; + border-style : solid; + border-image-outset : 25px 17px; + border-image-repeat : round; + border-image-slice : 150 200 150 200; + border-image-source : @frameBorder; + border-image-width : 47px; + margin-top : 30px; + margin-bottom : 37px; + box-sizing: border-box; +} + +.wide{ + column-span : all; + -webkit-column-span : all; + -moz-column-span : all; +} + +.2column, .2col{ + +} \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index 00c5515..1ab216b 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -12,6 +12,7 @@ @import './phb.fonts.less'; @import './phb.colors.less'; @import './phb.img.less'; + @import './phb.blocks.less'; @page { margin: 0; } @@ -387,11 +388,12 @@ //***************************** // * WIDE // *****************************/ + /* .wide{ column-span : all; -webkit-column-span : all; -moz-column-span : all; - } + }*/ //***************************** // * CLASS TABLE // *****************************/ diff --git a/shared/homebrewery/snippets/brew/classTable.snippet.js b/shared/homebrewery/snippets/brew/classTable.snippet.js new file mode 100644 index 0000000..e1f9c63 --- /dev/null +++ b/shared/homebrewery/snippets/brew/classTable.snippet.js @@ -0,0 +1,2 @@ +const _ = require('lodash'); +const Data = require('./random.data.js'); \ No newline at end of file From ef0265f4faa8c8d1cff85c4b18d27c1687af703b Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Feb 2017 13:03:12 -0500 Subject: [PATCH 04/21] moving old snippets into the depricated folder --- .../snippets_old/classfeature.gen.js | 42 +++ .../depricated/snippets_old/classtable.gen.js | 114 ++++++++ .../depricated/snippets_old/coverpage.gen.js | 117 ++++++++ .../depricated/snippets_old/fullclass.gen.js | 43 +++ shared/depricated/snippets_old/magic.gen.js | 91 ++++++ .../snippets_old/monsterblock.gen.js | 196 +++++++++++++ shared/depricated/snippets_old/snippets.js | 267 ++++++++++++++++++ .../snippets_old/tableOfContents.gen.js | 72 +++++ 8 files changed, 942 insertions(+) create mode 100644 shared/depricated/snippets_old/classfeature.gen.js create mode 100644 shared/depricated/snippets_old/classtable.gen.js create mode 100644 shared/depricated/snippets_old/coverpage.gen.js create mode 100644 shared/depricated/snippets_old/fullclass.gen.js create mode 100644 shared/depricated/snippets_old/magic.gen.js create mode 100644 shared/depricated/snippets_old/monsterblock.gen.js create mode 100644 shared/depricated/snippets_old/snippets.js create mode 100644 shared/depricated/snippets_old/tableOfContents.gen.js diff --git a/shared/depricated/snippets_old/classfeature.gen.js b/shared/depricated/snippets_old/classfeature.gen.js new file mode 100644 index 0000000..2ca3abc --- /dev/null +++ b/shared/depricated/snippets_old/classfeature.gen.js @@ -0,0 +1,42 @@ +var _ = require('lodash'); + +module.exports = function(classname){ + + classname = classname || _.sample(['archivist', 'fancyman', 'linguist', 'fletcher', + 'notary', 'berserker-typist', 'fishmongerer', 'manicurist', 'haberdasher', 'concierge']) + + classname = classname.toLowerCase(); + + var hitDie = _.sample([4, 6, 8, 10, 12]); + + var abilityList = ["Strength", "Dexerity", "Constitution", "Wisdom", "Charisma", "Intelligence"]; + var skillList = ["Acrobatics ", "Animal Handling", "Arcana", "Athletics", "Deception", "History", "Insight", "Intimidation", "Investigation", "Medicine", "Nature", "Perception", "Performance", "Persuasion", "Religion", "Sleight of Hand", "Stealth", "Survival"]; + + + return [ + "## Class Features", + "As a " + classname + ", you gain the following class features", + "#### Hit Points", + "___", + "- **Hit Dice:** 1d" + hitDie + " per " + classname + " level", + "- **Hit Points at 1st Level:** " + hitDie + " + your Constitution modifier", + "- **Hit Points at Higher Levels:** 1d" + hitDie + " (or " + (hitDie/2 + 1) + ") + your Constitution modifier per " + classname + " level after 1st", + "", + "#### Proficiencies", + "___", + "- **Armor:** " + (_.sampleSize(["Light armor", "Medium armor", "Heavy armor", "Shields"], _.random(0,3)).join(', ') || "None"), + "- **Weapons:** " + (_.sampleSize(["Squeegee", "Rubber Chicken", "Simple weapons", "Martial weapons"], _.random(0,2)).join(', ') || "None"), + "- **Tools:** " + (_.sampleSize(["Artian's tools", "one musical instrument", "Thieve's tools"], _.random(0,2)).join(', ') || "None"), + "", + "___", + "- **Saving Throws:** " + (_.sampleSize(abilityList, 2).join(', ')), + "- **Skills:** Choose two from " + (_.sampleSize(skillList, _.random(4, 6)).join(', ')), + "", + "#### Equipment", + "You start with the following equipment, in addition to the equipment granted by your background:", + "- *(a)* a martial weapon and a shield or *(b)* two martial weapons", + "- *(a)* five javelins or *(b)* any simple melee weapon", + "- " + (_.sample(["10 lint fluffs", "1 button", "a cherished lost sock"])), + "\n\n\n" + ].join('\n'); +} diff --git a/shared/depricated/snippets_old/classtable.gen.js b/shared/depricated/snippets_old/classtable.gen.js new file mode 100644 index 0000000..649d85b --- /dev/null +++ b/shared/depricated/snippets_old/classtable.gen.js @@ -0,0 +1,114 @@ +var _ = require('lodash'); + +var features = [ + "Astrological Botany", + "Astrological Chemistry", + "Biochemical Sorcery", + "Civil Alchemy", + "Consecrated Biochemistry", + "Demonic Anthropology", + "Divinatory Mineralogy", + "Genetic Banishing", + "Hermetic Geography", + "Immunological Incantations", + "Nuclear Illusionism", + "Ritual Astronomy", + "Seismological Divination", + "Spiritual Biochemistry", + "Statistical Occultism", + "Police Necromancer", + "Sixgun Poisoner", + "Pharmaceutical Gunslinger", + "Infernal Banker", + "Spell Analyst", + "Gunslinger Corruptor", + "Torque Interfacer", + "Exo Interfacer", + "Gunpowder Torturer", + "Orbital Gravedigger", + "Phased Linguist", + "Mathematical Pharmacist", + "Plasma Outlaw", + "Malefic Chemist", + "Police Cultist" +]; + +var classnames = ['Archivist', 'Fancyman', 'Linguist', 'Fletcher', + 'Notary', 'Berserker-Typist', 'Fishmongerer', 'Manicurist', 'Haberdasher', 'Concierge']; + +var levels = ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", "20th"] + +var profBonus = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6]; + +var getFeature = (level)=>{ + var res = [] + if(_.includes([4,6,8,12,14,16,19], level+1)){ + res = ["Ability Score Improvement"] + } + res = _.union(res, _.sampleSize(features, _.sample([0,1,1,1,1,1]))); + if(!res.length) return "─"; + return res.join(', '); +} + +module.exports = { + full : function(){ + var classname = _.sample(classnames) + + var maxes = [4,3,3,3,3,2,2,1,1] + var drawSlots = function(Slots){ + var slots = Number(Slots); + return _.times(9, function(i){ + var max = maxes[i]; + if(slots < 1) return "—"; + var res = _.min([max, slots]); + slots -= res; + return res; + }).join(' | ') + } + + + var cantrips = 3; + var spells = 1; + var slots = 2; + return "
\n##### The " + classname + "\n" + + "| Level | Proficiency Bonus | Features | Cantrips Known | Spells Known | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n"+ + "|:---:|:---:|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n" + + _.map(levels, function(levelName, level){ + var res = [ + levelName, + "+" + profBonus[level], + getFeature(level), + cantrips, + spells, + drawSlots(slots) + ].join(' | '); + + cantrips += _.random(0,1); + spells += _.random(0,1); + slots += _.random(0,2); + + return "| " + res + " |"; + }).join('\n') +'\n
\n\n'; + }, + + half : function(){ + var classname = _.sample(classnames) + + var featureScore = 1 + return "
\n##### The " + classname + "\n" + + "| Level | Proficiency Bonus | Features | " + _.sample(features) + "|\n" + + "|:---:|:---:|:---|:---:|\n" + + _.map(levels, function(levelName, level){ + var res = [ + levelName, + "+" + profBonus[level], + getFeature(level), + "+" + featureScore + ].join(' | '); + + featureScore += _.random(0,1); + + return "| " + res + " |"; + }).join('\n') +'\n
\n\n'; + } +}; \ No newline at end of file diff --git a/shared/depricated/snippets_old/coverpage.gen.js b/shared/depricated/snippets_old/coverpage.gen.js new file mode 100644 index 0000000..d4b69d6 --- /dev/null +++ b/shared/depricated/snippets_old/coverpage.gen.js @@ -0,0 +1,117 @@ +var _ = require('lodash'); + +var titles = [ + "The Burning Gallows", + "The Ring of Nenlast", + "Below the Blind Tavern", + "Below the Hungering River", + "Before Bahamut's Land", + "The Cruel Grave from Within", + "The Strength of Trade Road", + "Through The Raven Queen's Worlds", + "Within the Settlement", + "The Crown from Within", + "The Merchant Within the Battlefield", + "Ioun's Fading Traveler", + "The Legion Ingredient", + "The Explorer Lure", + "Before the Charming Badlands", + "The Living Dead Above the Fearful Cage", + "Vecna's Hidden Sage", + "Bahamut's Demonspawn", + "Across Gruumsh's Elemental Chaos", + "The Blade of Orcus", + "Beyond Revenge", + "Brain of Insanity", + "Breed Battle!, A New Beginning", + "Evil Lake, A New Beginning", + "Invasion of the Gigantic Cat, Part II", + "Kraken War 2020", + "The Body Whisperers", + "The Diabolical Tales of the Ape-Women", + "The Doctor Immortal", + "The Doctor from Heaven", + "The Graveyard", + "Azure Core", + "Core Battle", + "Core of Heaven: The Guardian of Amazement", + "Deadly Amazement III", + "Dry Chaos IX", + "Gate Thunder", + "Guardian: Skies of the Dark Wizard", + "Lute of Eternity", + "Mercury's Planet: Brave Evolution", + "Ruby of Atlantis: The Quake of Peace", + "Sky of Zelda: The Thunder of Force", + "Vyse's Skies", + "White Greatness III", + "Yellow Divinity", + "Zidane's Ghost" +]; + +var subtitles = [ + "In an ominous universe, a botanist opposes terrorism.", + "In a demon-haunted city, in an age of lies and hate, a physicist tries to find an ancient treasure and battles a mob of aliens.", + "In a land of corruption, two cyberneticists and a dungeon delver search for freedom.", + "In an evil empire of horror, two rangers battle the forces of hell.", + "In a lost city, in an age of sorcery, a librarian quests for revenge.", + "In a universe of illusions and danger, three time travellers and an adventurer search for justice.", + "In a forgotten universe of barbarism, in an era of terror and mysticism, a virtual reality programmer and a spy try to find vengance and battle crime.", + "In a universe of demons, in an era of insanity and ghosts, three bodyguards and a bodyguard try to find vengance.", + "In a kingdom of corruption and battle, seven artificial intelligences try to save the last living fertile woman.", + "In a universe of virutal reality and agony, in an age of ghosts and ghosts, a fortune-teller and a wanderer try to avert the apocalypse.", + "In a crime-infested kingdom, three martial artists quest for the truth and oppose evil.", + "In a terrifying universe of lost souls, in an era of lost souls, eight dancers fight evil.", + "In a galaxy of confusion and insanity, three martial artists and a duke battle a mob of psychics.", + "In an amazing kingdom, a wizard and a secretary hope to prevent the destruction of mankind.", + "In a kingdom of deception, a reporter searches for fame.", + "In a hellish empire, a swordswoman and a duke try to find the ultimate weapon and battle a conspiracy.", + "In an evil galaxy of illusion, in a time of technology and misery, seven psychiatrists battle crime.", + "In a dark city of confusion, three swordswomen and a singer battle lawlessness.", + "In an ominous empire, in an age of hate, two philosophers and a student try to find justice and battle a mob of mages intent on stealing the souls of the innocent.", + "In a kingdom of panic, six adventurers oppose lawlessness.", + "In a land of dreams and hopelessness, three hackers and a cyborg search for justice.", + "On a planet of mysticism, three travelers and a fire fighter quest for the ultimate weapon and oppose evil.", + "In a wicked universe, five seers fight lawlessness.", + "In a kingdom of death, in an era of illusion and blood, four colonists search for fame.", + "In an amazing kingdom, in an age of sorcery and lost souls, eight space pirates quest for freedom.", + "In a cursed empire, five inventors oppose terrorism.", + "On a crime-ridden planet of conspiracy, a watchman and an artificial intelligence try to find love and oppose lawlessness.", + "In a forgotten land, a reporter and a spy try to stop the apocalypse.", + "In a forbidden land of prophecy, a scientist and an archivist oppose a cabal of barbarians intent on stealing the souls of the innocent.", + "On an infernal world of illusion, a grave robber and a watchman try to find revenge and combat a syndicate of mages intent on stealing the source of all magic.", + "In a galaxy of dark magic, four fighters seek freedom.", + "In an empire of deception, six tomb-robbers quest for the ultimate weapon and combat an army of raiders.", + "In a kingdom of corruption and lost souls, in an age of panic, eight planetologists oppose evil.", + "In a galaxy of misery and hopelessness, in a time of agony and pain, five planetologists search for vengance.", + "In a universe of technology and insanity, in a time of sorcery, a computer techician quests for hope.", + "On a planet of dark magic and barbarism, in an age of horror and blasphemy, seven librarians search for fame.", + "In an empire of dark magic, in a time of blood and illusions, four monks try to find the ultimate weapon and combat terrorism.", + "In a forgotten empire of dark magic, six kings try to prevent the destruction of mankind.", + "In a galaxy of dark magic and horror, in an age of hopelessness, four marines and an outlaw combat evil.", + "In a mysterious city of illusion, in an age of computerization, a witch-hunter tries to find the ultimate weapon and opposes an evil corporation.", + "In a damned kingdom of technology, a virtual reality programmer and a fighter seek fame.", + "In a hellish kingdom, in an age of blasphemy and blasphemy, an astrologer searches for fame.", + "In a damned world of devils, an alien and a ranger quest for love and oppose a syndicate of demons.", + "In a cursed galaxy, in a time of pain, seven librarians hope to avert the apocalypse.", + "In a crime-infested galaxy, in an era of hopelessness and panic, three champions and a grave robber try to solve the ultimate crime." +]; + + +module.exports = () => { + return ` + +
+ +# ${_.sample(titles)} + +
+
+##### ${_.sample(subtitles)} +
+ +\\page` +} \ No newline at end of file diff --git a/shared/depricated/snippets_old/fullclass.gen.js b/shared/depricated/snippets_old/fullclass.gen.js new file mode 100644 index 0000000..9a2da20 --- /dev/null +++ b/shared/depricated/snippets_old/fullclass.gen.js @@ -0,0 +1,43 @@ +var _ = require('lodash'); + +var ClassFeatureGen = require('./classfeature.gen.js'); + +var ClassTableGen = require('./classtable.gen.js'); + +module.exports = function(){ + + var classname = _.sample(['Archivist', 'Fancyman', 'Linguist', 'Fletcher', + 'Notary', 'Berserker-Typist', 'Fishmongerer', 'Manicurist', 'Haberdasher', 'Concierge']) + + + var image = _.sample(_.map([ + "http://orig01.deviantart.net/4682/f/2007/099/f/c/bard_stick_figure_by_wrpigeek.png", + "http://img07.deviantart.net/a3c9/i/2007/099/3/a/archer_stick_figure_by_wrpigeek.png", + "http://pre04.deviantart.net/d596/th/pre/f/2007/099/5/2/adventurer_stick_figure_by_wrpigeek.png", + "http://img13.deviantart.net/d501/i/2007/099/d/4/black_mage_stick_figure_by_wrpigeek.png", + "http://img09.deviantart.net/5cf3/i/2007/099/d/d/dark_knight_stick_figure_by_wrpigeek.png", + "http://pre01.deviantart.net/7a34/th/pre/f/2007/099/6/3/monk_stick_figure_by_wrpigeek.png", + "http://img11.deviantart.net/5dcc/i/2007/099/d/1/mystic_knight_stick_figure_by_wrpigeek.png", + "http://pre08.deviantart.net/ad45/th/pre/f/2007/099/a/0/thief_stick_figure_by_wrpigeek.png", + ], function(url){ + return "" + })) + + + return [ + image, + "", + "```", + "```", + "
\n\n", + "## " + classname, + "Cool intro stuff will go here", + + "\\page", + ClassTableGen(classname), + ClassFeatureGen(classname), + + + + ].join('\n') + '\n\n\n'; +}; \ No newline at end of file diff --git a/shared/depricated/snippets_old/magic.gen.js b/shared/depricated/snippets_old/magic.gen.js new file mode 100644 index 0000000..82469cd --- /dev/null +++ b/shared/depricated/snippets_old/magic.gen.js @@ -0,0 +1,91 @@ +var _ = require('lodash'); + +var spellNames = [ + "Astral Rite of Acne", + "Create Acne", + "Cursed Ramen Erruption", + "Dark Chant of the Dentists", + "Erruption of Immaturity", + "Flaming Disc of Inconvenience", + "Heal Bad Hygene", + "Heavenly Transfiguration of the Cream Devil", + "Hellish Cage of Mucus", + "Irritate Peanut Butter Fairy", + "Luminous Erruption of Tea", + "Mystic Spell of the Poser", + "Sorcerous Enchantment of the Chimneysweep", + "Steak Sauce Ray", + "Talk to Groupie", + "Astonishing Chant of Chocolate", + "Astounding Pasta Puddle", + "Ball of Annoyance", + "Cage of Yarn", + "Control Noodles Elemental", + "Create Nervousness", + "Cure Baldness", + "Cursed Ritual of Bad Hair", + "Dispell Piles in Dentist", + "Eliminate Florists", + "Illusionary Transfiguration of the Babysitter", + "Necromantic Armor of Salad Dressing", + "Occult Transfiguration of Foot Fetish", + "Protection from Mucus Giant", + "Tinsel Blast", + "Alchemical Evocation of the Goths", + "Call Fangirl", + "Divine Spell of Crossdressing", + "Dominate Ramen Giant", + "Eliminate Vindictiveness in Gym Teacher", + "Extra-Planar Spell of Irritation", + "Induce Whining in Babysitter", + "Invoke Complaining", + "Magical Enchantment of Arrogance", + "Occult Globe of Salad Dressing", + "Overwhelming Enchantment of the Chocolate Fairy", + "Sorcerous Dandruff Globe", + "Spiritual Invocation of the Costumers", + "Ultimate Rite of the Confetti Angel", + "Ultimate Ritual of Mouthwash", +]; + +module.exports = { + + spellList : function(){ + var levels = ['Cantrips (0 Level)', '2nd Level', '3rd Level', '4th Level', '5th Level', '6th Level', '7th Level', '8th Level', '9th Level']; + + var content = _.map(levels, (level)=>{ + var spells = _.map(_.sampleSize(spellNames, _.random(5, 15)), (spell)=>{ + return `- ${spell}`; + }).join('\n'); + return `##### ${level} \n${spells} \n`; + }).join('\n'); + + return `
\n${content}\n
`; + }, + + spell : function(){ + var level = ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th"]; + var spellSchools = ["abjuration", "conjuration", "divination", "enchantment", "evocation", "illusion", "necromancy", "transmutation"]; + + + var components = _.sampleSize(["V", "S", "M"], _.random(1,3)).join(', '); + if(components.indexOf("M") !== -1){ + components += " (" + _.sampleSize(['a small doll', 'a crushed button worth at least 1cp', 'discarded gum wrapper'], _.random(1,3)).join(', ') + ")" + } + + return [ + "#### " + _.sample(spellNames), + "*" + _.sample(level) + "-level " + _.sample(spellSchools) + "*", + "___", + "- **Casting Time:** 1 action", + "- **Range:** " + _.sample(["Self", "Touch", "30 feet", "60 feet"]), + "- **Components:** " + components, + "- **Duration:** " + _.sample(["Until dispelled", "1 round", "Instantaneous", "Concentration, up to 10 minutes", "1 hour"]), + "", + "A flame, equivalent in brightness to a torch, springs from from an object that you touch. ", + "The effect look like a regular flame, but it creates no heat and doesn't use oxygen. ", + "A *continual flame* can be covered or hidden but not smothered or quenched.", + "\n\n\n" + ].join('\n'); + } +} \ No newline at end of file diff --git a/shared/depricated/snippets_old/monsterblock.gen.js b/shared/depricated/snippets_old/monsterblock.gen.js new file mode 100644 index 0000000..abbcd6c --- /dev/null +++ b/shared/depricated/snippets_old/monsterblock.gen.js @@ -0,0 +1,196 @@ +var _ = require('lodash'); + +var genList = function(list, max){ + return _.sampleSize(list, _.random(0,max)).join(', ') || "None"; +} + +var getMonsterName = function(){ + return _.sample([ + "All-devouring Baseball Imp", + "All-devouring Gumdrop Wraith", + "Chocolate Hydra", + "Devouring Peacock", + "Economy-sized Colossus of the Lemonade Stand", + "Ghost Pigeon", + "Gibbering Duck", + "Sparklemuffin Peacock Spider", + "Gum Elemental", + "Illiterate Construct of the Candy Store", + "Ineffable Chihuahua", + "Irritating Death Hamster", + "Irritating Gold Mouse", + "Juggernaut Snail", + "Juggernaut of the Sock Drawer", + "Koala of the Cosmos", + "Mad Koala of the West", + "Milk Djinni of the Lemonade Stand", + "Mind Ferret", + "Mystic Salt Spider", + "Necrotic Halitosis Angel", + "Pinstriped Famine Sheep", + "Ritalin Leech", + "Shocker Kangaroo", + "Stellar Tennis Juggernaut", + "Wailing Quail of the Sun", + "Angel Pigeon", + "Anime Sphinx", + "Bored Avalanche Sheep of the Wasteland", + "Devouring Nougat Sphinx of the Sock Drawer", + "Djinni of the Footlocker", + "Ectoplasmic Jazz Devil", + "Flatuent Angel", + "Gelatinous Duck of the Dream-Lands", + "Gelatinous Mouse", + "Golem of the Footlocker", + "Lich Wombat", + "Mechanical Sloth of the Past", + "Milkshake Succubus", + "Puffy Bone Peacock of the East", + "Rainbow Manatee", + "Rune Parrot", + "Sand Cow", + "Sinister Vanilla Dragon", + "Snail of the North", + "Spider of the Sewer", + "Stellar Sawdust Leech", + "Storm Anteater of Hell", + "Stupid Spirit of the Brewery", + "Time Kangaroo", + "Tomb Poodle", + ]); +} + +var getType = function(){ + return _.sample(['Tiny', 'Small', 'Medium', 'Large', 'Gargantuan', 'Stupidly vast']) + " " + _.sample(['beast', 'fiend', 'annoyance', 'guy', 'cutie']) +} + +var getAlignment = function(){ + return _.sample([ + "annoying evil", + "chaotic gossipy", + "chaotic sloppy", + "depressed neutral", + "lawful bogus", + "lawful coy", + "manic-depressive evil", + "narrow-minded neutral", + "neutral annoying", + "neutral ignorant", + "oedpipal neutral", + "silly neutral", + "unoriginal neutral", + "weird neutral", + "wordy evil", + "unaligned" + ]); +}; + +var getStats = function(){ + return '>|' + _.times(6, function(){ + var num = _.random(1,20); + var mod = Math.ceil(num/2 - 5) + return num + " (" + (mod >= 0 ? '+'+mod : mod ) + ")" + }).join('|') + '|'; +} + +var genAbilities = function(){ + return _.sample([ + "> ***Pack Tactics.*** These guys work together. Like super well, you don't even know.", + "> ***False Appearance. *** While the armor reamin motionless, it is indistinguishable from a normal suit of armor.", + ]); +} + +var genAction = function(){ + var name = _.sample([ + "Abdominal Drop", + "Airplane Hammer", + "Atomic Death Throw", + "Bulldog Rake", + "Corkscrew Strike", + "Crossed Splash", + "Crossface Suplex", + "DDT Powerbomb", + "Dual Cobra Wristlock", + "Dual Throw", + "Elbow Hold", + "Gory Body Sweep", + "Heel Jawbreaker", + "Jumping Driver", + "Open Chin Choke", + "Scorpion Flurry", + "Somersault Stump Fists", + "Suffering Wringer", + "Super Hip Submission", + "Super Spin", + "Team Elbow", + "Team Foot", + "Tilt-a-whirl Chin Sleeper", + "Tilt-a-whirl Eye Takedown", + "Turnbuckle Roll" + ]) + + return "> ***" + name + ".*** *Melee Weapon Attack:* +4 to hit, reach 5ft., one target. *Hit* 5 (1d6 + 2) "; +} + + +module.exports = { + + full : function(){ + return [ + "___", + "___", + "> ## " + getMonsterName(), + ">*" + getType() + ", " + getAlignment() + "*", + "> ___", + "> - **Armor Class** " + _.random(10,20), + "> - **Hit Points** " + _.random(1, 150) + "(1d4 + 5)", + "> - **Speed** " + _.random(0,50) + "ft.", + ">___", + ">|STR|DEX|CON|INT|WIS|CHA|", + ">|:---:|:---:|:---:|:---:|:---:|:---:|", + getStats(), + ">___", + "> - **Condition Immunities** " + genList(["groggy", "swagged", "weak-kneed", "buzzed", "groovy", "melancholy", "drunk"], 3), + "> - **Senses** passive Perception " + _.random(3, 20), + "> - **Languages** " + genList(["Common", "Pottymouth", "Gibberish", "Latin", "Jive"], 2), + "> - **Challenge** " + _.random(0, 15) + " (" + _.random(10,10000)+ " XP)", + "> ___", + _.times(_.random(3,6), function(){ + return genAbilities() + }).join('\n>\n'), + "> ### Actions", + _.times(_.random(4,6), function(){ + return genAction() + }).join('\n>\n'), + ].join('\n') + '\n\n\n'; + }, + + half : function(){ + return [ + "___", + "> ## " + getMonsterName(), + ">*" + getType() + ", " + getAlignment() + "*", + "> ___", + "> - **Armor Class** " + _.random(10,20), + "> - **Hit Points** " + _.random(1, 150) + "(1d4 + 5)", + "> - **Speed** " + _.random(0,50) + "ft.", + ">___", + ">|STR|DEX|CON|INT|WIS|CHA|", + ">|:---:|:---:|:---:|:---:|:---:|:---:|", + getStats(), + ">___", + "> - **Condition Immunities** " + genList(["groggy", "swagged", "weak-kneed", "buzzed", "groovy", "melancholy", "drunk"], 3), + "> - **Senses** passive Perception " + _.random(3, 20), + "> - **Languages** " + genList(["Common", "Pottymouth", "Gibberish", "Latin", "Jive"], 2), + "> - **Challenge** " + _.random(0, 15) + " (" + _.random(10,10000)+ " XP)", + "> ___", + _.times(_.random(0,2), function(){ + return genAbilities() + }).join('\n>\n'), + "> ### Actions", + _.times(_.random(1,2), function(){ + return genAction() + }).join('\n>\n'), + ].join('\n') + '\n\n\n'; + } +} diff --git a/shared/depricated/snippets_old/snippets.js b/shared/depricated/snippets_old/snippets.js new file mode 100644 index 0000000..bcb1df9 --- /dev/null +++ b/shared/depricated/snippets_old/snippets.js @@ -0,0 +1,267 @@ +var MagicGen = require('./magic.gen.js'); +var ClassTableGen = require('./classtable.gen.js'); +var MonsterBlockGen = require('./monsterblock.gen.js'); +var ClassFeatureGen = require('./classfeature.gen.js'); +var FullClassGen = require('./fullclass.gen.js'); +var CoverPageGen = require('./coverpage.gen.js'); +var TableOfContentsGen = require('./tableOfContents.gen.js'); + + +module.exports = [ + + { + groupName : 'Editor', + icon : 'fa-pencil', + snippets : [ + { + name : "Column Break", + icon : 'fa-columns', + gen : "```\n```\n\n" + }, + { + name : "New Page", + icon : 'fa-file-text', + gen : "\\page\n\n" + }, + { + name : "Vertical Spacing", + icon : 'fa-arrows-v', + gen : "
\n\n" + }, + { + name : "Wide Block", + icon : 'fa-arrows-h', + gen : "
\nEverything in here will be extra wide. Tables, text, everything! Beware though, CSS columns can behave a bit weird sometimes.\n
\n" + }, + { + name : "Image", + icon : 'fa-image', + gen : [ + "", + "Credit: Kyounghwan Kim" + ].join('\n') + }, + { + name : "Background Image", + icon : 'fa-tree', + gen : [ + "" + ].join('\n') + }, + + { + name : "Page Number", + icon : 'fa-bookmark', + gen : "
1
\n
PART 1 | FANCINESS
\n\n" + }, + + { + name : "Auto-incrementing Page Number", + icon : 'fa-sort-numeric-asc', + gen : "
\n" + }, + + { + name : "Link to page", + icon : 'fa-link', + gen : "[Click here](#p3) to go to page 3\n" + }, + + { + name : "Table of Contents", + icon : 'fa-book', + gen : TableOfContentsGen + }, + + + ] + }, + + + /************************* PHB ********************/ + + { + groupName : 'PHB', + icon : 'fa-book', + snippets : [ + { + name : 'Spell', + icon : 'fa-magic', + gen : MagicGen.spell, + }, + { + name : 'Spell List', + icon : 'fa-list', + gen : MagicGen.spellList, + }, + { + name : 'Class Feature', + icon : 'fa-trophy', + gen : ClassFeatureGen, + }, + { + name : 'Note', + icon : 'fa-sticky-note', + gen : function(){ + return [ + "> ##### Time to Drop Knowledge", + "> Use notes to point out some interesting information. ", + "> ", + "> **Tables and lists** both work within a note." + ].join('\n'); + }, + }, + { + name : 'Descriptive Text Box', + icon : 'fa-sticky-note-o', + gen : function(){ + return [ + "
", + "##### Time to Drop Knowledge", + "Use notes to point out some interesting information. ", + "", + "**Tables and lists** both work within a note.", + "
" + ].join('\n'); + }, + }, + { + name : 'Monster Stat Block', + icon : 'fa-bug', + gen : MonsterBlockGen.half, + }, + { + name : 'Wide Monster Stat Block', + icon : 'fa-paw', + gen : MonsterBlockGen.full, + }, + { + name : 'Cover Page', + icon : 'fa-file-word-o', + gen : CoverPageGen, + }, + ] + }, + + + + /********************* TABLES *********************/ + + { + groupName : 'Tables', + icon : 'fa-table', + snippets : [ + { + name : "Class Table", + icon : 'fa-table', + gen : ClassTableGen.full, + }, + { + name : "Half Class Table", + icon : 'fa-list-alt', + gen : ClassTableGen.half, + }, + { + name : 'Table', + icon : 'fa-th-list', + gen : function(){ + return [ + "##### Cookie Tastiness", + "| Tastiness | Cookie Type |", + "|:----:|:-------------|", + "| -5 | Raisin |", + "| 8th | Chocolate Chip |", + "| 11th | 2 or lower |", + "| 14th | 3 or lower |", + "| 17th | 4 or lower |\n\n", + ].join('\n'); + }, + }, + { + name : 'Wide Table', + icon : 'fa-list', + gen : function(){ + return [ + "
", + "##### Cookie Tastiness", + "| Tastiness | Cookie Type |", + "|:----:|:-------------|", + "| -5 | Raisin |", + "| 8th | Chocolate Chip |", + "| 11th | 2 or lower |", + "| 14th | 3 or lower |", + "| 17th | 4 or lower |", + "
\n\n" + ].join('\n'); + }, + }, + { + name : 'Split Table', + icon : 'fa-th-large', + gen : function(){ + return [ + "
", + "| d10 | Damage Type |", + "|:---:|:------------|", + "| 1 | Acid |", + "| 2 | Cold |", + "| 3 | Fire |", + "| 4 | Force |", + "| 5 | Lightning |", + "", + "```", + "```", + "", + "| d10 | Damage Type |", + "|:---:|:------------|", + "| 6 | Necrotic |", + "| 7 | Poison |", + "| 8 | Psychic |", + "| 9 | Radiant |", + "| 10 | Thunder |", + "
\n\n", + ].join('\n'); + }, + } + ] + }, + + + + + /**************** PRINT *************/ + + { + groupName : 'Print', + icon : 'fa-print', + snippets : [ + { + name : "A4 PageSize", + icon : 'fa-file-o', + gen : ['' + ].join('\n') + }, + { + name : "Ink Friendly", + icon : 'fa-tint', + gen : ['', + '' + ].join('\n') + }, + ] + }, + +] diff --git a/shared/depricated/snippets_old/tableOfContents.gen.js b/shared/depricated/snippets_old/tableOfContents.gen.js new file mode 100644 index 0000000..448b2f4 --- /dev/null +++ b/shared/depricated/snippets_old/tableOfContents.gen.js @@ -0,0 +1,72 @@ +const _ = require('lodash'); + +const getTOC = (pages) => { + const add1 = (title, page)=>{ + res.push({ + title : title, + page : page + 1, + children : [] + }); + } + const add2 = (title, page)=>{ + if(!_.last(res)) add1('', page); + _.last(res).children.push({ + title : title, + page : page + 1, + children : [] + }); + } + const add3 = (title, page)=>{ + if(!_.last(res)) add1('', page); + if(!_.last(_.last(res).children)) add2('', page); + _.last(_.last(res).children).children.push({ + title : title, + page : page + 1, + children : [] + }); + } + + let res = []; + _.each(pages, (page, pageNum)=>{ + const lines = page.split('\n'); + _.each(lines, (line) => { + if(_.startsWith(line, '# ')){ + const title = line.replace('# ', ''); + add1(title, pageNum) + } + if(_.startsWith(line, '## ')){ + const title = line.replace('## ', ''); + add2(title, pageNum); + } + if(_.startsWith(line, '### ')){ + const title = line.replace('### ', ''); + add3(title, pageNum); + } + }) + }); + return res; +} + +module.exports = function(brew){ + const pages = brew.split('\\page'); + const TOC = getTOC(pages); + const markdown = _.reduce(TOC, (r, g1, idx1)=>{ + r.push(`- **[${idx1 + 1} ${g1.title}](#p${g1.page})**`) + if(g1.children.length){ + _.each(g1.children, (g2, idx2) => { + r.push(` - [${idx1 + 1}.${idx2 + 1} ${g2.title}](#p${g2.page})`); + if(g2.children.length){ + _.each(g2.children, (g3, idx3) => { + r.push(` - [${idx1 + 1}.${idx2 + 1}.${idx3 + 1} ${g3.title}](#p${g3.page})`); + }); + } + }); + } + return r; + }, []).join('\n'); + + return `
+##### Table Of Contents +${markdown} +
\n`; +} \ No newline at end of file From 234d216d64fbf7ca36f7db63afce2012093bc8f5 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Feb 2017 17:42:21 -0500 Subject: [PATCH 05/21] Adding in notes and adding more to blocks --- package.json | 6 +- scripts/snippet.test.js | 7 +- .../brewEditor/menubar/menubar.jsx | 1 - shared/homebrewery/phb_style/phb.blocks.less | 45 +++++++--- shared/homebrewery/phb_style/phb.colors.less | 17 +++- shared/homebrewery/phb_style/phb.less | 6 +- .../snippets/brew/classTable.snippet.js | 82 ++++++++++++++++++- shared/homebrewery/snippets/brew/index.js | 4 +- .../homebrewery/snippets/brew/note.snippet.js | 22 +++++ .../homebrewery/snippets/brew/random.data.js | 48 ++++++++++- .../snippets/brew/table.snippet.js | 2 +- 11 files changed, 215 insertions(+), 25 deletions(-) create mode 100644 shared/homebrewery/snippets/brew/note.snippet.js diff --git a/package.json b/package.json index 50ffe10..28dcb19 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,13 @@ "build": "node scripts/build.js", "populate": "node scripts/populate.js", - "snippet" : "nodemon scripts/snippet.test.js", - "prod": "set NODE_ENV=production&& npm run build", "postinstall": "npm run build", "start": "node server.js", + + "snippet" : "nodemon scripts/snippet.test.js", + "todo" : "node_modules/.bin/notes -h true -x node_modules/ -x build/", + "test": "mocha tests", "test:dev": "nodemon -x mocha tests || exit 0", "test:markdown": "nodemon -x mocha tests/markdown.test.js || exit 0" diff --git a/scripts/snippet.test.js b/scripts/snippet.test.js index 7cb4bf3..35aa669 100644 --- a/scripts/snippet.test.js +++ b/scripts/snippet.test.js @@ -2,6 +2,7 @@ const snippets = require('../shared/homebrewery/snippets'); console.log(snippets); -console.log(snippets.style.print.a4PageSize()); -console.log(snippets.brew.phb.spell()); -console.log(snippets.brew.phb.table()); \ No newline at end of file +//console.log(snippets.brew.spell()); +//console.log(snippets.brew.table()); + +console.log(snippets.brew.noncasterTable()); \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/menubar/menubar.jsx b/shared/homebrewery/brewEditor/menubar/menubar.jsx index 44d1a43..3191197 100644 --- a/shared/homebrewery/brewEditor/menubar/menubar.jsx +++ b/shared/homebrewery/brewEditor/menubar/menubar.jsx @@ -5,7 +5,6 @@ const cx = require('classnames'); const SnippetMap = require('./snippet.map.js'); const SnippetGroup = require('./snippetGroup/snippetGroup.jsx'); -console.log(SnippetMap); const Menubar = React.createClass({ getDefaultProps: function() { return { diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 58bf366..30ff368 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -11,15 +11,37 @@ } } } - .monster{ - } - - - - +.note{ + .useSansSerif(); + margin-bottom : 1em; + padding : 5px 10px; + background-color : @green; + border-style : solid; + border-width : 11px; + border-image : @noteBorder 11; + border-image-outset : 9px 0px; + box-shadow : 1px 4px 14px #888; + h2,h3,h4{ + .useSansSerif(); + color : black; + } + p, ul{ + font-size : 0.352cm; + line-height : 1.1em; + } + &.alt{ + border-style : solid; + border-width : 7px; + border-image : @descriptiveBorder 12 round; + border-image-outset : 4px; + } +} .frame{ + box-sizing : border-box; + margin-top : 30px; + margin-bottom : 37px; background-color : white; border : initial; border-style : solid; @@ -28,17 +50,18 @@ border-image-slice : 150 200 150 200; border-image-source : @frameBorder; border-image-width : 47px; - margin-top : 30px; - margin-bottom : 37px; - box-sizing: border-box; } - .wide{ column-span : all; -webkit-column-span : all; -moz-column-span : all; } -.2column, .2col{ +.twoCol{ + background-color: red; + column-count : 2; +} +.columnSplit{ + //TODO: make \column trigger this } \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.colors.less b/shared/homebrewery/phb_style/phb.colors.less index 6a28432..e499049 100644 --- a/shared/homebrewery/phb_style/phb.colors.less +++ b/shared/homebrewery/phb_style/phb.colors.less @@ -8,8 +8,6 @@ @monsterStatBackground : #FDF1DC; -@teal : blue; - .colorElements(@color){ table tbody{ @@ -17,8 +15,23 @@ background-color : @color; } } + &.note{ + background-color: @color; + } } +@red : #9c2b1b; +@gold : #c9ad6a; //brown? +@green : #e0e5c1; +@yellow : #faf7ea; //same as background? +@teal : blue; +@blue : blue; + //TODO make a color mixin generator .teal{ .colorElements(@teal); } +.blue{ .colorElements(@blue); } +.green{ .colorElements(@green); } +.yellow{ .colorElements(@yellow); } +.gold{ .colorElements(@gold); } +.red{ .colorElements(@red); } diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index 1ab216b..42fc0ec 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -15,7 +15,7 @@ @import './phb.blocks.less'; - @page { margin: 0; } + @page { margin: 0; } //???? .useColumns(@multiplier : 1){ @@ -171,6 +171,7 @@ //***************************** // * NOTE // *****************************/ + /* blockquote{ .useSansSerif(); box-sizing : border-box; @@ -187,6 +188,7 @@ line-height : 1.1em; } } + */ //If a note starts a column, give it space at the top to render border pre+blockquote, h2+blockquote, h3+blockquote, h4+blockquote, h5+blockquote { margin-top : 13px; @@ -416,6 +418,7 @@ //***************************** // * CLASS TABLE // *****************************/ + /* .descriptive{ display : block-inline; margin-bottom : 1em; @@ -447,6 +450,7 @@ pre+.descriptive{ margin-top : 8px; } + */ //***************************** // * TABLE OF CONTENTS // *****************************/ diff --git a/shared/homebrewery/snippets/brew/classTable.snippet.js b/shared/homebrewery/snippets/brew/classTable.snippet.js index e1f9c63..9e84757 100644 --- a/shared/homebrewery/snippets/brew/classTable.snippet.js +++ b/shared/homebrewery/snippets/brew/classTable.snippet.js @@ -1,2 +1,82 @@ const _ = require('lodash'); -const Data = require('./random.data.js'); \ No newline at end of file +const Data = require('./random.data.js'); + +const getFeature = (level)=>{ + let res = [] + if(_.includes([4,6,8,12,14,16,19], level+1)){ + res = ['Ability Score Improvement'] + } + res = _.union(res, _.sampleSize(Data.abilities, _.sample([0,1,1,1,1,1]))); + if(!res.length) return '─'; + return res.join(', '); +}; + + +module.exports = { + + casterTable : ()=>{ + + let featureScore = 1 + const rows = _.map(Data.levels, (lvlText, level)=>{ + featureScore += _.random(0,1); + return '| ' + [ + lvlText, + '+'+Math.floor(level/4 + 2), + getFeature(level), + '+'+featureScore + ].join(' | ') + ' |'; + }).join('\n'); + + return `{{frame,wide +##### ${Data.rand('classes')} +| Level | Proficiency Bonus | Features | Cantrips Known | Spells Known | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | +|:---:|:---:|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| +${rows} +}}`; + }, + + + halfcasterTable : ()=>{ + let featureScore = 1 + const rows = _.map(Data.levels, (lvlText, level)=>{ + featureScore += _.random(0,1); + return '| ' + [ + lvlText, + '+'+Math.floor(level/4 + 2), + getFeature(level), + '+'+featureScore + ].join(' | ') + ' |'; + }).join('\n'); + + + return `{{frame,wide +##### ${Data.rand('classes')} +| Level | Proficiency Bonus | Features | 1st | 2nd | 3rd | 4th | 5th | +|:---:|:---:|:---|:---:|:---:|:---:|:---:|:---:| +${rows} +}}`; + + }, + + noncasterTable : ()=>{ + let featureScore = 1 + const rows = _.map(Data.levels, (lvlText, level)=>{ + featureScore += _.random(0,1); + return '| ' + [ + lvlText, + '+'+Math.floor(level/4 + 2), + getFeature(level), + '+'+featureScore + ].join(' | ') + ' |'; + }).join('\n'); + + return `{{frame +##### ${Data.rand('classes')} +| Level | Proficiency Bonus | Features | ${Data.rand('abilities')} | +|:---:|:---:|:---|:---:| +${rows} +}}`; + } + + +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/index.js b/shared/homebrewery/snippets/brew/index.js index dab63e4..e8dd3de 100644 --- a/shared/homebrewery/snippets/brew/index.js +++ b/shared/homebrewery/snippets/brew/index.js @@ -2,7 +2,9 @@ const _ = require('lodash'); module.exports = _.merge( require('./spell.snippet.js'), - require('./table.snippet.js') + require('./table.snippet.js'), + require('./classTable.snippet.js'), + require('./note.snippet.js') //wide diff --git a/shared/homebrewery/snippets/brew/note.snippet.js b/shared/homebrewery/snippets/brew/note.snippet.js new file mode 100644 index 0000000..18c9233 --- /dev/null +++ b/shared/homebrewery/snippets/brew/note.snippet.js @@ -0,0 +1,22 @@ +const _ = require('lodash'); +const Data = require('./random.data.js'); + + +module.exports = { + note : ()=>{ + return `{{note +##### ${Data.rand('abilities')} +${Data.rand('sentences', 6, 4).join(' ')} +}}` + + }, + + altnote : ()=>{ + return `{{note,alt +##### ${Data.rand('abilities')} +${Data.rand('sentences', 6, 4).join(' ')} +}}` + } + + +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/random.data.js b/shared/homebrewery/snippets/brew/random.data.js index c194bd2..5c3284a 100644 --- a/shared/homebrewery/snippets/brew/random.data.js +++ b/shared/homebrewery/snippets/brew/random.data.js @@ -284,6 +284,39 @@ const Data = { `Yielding Throw of the Mills`, ], + abilities : [ + "Astrological Botany", + "Astrological Chemistry", + "Biochemical Sorcery", + "Civil Alchemy", + "Consecrated Biochemistry", + "Demonic Anthropology", + "Divinatory Mineralogy", + "Genetic Banishing", + "Hermetic Geography", + "Immunological Incantations", + "Nuclear Illusionism", + "Ritual Astronomy", + "Seismological Divination", + "Spiritual Biochemistry", + "Statistical Occultism", + "Police Necromancer", + "Sixgun Poisoner", + "Pharmaceutical Gunslinger", + "Infernal Banker", + "Spell Analyst", + "Gunslinger Corruptor", + "Torque Interfacer", + "Exo Interfacer", + "Gunpowder Torturer", + "Orbital Gravedigger", + "Phased Linguist", + "Mathematical Pharmacist", + "Plasma Outlaw", + "Malefic Chemist", + "Police Cultist" + ], + alignments : [ "Annoying Evil", "Chaotic Gossipy", @@ -309,10 +342,21 @@ const Data = { ], sizes : ['Microscopic', 'Tiny', 'Small', 'Medium', 'Large', 'Gargantuan', 'Stupidly vast'], + levels : ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", "20th"], - - + sentences : [ + `The suspicion arises the narrator of the tale is actually a demon.`, + `There is a predicted hurricane - but it's not what was expected, and this complicates the plans of the protagonist.`, + `The antagonist's believes their life has changed for the strange - this turns out to be this is due to being lied to by others`, + `An accidental cuddle leads to complications.`, + `It's revealed that everything that is happening is all a dream.`, + `There is a sudden hurricane.`, + `The alternate protagonist is revealed to be a different race/species than thought, which suddenly makes what's going on much clearer.`, + `Thanks to alien forces, the characters end up in the earth's past.`, + `Thanks to alien forces, the secondary protagonist ends up in a world after an apocalypse.`, + `Due to a panic attack a character has to get psychological therapy.`, + ] }; diff --git a/shared/homebrewery/snippets/brew/table.snippet.js b/shared/homebrewery/snippets/brew/table.snippet.js index 673d075..00ad1ff 100644 --- a/shared/homebrewery/snippets/brew/table.snippet.js +++ b/shared/homebrewery/snippets/brew/table.snippet.js @@ -20,7 +20,7 @@ const columns = { return _.concat([`d${rows}`, ':---:'], _.times(rows, (i)=>i+1)); }, level : (rows)=>{ - return _.concat([`${_.sample(Data.classes)} Level`, ':---:'], _.times(rows, (i)=>`${i*2+3}th`)); + return _.concat([`${_.sample(Data.classes)} Level`, ':---:'], _.times(rows, (i)=>Data.levels[i*2])); }, spell : (rows)=>{ From e112808706fc6292a3c2365f9f95b11bb729a184 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Feb 2017 19:38:42 -0500 Subject: [PATCH 06/21] Column split now a key word --- scripts/notes.js | 8 ++++++++ shared/homebrewery/brewEditor/brewEditor.jsx | 5 +++++ shared/homebrewery/brewEditor/brewEditor.less | 4 ++++ .../homebrewery/brewRenderer/brewRenderer.jsx | 7 ++++++- shared/homebrewery/markdown.js | 3 +++ shared/homebrewery/phb_style/phb.blocks.less | 17 ++++++++++++++--- shared/homebrewery/phb_style/phb.less | 4 +++- shared/homebrewery/snippets/style/bg.snippet.js | 12 ++++++++++++ shared/homebrewery/snippets/style/index.js | 3 ++- 9 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 scripts/notes.js create mode 100644 shared/homebrewery/snippets/style/bg.snippet.js diff --git a/scripts/notes.js b/scripts/notes.js new file mode 100644 index 0000000..0571bc0 --- /dev/null +++ b/scripts/notes.js @@ -0,0 +1,8 @@ + +require('fixme')({ + path: process.cwd(), + ignored_directories: ['node_modules/**', '.git/**', 'build/**'], + file_patterns: ['**/*.js', '**/*.jsx', '**/*.less'], + file_encoding: 'utf8', + line_length_limit: 200 +}); \ No newline at end of file diff --git a/shared/homebrewery/brewEditor/brewEditor.jsx b/shared/homebrewery/brewEditor/brewEditor.jsx index 6d142b1..489b0ad 100644 --- a/shared/homebrewery/brewEditor/brewEditor.jsx +++ b/shared/homebrewery/brewEditor/brewEditor.jsx @@ -105,6 +105,11 @@ const BrewEditor = React.createClass({ r.push(lineNumber); } + if(line.indexOf('\\column') !== -1){ + codeMirror.addLineClass(lineNumber, 'text', 'columnSplit'); + r.push(lineNumber); + } + if(_.startsWith(line, '{{') || _.startsWith(line, '}}')){ codeMirror.addLineClass(lineNumber, 'text', 'block'); } diff --git a/shared/homebrewery/brewEditor/brewEditor.less b/shared/homebrewery/brewEditor/brewEditor.less index d54d8f8..48e3e08 100644 --- a/shared/homebrewery/brewEditor/brewEditor.less +++ b/shared/homebrewery/brewEditor/brewEditor.less @@ -12,6 +12,10 @@ color : purple; //font-style: italic; } + .columnSplit{ + font-style : italic; + color : grey; + } } .brewJump{ diff --git a/shared/homebrewery/brewRenderer/brewRenderer.jsx b/shared/homebrewery/brewRenderer/brewRenderer.jsx index f140fdf..bcce8c6 100644 --- a/shared/homebrewery/brewRenderer/brewRenderer.jsx +++ b/shared/homebrewery/brewRenderer/brewRenderer.jsx @@ -133,6 +133,11 @@ const BrewRenderer = React.createClass({ return this.lastRender; }, + //TODO: This is pretty bad + renderStyle : function(){ + return + }, + render : function(){ if(this.props.brew.version == 1) return ; @@ -146,7 +151,7 @@ const BrewRenderer = React.createClass({ - + {this.renderStyle()}
{this.renderPages()} diff --git a/shared/homebrewery/markdown.js b/shared/homebrewery/markdown.js index 32380a0..36947a9 100644 --- a/shared/homebrewery/markdown.js +++ b/shared/homebrewery/markdown.js @@ -31,6 +31,9 @@ module.exports = { marked : Markdown, render : (rawBrewText)=>{ blockCount = 0; + + rawBrewText = rawBrewText.replace(/\\column/g, '{{columnSplit }}') + let html = Markdown(rawBrewText, {renderer : renderer, sanitize: true}); //Close all hanging block tags html += _.times(blockCount, ()=>{return '
'}).join('\n'); diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 30ff368..41aac34 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -57,11 +57,22 @@ -moz-column-span : all; } -.twoCol{ - background-color: red; +.oneColumn{ + column-count : 1; +} +.twoColumn{ column-count : 2; } +.threeColumn{ + column-count : 3; +} +.fourColumn{ + column-count : 4; +} .columnSplit{ - //TODO: make \column trigger this + visibility : hidden; + -webkit-column-break-after : always; + break-after : always; + -moz-column-break-after : always; } \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index 42fc0ec..aa9c056 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -15,7 +15,7 @@ @import './phb.blocks.less'; - @page { margin: 0; } //???? + @page { margin: 0; } //TODO: ???? .useColumns(@multiplier : 1){ @@ -322,12 +322,14 @@ list-style-type : none; } //Column Break + /* pre, code{ visibility : hidden; -webkit-column-break-after : always; break-after : always; -moz-column-break-after : always; } + */ //Avoid breaking up p,blockquote,table{ z-index : 15; diff --git a/shared/homebrewery/snippets/style/bg.snippet.js b/shared/homebrewery/snippets/style/bg.snippet.js new file mode 100644 index 0000000..b898f0e --- /dev/null +++ b/shared/homebrewery/snippets/style/bg.snippet.js @@ -0,0 +1,12 @@ +module.exports = { + dmg : ()=>{ + return `.phb{ + background-image: url('/assets/homebrewery/phb_style/img/dmg_bg.jpg'); +}`; + }, + dark: ()=>{ + return `.phb{ + background-image: url('/assets/homebrewery/phb_style/img/phb_dark_bg.jpg'); +}`; + } +} \ No newline at end of file diff --git a/shared/homebrewery/snippets/style/index.js b/shared/homebrewery/snippets/style/index.js index 995e36d..bdf313a 100644 --- a/shared/homebrewery/snippets/style/index.js +++ b/shared/homebrewery/snippets/style/index.js @@ -2,5 +2,6 @@ const _ = require('lodash'); module.exports = _.merge( require('./ink.snippet.js'), - require('./a4.snippet.js') + require('./a4.snippet.js'), + require('./bg.snippet.js') ); From 0705e083816fcc19a7700c9bbf12ee5776d1bb4c Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Feb 2017 19:49:36 -0500 Subject: [PATCH 07/21] Added in stlying for code blocks --- shared/homebrewery/phb_style/phb.less | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index aa9c056..a08125f 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -51,6 +51,15 @@ page-break-before : always; page-break-after : always; + pre{ + font-family : monospace; + background-color : @yellow; + padding : 12px; + border: 1px solid #bfbfbf; + color : #333; + + } + //***************************** // * BASE From 4c874149fb6ae2bbc49bd4182fab348ba9cf82be Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Feb 2017 20:18:44 -0500 Subject: [PATCH 08/21] added an internal nested div on block elements --- shared/homebrewery/brewEditor/brewEditor.jsx | 2 +- shared/homebrewery/markdown.js | 4 +- shared/homebrewery/phb_style/phb.blocks.less | 71 +++++++++++--------- shared/homebrewery/phb_style/phb.less | 3 +- 4 files changed, 46 insertions(+), 34 deletions(-) diff --git a/shared/homebrewery/brewEditor/brewEditor.jsx b/shared/homebrewery/brewEditor/brewEditor.jsx index 489b0ad..d6fe57c 100644 --- a/shared/homebrewery/brewEditor/brewEditor.jsx +++ b/shared/homebrewery/brewEditor/brewEditor.jsx @@ -105,7 +105,7 @@ const BrewEditor = React.createClass({ r.push(lineNumber); } - if(line.indexOf('\\column') !== -1){ + if(line.indexOf('\\column') === 0){ codeMirror.addLineClass(lineNumber, 'text', 'columnSplit'); r.push(lineNumber); } diff --git a/shared/homebrewery/markdown.js b/shared/homebrewery/markdown.js index 36947a9..a4e3a2d 100644 --- a/shared/homebrewery/markdown.js +++ b/shared/homebrewery/markdown.js @@ -13,11 +13,11 @@ renderer.paragraph = function(text){ if(text) r.push(Markdown(text, {renderer : renderer, sanitize: true})); const block = matches[matchIndex]; if(block && block[0] == '{'){ - r.push(`\n\n
`); + r.push(`\n\n
`); blockCount++; } if(block == '}}' && blockCount !== 0){ - r.push('
\n\n'); + r.push('
\n\n'); blockCount--; } matchIndex++; diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 41aac34..127adcc 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -15,41 +15,48 @@ } .note{ .useSansSerif(); - margin-bottom : 1em; - padding : 5px 10px; - background-color : @green; - border-style : solid; - border-width : 11px; - border-image : @noteBorder 11; - border-image-outset : 9px 0px; - box-shadow : 1px 4px 14px #888; - h2,h3,h4{ - .useSansSerif(); - color : black; - } - p, ul{ - font-size : 0.352cm; - line-height : 1.1em; - } - &.alt{ + margin: 9px 0px; + .internal{ + margin-bottom : 1em; + padding : 5px 10px; + background-color : @green; border-style : solid; - border-width : 7px; - border-image : @descriptiveBorder 12 round; - border-image-outset : 4px; + border-width : 11px; + border-image : @noteBorder 11; + border-image-outset : 9px 0px; + box-shadow : 1px 4px 14px #888; + h2,h3,h4{ + .useSansSerif(); + color : black; + } + p, ul{ + font-size : 0.352cm; + line-height : 1.1em; + } + &.alt{ + border-style : solid; + border-width : 7px; + border-image : @descriptiveBorder 12 round; + border-image-outset : 4px; + } } } .frame{ - box-sizing : border-box; - margin-top : 30px; + margin-top : 26px; margin-bottom : 37px; - background-color : white; - border : initial; - border-style : solid; - border-image-outset : 25px 17px; - border-image-repeat : round; - border-image-slice : 150 200 150 200; - border-image-source : @frameBorder; - border-image-width : 47px; + margin-left : 17px; + margin-right: 17px; + .internal{ + box-sizing : border-box; + background-color : white; + border : initial; + border-style : solid; + border-image-outset : 25px 17px; + border-image-repeat : round; + border-image-slice : 150 200 150 200; + border-image-source : @frameBorder; + border-image-width : 47px; + } } .wide{ column-span : all; @@ -59,15 +66,19 @@ .oneColumn{ column-count : 1; + column-gap : 1cm; } .twoColumn{ column-count : 2; + column-gap : 1cm; } .threeColumn{ column-count : 3; + column-gap : 1cm; } .fourColumn{ column-count : 4; + column-gap : 1cm; } .columnSplit{ diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index a08125f..9406bfb 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -57,7 +57,8 @@ padding : 12px; border: 1px solid #bfbfbf; color : #333; - + -webkit-column-break-inside : avoid; + column-break-inside : avoid; } From 00f2703d0bf3176cfa4c8d0ed4c25896475234e1 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Tue, 28 Feb 2017 21:07:37 -0500 Subject: [PATCH 09/21] Moved files into statics, finally fixed the brew editor breaking on resizze --- server/interface.routes.js | 18 ++++++++++-- .../brewInterface/brewInterface.jsx | 4 +-- shared/homebrewery/markdown.js | 4 +++ shared/homebrewery/phb_style/phb.blocks.less | 28 +++++++++++++------ shared/homebrewery/phb_style/phb.less | 19 ++++++------- changelog.md => statics/changelog.md | 0 statics/faq.md | 19 +++++++++++++ welcome.brew.md => statics/welcome.brew.md | 0 8 files changed, 68 insertions(+), 24 deletions(-) rename changelog.md => statics/changelog.md (100%) create mode 100644 statics/faq.md rename welcome.brew.md => statics/welcome.brew.md (100%) diff --git a/server/interface.routes.js b/server/interface.routes.js index 7bf756c..f0d307a 100644 --- a/server/interface.routes.js +++ b/server/interface.routes.js @@ -8,10 +8,11 @@ const mw = require('./middleware.js'); const statics = { - welcomeBrew : fs.readFileSync('./welcome.brew.md', 'utf8'), - changelog : fs.readFileSync('./changelog.md', 'utf8'), - testBrew : fs.readFileSync('./statics/test.brew.md', 'utf8'), + welcomeBrew : fs.readFileSync('./statics/welcome.brew.md', 'utf8'), + changelog : fs.readFileSync('./statics/changelog.md', 'utf8'), + faq : fs.readFileSync('./statics/faq.md', 'utf8'), + testBrew : fs.readFileSync('./statics/test.brew.md', 'utf8'), oldTest : fs.readFileSync('./statics/oldTest.brew.md', 'utf8'), }; @@ -81,6 +82,17 @@ router.get('/changelog', (req, res, next) => { return next(); }, renderPage); +//faq Page +router.get('/faq', (req, res, next) => { + req.brew = { + text : statics.faq, + title : 'FAQ', + + editId : true + }; + return next(); +}, renderPage); + //New Page router.get('/new', renderPage); diff --git a/shared/homebrewery/brewInterface/brewInterface.jsx b/shared/homebrewery/brewInterface/brewInterface.jsx index 1b5b17c..65387a2 100644 --- a/shared/homebrewery/brewInterface/brewInterface.jsx +++ b/shared/homebrewery/brewInterface/brewInterface.jsx @@ -7,9 +7,9 @@ const BrewRenderer = require('../brewRenderer/brewRenderer.smart.jsx'); const BrewInterface = React.createClass({ - handleSplitMove : function(){ - console.log('split move!'); + const BrewEditor = this.refs.editor.refs.wrappedComponent; + BrewEditor.updateEditorSize(); }, render: function(){ return diff --git a/shared/homebrewery/markdown.js b/shared/homebrewery/markdown.js index a4e3a2d..4c51bdf 100644 --- a/shared/homebrewery/markdown.js +++ b/shared/homebrewery/markdown.js @@ -26,6 +26,10 @@ renderer.paragraph = function(text){ return res; }; +renderer.image = function(href, title, text){ + return ``; +}; + module.exports = { marked : Markdown, diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 127adcc..c7c2442 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -16,7 +16,7 @@ .note{ .useSansSerif(); margin: 9px 0px; - .internal{ + &>.internal{ margin-bottom : 1em; padding : 5px 10px; background-color : @green; @@ -33,12 +33,13 @@ font-size : 0.352cm; line-height : 1.1em; } - &.alt{ - border-style : solid; - border-width : 7px; - border-image : @descriptiveBorder 12 round; - border-image-outset : 4px; - } + + } + &.alt>.internal{ + border-style : solid; + border-width : 7px; + border-image : @descriptiveBorder 12 round; + border-image-outset : 4px; } } .frame{ @@ -46,7 +47,7 @@ margin-bottom : 37px; margin-left : 17px; margin-right: 17px; - .internal{ + &>.internal{ box-sizing : border-box; background-color : white; border : initial; @@ -86,4 +87,15 @@ -webkit-column-break-after : always; break-after : always; -moz-column-break-after : always; +} + + +.brushed{ + border-image-source : url('http://i.imgur.com/nzPYZyD.png'); + border-image-outset : 25px 17px; + border-image-repeat : round; + border-image-slice : 1250 1250 1250 1250; + border-image-width : 1250px; + + } \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index 9406bfb..afc2b02 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -18,17 +18,11 @@ @page { margin: 0; } //TODO: ???? - .useColumns(@multiplier : 1){ + .useColumns(){ column-count : 2; column-fill : auto; column-gap : 1cm; - column-width : 8cm * @multiplier; - -webkit-column-count : 2; - -moz-column-count : 2; - -webkit-column-width : 8cm * @multiplier; - -moz-column-width : 8cm * @multiplier; - -webkit-column-gap : 1cm; - -moz-column-gap : 1cm; + column-width : 8cm; } & *{ -webkit-print-color-adjust : exact; @@ -51,11 +45,14 @@ page-break-before : always; page-break-after : always; + + /* CODE */ pre{ font-family : monospace; background-color : @yellow; padding : 12px; border: 1px solid #bfbfbf; + white-space: pre-wrap; color : #333; -webkit-column-break-inside : avoid; column-break-inside : avoid; @@ -200,9 +197,9 @@ } */ //If a note starts a column, give it space at the top to render border - pre+blockquote, h2+blockquote, h3+blockquote, h4+blockquote, h5+blockquote { - margin-top : 13px; - } + //pre+blockquote, h2+blockquote, h3+blockquote, h4+blockquote, h5+blockquote { + // margin-top : 13px; + //} //***************************** // * MONSTER STAT BLOCK // *****************************/ diff --git a/changelog.md b/statics/changelog.md similarity index 100% rename from changelog.md rename to statics/changelog.md diff --git a/statics/faq.md b/statics/faq.md new file mode 100644 index 0000000..1d16308 --- /dev/null +++ b/statics/faq.md @@ -0,0 +1,19 @@ +- Submitting work created on this site to DMs Guild + + + +# Images + + + +## Changing backgrounds +{{wide +In style +``` +#p3{ + background-image : url('/assets/homebrewery/phb_style/img/dmg_bg.jpg') +} + +``` +}} + diff --git a/welcome.brew.md b/statics/welcome.brew.md similarity index 100% rename from welcome.brew.md rename to statics/welcome.brew.md From bfb2cea48e89449ba069ec06674d56d732a639cb Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Tue, 28 Feb 2017 23:21:41 -0500 Subject: [PATCH 10/21] Working on onster block --- .../homebrewery/phb_style/img/monster_bg.jpg | Bin 0 -> 347017 bytes ...{monstor_border.png => monster_border.png} | Bin shared/homebrewery/phb_style/phb.blocks.less | 41 ++++++ shared/homebrewery/phb_style/phb.img.less | 1 + shared/homebrewery/phb_style/phb.less | 138 +++++++++--------- shared/homebrewery/snippets/brew/index.js | 3 +- .../snippets/brew/monster.snippet.js | 38 +++++ .../homebrewery/snippets/brew/random.data.js | 57 ++++++++ 8 files changed, 212 insertions(+), 66 deletions(-) create mode 100644 shared/homebrewery/phb_style/img/monster_bg.jpg rename shared/homebrewery/phb_style/img/{monstor_border.png => monster_border.png} (100%) create mode 100644 shared/homebrewery/snippets/brew/monster.snippet.js diff --git a/shared/homebrewery/phb_style/img/monster_bg.jpg b/shared/homebrewery/phb_style/img/monster_bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d22f8399ae90189eb16673c5b41c133481458130 GIT binary patch literal 347017 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]Qhn2mQe$<#i1RB-K+Og+A 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Ð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

-O9wB^j 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.internal{ + //background-color : @monsterStatBackground; + background-image: @monsterBG; + border-style : solid; + border-width : 10px; + border-image : @monsterBorder 10; + table{ + color : @headerText; + } + + ul:nth-of-type(1),ul:nth-of-type(2){ + background-color: red; + } + + } + } + + .note{ .useSansSerif(); margin: 9px 0px; @@ -90,6 +111,7 @@ } + .brushed{ border-image-source : url('http://i.imgur.com/nzPYZyD.png'); border-image-outset : 25px 17px; @@ -98,4 +120,23 @@ border-image-width : 1250px; +} + + +//basics +.left{ + text-align: left; +} +.right{ + text-align: right; +} +.center{ + text-align: center; +} +.bold{ + font-weight: 800; +} + +.sansSerif{ + .useSansSerif(); } \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.img.less b/shared/homebrewery/phb_style/phb.img.less index 7e3a597..00f1bf0 100644 --- a/shared/homebrewery/phb_style/phb.img.less +++ b/shared/homebrewery/phb_style/phb.img.less @@ -9,4 +9,5 @@ @phbBG : url('/assets/homebrewery/phb_style/img/phb_bg.jpg'); @darkBG : url('/assets/homebrewery/phb_style/img/phb_dark_bg.jpg'); @dmgBG : url('/assets/homebrewery/phb_style/img/dmg_bg.jpg'); +@monsterBG : url('/assets/homebrewery/phb_style/img/monster_bg.jpg'); diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index afc2b02..35c4e8b 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -147,6 +147,15 @@ font-size : 0.423cm; font-weight : 900; } + + hr{ + visibility : visible; + height : 6px; + margin : 4px 0px; + background-image : @dividerImg; + background-size : 100% 100%; + border : none; + } //***************************** // * TABLE // *****************************/ @@ -264,7 +273,7 @@ } //Full Width hr+hr+blockquote{ - .useColumns(0.96); + //.useColumns(0.96); } //***************************** // * FOOTER @@ -317,17 +326,14 @@ //***************************** // * EXTRAS // *****************************/ - hr{ - visibility : hidden; - margin : 0px; - } + //Modified unorder list, used in spells - hr+ul{ - margin-bottom : 0.5em; - padding-left : 1em; - text-indent : -1em; - list-style-type : none; - } + // hr+ul{ + // margin-bottom : 0.5em; + // padding-left : 1em; + // text-indent : -1em; + // list-style-type : none; + // } //Column Break /* pre, code{ @@ -338,20 +344,21 @@ } */ //Avoid breaking up + /* p,blockquote,table{ z-index : 15; -webkit-column-break-inside : avoid; column-break-inside : avoid; overflow: hidden; /* Firefox fix */ - } + //Better spacing for spell blocks - h4+p+hr+ul{ - margin-top : -0.5em - } - //Text indent right after table - table+p{ - text-indent : 1em; - } + // h4+p+hr+ul{ + // margin-top : -0.5em + // } + // //Text indent right after table + // table+p{ + // text-indent : 1em; + // } // Nested lists ul ul,ol ol,ul ol,ol ul{ margin-bottom : 0px; @@ -365,6 +372,7 @@ //***************************** // * SPELL LIST // *****************************/ + /* .spellList{ .useSansSerif(); column-count : 4; @@ -390,11 +398,11 @@ //***************************** // * PRINT // *****************************/ - &.print{ - blockquote{ - box-shadow : none; - } - } + // &.print{ + // blockquote{ + // box-shadow : none; + // } + // } //***************************** // * WIDE @@ -408,22 +416,22 @@ //***************************** // * CLASS TABLE // *****************************/ - .classTable{ - margin-top : 25px; - margin-bottom : 40px; - border-collapse : separate; - background-color : white; - border : initial; - border-style : solid; - border-image-outset : 25px 17px; - border-image-repeat : round; - border-image-slice : 150 200 150 200; - border-image-source : @frameBorder; - border-image-width : 47px; - h5{ - margin-bottom : 10px; - } - } + // .classTable{ + // margin-top : 25px; + // margin-bottom : 40px; + // border-collapse : separate; + // background-color : white; + // border : initial; + // border-style : solid; + // border-image-outset : 25px 17px; + // border-image-repeat : round; + // border-image-slice : 150 200 150 200; + // border-image-source : @frameBorder; + // border-image-width : 47px; + // h5{ + // margin-bottom : 10px; + // } + // } //***************************** // * CLASS TABLE // *****************************/ @@ -488,33 +496,33 @@ // * Old Stuff // *****************************/ - //Double hr for full width elements - hr+hr+blockquote{ - column-span : all; - -webkit-column-span : all; - -moz-column-span : all; - } + // //Double hr for full width elements + // hr+hr+blockquote{ + // column-span : all; + // -webkit-column-span : all; + // -moz-column-span : all; + // } //***************************** // * CLASS TABLE // *****************************/ - hr+table{ - margin-top : -5px; - margin-bottom : 50px; - padding-top : 10px; - border-collapse : separate; - background-color : white; - border : initial; - border-style : solid; - border-image-outset : 37px 17px; - border-image-repeat : round; - border-image-slice : 150 200 150 200; - border-image-source : @frameBorder; - border-image-width : 47px; - } - h5+hr+table{ - column-span : all; - -webkit-column-span : all; - -moz-column-span : all; - } + // hr+table{ + // margin-top : -5px; + // margin-bottom : 50px; + // padding-top : 10px; + // border-collapse : separate; + // background-color : white; + // border : initial; + // border-style : solid; + // border-image-outset : 37px 17px; + // border-image-repeat : round; + // border-image-slice : 150 200 150 200; + // border-image-source : @frameBorder; + // border-image-width : 47px; + // } + // h5+hr+table{ + // column-span : all; + // -webkit-column-span : all; + // -moz-column-span : all; + // } } \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/index.js b/shared/homebrewery/snippets/brew/index.js index e8dd3de..d1f9b0b 100644 --- a/shared/homebrewery/snippets/brew/index.js +++ b/shared/homebrewery/snippets/brew/index.js @@ -4,7 +4,8 @@ module.exports = _.merge( require('./spell.snippet.js'), require('./table.snippet.js'), require('./classTable.snippet.js'), - require('./note.snippet.js') + require('./note.snippet.js'), + require('./monster.snippet.js') //wide diff --git a/shared/homebrewery/snippets/brew/monster.snippet.js b/shared/homebrewery/snippets/brew/monster.snippet.js new file mode 100644 index 0000000..a53d189 --- /dev/null +++ b/shared/homebrewery/snippets/brew/monster.snippet.js @@ -0,0 +1,38 @@ +const _ = require('lodash'); +const Data = require('./random.data.js'); + + +module.exports = { + monster : ()=>{ + + const stats = ''; + + return `{{monster +## ${Data.rand('creatures')} +*${Data.rand('sizes')}, ${Data.rand('alignments')}* + +--- + +- **Armor Class** ${_.random(10,20)} +- **Hit Points** ${_.random(1, 150)} (1d4 + 5) +- **Speed** ${ _.random(0,50)} ft + +--- + +|STR|DEX|CON|INT|WIS|CHA| +|:---:|:---:|:---:|:---:|:---:|:---:| +${stats} + +--- + +- **Condition Immunities** " + genList(["groggy", "swagged", "weak-kneed", "buzzed", "groovy", "melancholy", "drunk"], 3), +- **Senses** passive Perception " + _.random(3, 20), +- **Languages** " + genList(["Common", "Pottymouth", "Gibberish", "Latin", "Jive"], 2), +- **Challenge** " + _.random(0, 15) + " (" + _.random(10,10000)+ " XP)", + + +}}` + + + } +}; \ No newline at end of file diff --git a/shared/homebrewery/snippets/brew/random.data.js b/shared/homebrewery/snippets/brew/random.data.js index 5c3284a..4be3f58 100644 --- a/shared/homebrewery/snippets/brew/random.data.js +++ b/shared/homebrewery/snippets/brew/random.data.js @@ -356,6 +356,63 @@ const Data = { `Thanks to alien forces, the characters end up in the earth's past.`, `Thanks to alien forces, the secondary protagonist ends up in a world after an apocalypse.`, `Due to a panic attack a character has to get psychological therapy.`, + ], + + + + creatures : [ + "All-devouring Baseball Imp", + "All-devouring Gumdrop Wraith", + "Chocolate Hydra", + "Devouring Peacock", + "Economy-sized Colossus of the Lemonade Stand", + "Ghost Pigeon", + "Gibbering Duck", + "Sparklemuffin Peacock Spider", + "Gum Elemental", + "Illiterate Construct of the Candy Store", + "Ineffable Chihuahua", + "Irritating Death Hamster", + "Irritating Gold Mouse", + "Juggernaut Snail", + "Juggernaut of the Sock Drawer", + "Koala of the Cosmos", + "Mad Koala of the West", + "Milk Djinni of the Lemonade Stand", + "Mind Ferret", + "Mystic Salt Spider", + "Necrotic Halitosis Angel", + "Pinstriped Famine Sheep", + "Ritalin Leech", + "Shocker Kangaroo", + "Stellar Tennis Juggernaut", + "Wailing Quail of the Sun", + "Angel Pigeon", + "Anime Sphinx", + "Bored Avalanche Sheep of the Wasteland", + "Devouring Nougat Sphinx of the Sock Drawer", + "Djinni of the Footlocker", + "Ectoplasmic Jazz Devil", + "Flatuent Angel", + "Gelatinous Duck of the Dream-Lands", + "Gelatinous Mouse", + "Golem of the Footlocker", + "Lich Wombat", + "Mechanical Sloth of the Past", + "Milkshake Succubus", + "Puffy Bone Peacock of the East", + "Rainbow Manatee", + "Rune Parrot", + "Sand Cow", + "Sinister Vanilla Dragon", + "Snail of the North", + "Spider of the Sewer", + "Stellar Sawdust Leech", + "Storm Anteater of Hell", + "Stupid Spirit of the Brewery", + "Time Kangaroo", + "Tomb Poodle" + ] }; From 94a3a9696011b8f70a59a90f261d358d5970508c Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Fri, 3 Mar 2017 19:20:27 -0500 Subject: [PATCH 11/21] Adding to faq --- statics/faq.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/statics/faq.md b/statics/faq.md index 1d16308..782168b 100644 --- a/statics/faq.md +++ b/statics/faq.md @@ -1,6 +1,12 @@ - Submitting work created on this site to DMs Guild +# I lost my brew? +- If you made any edits with an account, you can go to that account's page +- Homebrewery stores the last handful of brews you've viewed or edited under the recent brews tab +- Check your browser history for the edit link +- If all of that fails, find the share link, open the source and copy it into a new brew. + # Images From 393df1b1818625359ac828778e3be5432359baf0 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 19 Mar 2017 12:28:45 -0400 Subject: [PATCH 12/21] Updating the faqw --- statics/faq.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/statics/faq.md b/statics/faq.md index 782168b..9aa79d1 100644 --- a/statics/faq.md +++ b/statics/faq.md @@ -12,6 +12,12 @@ +How to make spacers + + + + + ## Changing backgrounds {{wide In style From 30d3fcf168b00b11b97d9d5d9764e93743d9ff68 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 19 Mar 2017 13:17:33 -0400 Subject: [PATCH 13/21] Pseudo element borders are working, holy shit --- client/homebrew/pages/printPage/printPage.jsx | 21 ++- server/interface.routes.js | 1 + shared/homebrewery/brew.actions.js | 5 +- shared/homebrewery/markdown.js | 4 +- shared/homebrewery/phb_style/phb.blocks.less | 125 +++++++++--------- shared/homebrewery/phb_style/phb.colors.less | 2 +- statics/test.brew.md | 38 +++++- 7 files changed, 127 insertions(+), 69 deletions(-) diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index 70ab71a..356967d 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -9,24 +9,36 @@ const PrintPage = React.createClass({ query : {}, brew : { text : '', + style : '' } }; }, getInitialState: function() { return { - brewText: this.props.brew.text + brew: this.props.brew }; }, componentDidMount: function() { if(this.props.query.local){ - this.setState({ brewText : localStorage.getItem(this.props.query.local)}); + try{ + this.setState({ + brew : JSON.parse( + localStorage.getItem(this.props.query.local) + ) + }); + }catch(e){} } if(this.props.query.dialog) window.print(); }, + //TODO: This is pretty bad + renderStyle : function(){ + if(!this.state.brew.style) return; + return + }, renderPages : function(){ - return _.map(this.state.brewText.split('\\page'), (page, index) => { + return _.map(this.state.brew.text.split('\\page'), (page, index) => { return

; @@ -35,6 +47,7 @@ const PrintPage = React.createClass({ render : function(){ return
+ {this.renderStyle()} {this.renderPages()}
} diff --git a/server/interface.routes.js b/server/interface.routes.js index f0d307a..0353038 100644 --- a/server/interface.routes.js +++ b/server/interface.routes.js @@ -45,6 +45,7 @@ router.get('/edit/:editId', mw.loadBrew, renderPage); //Print Page router.get('/print/:shareId', mw.viewBrew, renderPage); +router.get('/print', renderPage); //Source page router.get('/source/:sharedId', mw.viewBrew, (req, res, next)=>{ diff --git a/shared/homebrewery/brew.actions.js b/shared/homebrewery/brew.actions.js index 5e0b41e..e359aca 100644 --- a/shared/homebrewery/brew.actions.js +++ b/shared/homebrewery/brew.actions.js @@ -70,8 +70,9 @@ const Actions = { }, localPrint : ()=>{ - localStorage.setItem('print', Store.getBrewText()); - window.open('/print?dialog=true&local=print','_blank'); + const key = 'print'; + localStorage.setItem(key, JSON.stringify(Store.getBrew())); + window.open(`/print?dialog=true&local=${key}`,'_blank'); }, print : ()=>{ window.open(`/print/${Store.getBrew().shareId}?dialog=true`, '_blank').focus(); diff --git a/shared/homebrewery/markdown.js b/shared/homebrewery/markdown.js index 4c51bdf..288dedc 100644 --- a/shared/homebrewery/markdown.js +++ b/shared/homebrewery/markdown.js @@ -13,11 +13,11 @@ renderer.paragraph = function(text){ if(text) r.push(Markdown(text, {renderer : renderer, sanitize: true})); const block = matches[matchIndex]; if(block && block[0] == '{'){ - r.push(`\n\n
`); + r.push(`\n\n
`); blockCount++; } if(block == '}}' && blockCount !== 0){ - r.push('
\n\n'); + r.push('
\n\n'); blockCount--; } matchIndex++; diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 0d24b29..437e7d5 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -1,4 +1,23 @@ +.breakAvoid(){ + column-break-inside : avoid; + -webkit-column-break-inside : avoid; +} +.pseudoBorder(){ + position : relative; + &:before{ + content : ''; + position : absolute; + box-sizing : border-box; + width : 100%; + border-style : solid; + z-index : -1; + } +} + + +/////////////////// + .spell{ ul:first-of-type{ margin-top : -0.5em; @@ -14,60 +33,58 @@ .monster{ -webkit-column-break-inside : avoid; column-break-inside : avoid; - &>.internal{ //background-color : @monsterStatBackground; - background-image: @monsterBG; + background-image : @monsterBG; border-style : solid; border-width : 10px; border-image : @monsterBorder 10; table{ color : @headerText; } - ul:nth-of-type(1),ul:nth-of-type(2){ - background-color: red; + background-color : red; } - } - } - - .note{ .useSansSerif(); - margin: 9px 0px; - &>.internal{ - margin-bottom : 1em; - padding : 5px 10px; + .breakAvoid(); + .pseudoBorder(); + margin : 9px 0px; + padding : 12px 0px; + &:before{ + top : 9px; + bottom : 9px; + left : 0px; background-color : @green; - border-style : solid; border-width : 11px; border-image : @noteBorder 11; border-image-outset : 9px 0px; - box-shadow : 1px 4px 14px #888; - h2,h3,h4{ - .useSansSerif(); - color : black; - } - p, ul{ - font-size : 0.352cm; - line-height : 1.1em; - } - } - &.alt>.internal{ - border-style : solid; - border-width : 7px; - border-image : @descriptiveBorder 12 round; - border-image-outset : 4px; + h2,h3,h4{ + .useSansSerif(); + color : black; + } + p, ul{ + font-size : 0.352cm; + line-height : 1.1em; + } + + &.alt{ + &:before{ + border-style : solid; + border-width : 7px; + border-image : @descriptiveBorder 12 round; + border-image-outset : 4px; + } } } .frame{ - margin-top : 26px; - margin-bottom : 37px; - margin-left : 17px; - margin-right: 17px; + margin-top : 26px; + margin-right : 17px; + margin-bottom : 37px; + margin-left : 17px; &>.internal{ box-sizing : border-box; background-color : white; @@ -85,58 +102,48 @@ -webkit-column-span : all; -moz-column-span : all; } - .oneColumn{ - column-count : 1; - column-gap : 1cm; + column-count : 1; + column-gap : 1cm; } .twoColumn{ - column-count : 2; - column-gap : 1cm; + column-count : 2; + column-gap : 1cm; } .threeColumn{ - column-count : 3; - column-gap : 1cm; + column-count : 3; + column-gap : 1cm; } .fourColumn{ - column-count : 4; - column-gap : 1cm; + column-count : 4; + column-gap : 1cm; } - .columnSplit{ visibility : hidden; -webkit-column-break-after : always; break-after : always; -moz-column-break-after : always; } - - - .brushed{ - border-image-source : url('http://i.imgur.com/nzPYZyD.png'); - border-image-outset : 25px 17px; - border-image-repeat : round; - border-image-slice : 1250 1250 1250 1250; - border-image-width : 1250px; - - + border-image-outset : 25px 17px; + border-image-repeat : round; + border-image-slice : 1250 1250 1250 1250; + border-image-width : 1250px; + border-image-source : url('http : //i.imgur.com/nzPYZyD.png'); } - - //basics .left{ - text-align: left; + text-align : left; } .right{ - text-align: right; + text-align : right; } .center{ - text-align: center; + text-align : center; } .bold{ - font-weight: 800; + font-weight : 800; } - .sansSerif{ .useSansSerif(); } \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.colors.less b/shared/homebrewery/phb_style/phb.colors.less index e499049..3f92db1 100644 --- a/shared/homebrewery/phb_style/phb.colors.less +++ b/shared/homebrewery/phb_style/phb.colors.less @@ -15,7 +15,7 @@ background-color : @color; } } - &.note{ + &.note:before{ background-color: @color; } } diff --git a/statics/test.brew.md b/statics/test.brew.md index fdd7f82..0442caa 100644 --- a/statics/test.brew.md +++ b/statics/test.brew.md @@ -18,6 +18,21 @@ Like this tool? Want to buy me a beer? [Head here](https://www.patreon.com/stolk This tool will **always** be free, never have ads, and I will never offer any "premium" features or whatever. +{{note,yellow,alt +##### PDF Exporting + PDF Printing works best in Chrome. If you are having quality/consistency issues, try using Chrome to print instead. + + After clicking the "Print" item in the navbar a new page will open and a print dialog will pop-up. + * Set the **Destination** to "Save as PDF" + * Set **Paper Size** to "Letter" + * If you are printing on A4 paper, make sure to have the "A4 page size snippet" in your brew + * In **Options** make sure "Background Images" is selected. + * Hit print and enjoy! You're done! + + If you want to save ink or have a monochrome printer, add the **Ink Friendly** snippet to your brew before you print + + +}} >##### PDF Exporting @@ -32,8 +47,29 @@ This tool will **always** be free, never have ads, and I will never offer any "p > > If you want to save ink or have a monochrome printer, add the **Ink Friendly** snippet to your brew before you print +{{note +##### PDF Exporting + PDF Printing works best in Chrome. If you are having quality/consistency issues, try using Chrome to print instead. + + After clicking the "Print" item in the navbar a new page will open and a print dialog will pop-up. + * Set the **Destination** to "Save as PDF" + * Set **Paper Size** to "Letter" + * If you are printing on A4 paper, make sure to have the "A4 page size snippet" in your brew + * In **Options** make sure "Background Images" is selected. + * Hit print and enjoy! You're done! + + If you want to save ink or have a monochrome printer, add the **Ink Friendly** snippet to your brew before you print + + +}} + + + ``` +cool stuff + + ``` ## Big things coming in v3.0.0 @@ -66,7 +102,7 @@ If you are looking for more 5e Homebrew resources check out [r/UnearthedArcana]( \page -{{classTable,wide +{{frame,wide ##### The Archivist | Level | Proficiency Bonus | Features | Statistical Occultism| |:---:|:---:|:---|:---:| From a3251dfa194623b4b4d3c8688a34cc341ca8c5b2 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 19 Mar 2017 13:50:45 -0400 Subject: [PATCH 14/21] Pseudo borders are now working --- package.json | 8 +-- shared/homebrewery/phb_style/phb.blocks.less | 75 ++++++++++---------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 28dcb19..c8ef3e3 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,11 @@ "quick": "node scripts/quick.js", "build": "node scripts/build.js", "populate": "node scripts/populate.js", - "prod": "set NODE_ENV=production&& npm run build", "postinstall": "npm run build", "start": "node server.js", - - "snippet" : "nodemon scripts/snippet.test.js", - "todo" : "node_modules/.bin/notes -h true -x node_modules/ -x build/", - + "snippet": "nodemon scripts/snippet.test.js", + "todo": "./node_modules/.bin/fixme -i node_modules/** -i build/**", "test": "mocha tests", "test:dev": "nodemon -x mocha tests || exit 0", "test:markdown": "nodemon -x mocha tests/markdown.test.js || exit 0" @@ -50,6 +47,7 @@ "chai": "^3.5.0", "chai-as-promised": "^6.0.0", "chai-subset": "^1.4.0", + "fixme": "^0.4.3", "mocha": "^3.2.0", "supertest": "^2.0.1", "supertest-as-promised": "^4.0.2" diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 437e7d5..82f7877 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -6,18 +6,15 @@ .pseudoBorder(){ position : relative; &:before{ - content : ''; - position : absolute; - box-sizing : border-box; - width : 100%; - border-style : solid; - z-index : -1; + content : ''; + position : absolute; + z-index : -1; + box-sizing : border-box; + border-style : solid; + border-image-repeat : round; } } - - /////////////////// - .spell{ ul:first-of-type{ margin-top : -0.5em; @@ -31,36 +28,43 @@ } } .monster{ - -webkit-column-break-inside : avoid; - column-break-inside : avoid; - &>.internal{ + .breakAvoid(); + .pseudoBorder(); + padding : 10px 5px; + table{ + color : @headerText; + } + ul:nth-of-type(1),ul:nth-of-type(2){ + background-color : red; + } + &:before{ + top : 10px; + right : 0px; + bottom : 10px; + left : 0px; //background-color : @monsterStatBackground; - background-image : @monsterBG; - border-style : solid; - border-width : 10px; - border-image : @monsterBorder 10; - table{ - color : @headerText; - } - ul:nth-of-type(1),ul:nth-of-type(2){ - background-color : red; - } + //border-image-outset : 25px 17px; + border-image-slice : 10; + border-image-source : @monsterBorder; + border-image-width : 47px; } } .note{ .useSansSerif(); .breakAvoid(); .pseudoBorder(); - margin : 9px 0px; - padding : 12px 0px; + margin : 9px 0px; + padding : 12px 5px; &:before{ top : 9px; + right : 0px; bottom : 9px; left : 0px; background-color : @green; border-width : 11px; - border-image : @noteBorder 11; border-image-outset : 9px 0px; + border-image-slice : 11; + border-image-source : @noteBorder; } h2,h3,h4{ .useSansSerif(); @@ -70,28 +74,27 @@ font-size : 0.352cm; line-height : 1.1em; } - &.alt{ &:before{ border-style : solid; border-width : 7px; - border-image : @descriptiveBorder 12 round; border-image-outset : 4px; + border-image-slice : 12; + border-image-source : @descriptiveBorder; } } } .frame{ - margin-top : 26px; - margin-right : 17px; - margin-bottom : 37px; - margin-left : 17px; - &>.internal{ - box-sizing : border-box; + .breakAvoid(); + .pseudoBorder(); + padding : 25px 17px; + &:before{ + top : 25px; + right : 17px; + bottom : 25px; + left : 17px; background-color : white; - border : initial; - border-style : solid; border-image-outset : 25px 17px; - border-image-repeat : round; border-image-slice : 150 200 150 200; border-image-source : @frameBorder; border-image-width : 47px; From c647bdf5eea6ce173d4871ea45361f6d07d68379 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 19 Mar 2017 15:07:00 -0400 Subject: [PATCH 15/21] Added in stlying for blockquotes and clean up logic in footer --- .../homebrewery/phb_style/img/footer_flip.png | Bin 0 -> 12853 bytes shared/homebrewery/phb_style/phb.blocks.less | 58 +++- .../homebrewery/phb_style/phb.elements.less | 172 ++++++++++ shared/homebrewery/phb_style/phb.fonts.less | 15 - shared/homebrewery/phb_style/phb.img.less | 1 + shared/homebrewery/phb_style/phb.less | 317 ++++-------------- shared/homebrewery/phb_style/phb.mixins.less | 29 ++ statics/faq.md | 6 +- 8 files changed, 305 insertions(+), 293 deletions(-) create mode 100644 shared/homebrewery/phb_style/img/footer_flip.png create mode 100644 shared/homebrewery/phb_style/phb.elements.less create mode 100644 shared/homebrewery/phb_style/phb.mixins.less diff --git a/shared/homebrewery/phb_style/img/footer_flip.png b/shared/homebrewery/phb_style/img/footer_flip.png new file mode 100644 index 0000000000000000000000000000000000000000..6e512afb9aceefda355cfab32a1bdd706e3f9714 GIT binary patch literal 12853 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
FNXfY@whP5~RCVv`EclokN| z<@bi8TmInn<{zFrp29diw+cY+ebMzMKsp&_X6&Bg^$3~xeLs3j{iZLaFw_jb!LXYHNs JD$e-d_&>l4@qhpT literal 0 HcmV?d00001 diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 82f7877..2e3c777 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -1,19 +1,5 @@ -.breakAvoid(){ - column-break-inside : avoid; - -webkit-column-break-inside : avoid; -} -.pseudoBorder(){ - position : relative; - &:before{ - content : ''; - position : absolute; - z-index : -1; - box-sizing : border-box; - border-style : solid; - border-image-repeat : round; - } -} + /////////////////// .spell{ ul:first-of-type{ @@ -54,7 +40,7 @@ .breakAvoid(); .pseudoBorder(); margin : 9px 0px; - padding : 12px 5px; + padding : 17px 5px; &:before{ top : 9px; right : 0px; @@ -100,6 +86,46 @@ border-image-width : 47px; } } + +.footnote{ + position : absolute; + right : 80px; + bottom : 28px; + z-index : 150; + width : 200px; + font-size : 0.9em; + color : @gold; + text-align : right; +} + + +//***************************** +// * TABLE OF CONTENTS +// *****************************/ +.toc{ + .breakAvoid(); + a{ + color : black; + text-decoration : none; + &:hover{ + text-decoration : underline; + } + } + ul{ + padding-left : 0; + list-style-type : none; + } + &>ul>li{ + margin-bottom : 10px; + } +} + + + + + + + .wide{ column-span : all; -webkit-column-span : all; diff --git a/shared/homebrewery/phb_style/phb.elements.less b/shared/homebrewery/phb_style/phb.elements.less new file mode 100644 index 0000000..bebe734 --- /dev/null +++ b/shared/homebrewery/phb_style/phb.elements.less @@ -0,0 +1,172 @@ +pre{ + font-family : monospace; + background-color : @yellow; + padding : 12px; + border: 1px solid #bfbfbf; + white-space: pre-wrap; + color : #333; + -webkit-column-break-inside : avoid; + column-break-inside : avoid; +} + + +hr{ + visibility : visible; + height : 6px; + margin : 4px 0px; + background-image : @dividerImg; + background-size : 100% 100%; + border : none; +} + + +p{ + padding-bottom : 0.8em; + line-height : 1.3em; + &+p{ + margin-top : -0.8em; + } +} + +blockquote{ + font-style : italic; + &>p{ + line-height: 1.8em; + &:first-child::first-line{ + + //TODO: Find the right font for block quotes + font-style: normal; + font-family: ScalySansSmallCaps; + + + } + } + .cite{ + font-style: normal; + text-align: right; + } + + +} + +//Indents after p or lists +p+p, ul+p, ol+p{ + text-indent : 1em; +} +img{ + z-index : -1; +} +strong{ + font-weight : bold; + letter-spacing : 0.03em; +} +em{ + font-style : italic; +} +sup{ + vertical-align : super; + font-size : smaller; + line-height : 0; +} +sub{ + vertical-align : sub; + font-size : smaller; + line-height : 0; +} +//***************************** +// * HEADERS +// *****************************/ +h1,h2,h3,h4{ + margin-top : 0.2em; + margin-bottom : 0.2em; + font-family : MrEaves; + font-weight : 800; + color : @headerText; +} +h1{ + column-span : all; + font-size : 0.987cm; + -webkit-column-span : all; + -moz-column-span : all; + &+p::first-letter{ + float : left; + font-family : Solbera; + font-size : 10em; + color : #222; + line-height : 0.8em; + } +} +h2{ + font-size : 0.705cm; +} +h3{ + font-size : 0.529cm; + border-bottom : 2px solid @headerUnderline; +} +h4{ + margin-bottom : 0.00em; + font-size : 0.458cm; +} +h5{ + margin-bottom : 0.2em; + font-family : ScalySansSmallCaps; + font-size : 0.423cm; + font-weight : 900; +} + + +//****************************** +// LISTS +//****************************** +ul ul,ol ol,ul ol,ol ul{ + margin-bottom : 0px; + margin-left : 1.5em; +} +li{ + -webkit-column-break-inside : avoid; + column-break-inside : avoid; +} +ul{ + margin-bottom : 0.8em; + padding-left : 1.4em; + line-height : 1.3em; + list-style-position : outside; + list-style-type : disc; +} +ol{ + margin-bottom : 0.8em; + padding-left : 1.4em; + line-height : 1.3em; + list-style-position : outside; + list-style-type : decimal; +} + + +//***************************** +// * TABLE +// *****************************/ +table{ + .useSansSerif(); + width : 100%; + margin-bottom : 1em; + font-size : 10pt; + thead{ + font-weight : 800; + th{ + vertical-align : bottom; + padding-bottom : 0.3em; + padding-right : 0.1em; + padding-left : 0.1em; + } + } + tbody{ + tr{ + td{ + padding : 0.3em 0.1em; + } + &:nth-child(odd){ + background-color : @green; + } + } + } +} \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.fonts.less b/shared/homebrewery/phb_style/phb.fonts.less index 976972f..e6ec1a8 100644 --- a/shared/homebrewery/phb_style/phb.fonts.less +++ b/shared/homebrewery/phb_style/phb.fonts.less @@ -53,18 +53,3 @@ font-weight: normal; font-style: normal; } - -//TODO: move the useSansSerif into here - -.useSansSerif(){ - font-family : ScalySans; - em{ - font-family : ScalySans; - font-style : italic; - } - strong{ - font-family : ScalySans; - font-weight : 800; - letter-spacing : -0.02em; - } -} \ No newline at end of file diff --git a/shared/homebrewery/phb_style/phb.img.less b/shared/homebrewery/phb_style/phb.img.less index 00f1bf0..5328fa2 100644 --- a/shared/homebrewery/phb_style/phb.img.less +++ b/shared/homebrewery/phb_style/phb.img.less @@ -1,4 +1,5 @@ @footerImg : url('/assets/homebrewery/phb_style/img/footer.png'); +@footerFlipImg : url('/assets/homebrewery/phb_style/img/footer_flip.png'); @dividerImg : url('/assets/homebrewery/phb_style/img/divider.png'); @frameBorder : url('/assets/homebrewery/phb_style/img/frame_border.png'); diff --git a/shared/homebrewery/phb_style/phb.less b/shared/homebrewery/phb_style/phb.less index 35c4e8b..e9adf63 100644 --- a/shared/homebrewery/phb_style/phb.less +++ b/shared/homebrewery/phb_style/phb.less @@ -1,3 +1,6 @@ + +//TODO: Remove this +/* @media print { .phb.v2{ .descriptive, blockquote{ @@ -5,29 +8,16 @@ } } } - +*/ .phb.v2{ + @import './phb.mixins.less'; @import './phb.fonts.less'; @import './phb.colors.less'; @import './phb.img.less'; @import './phb.blocks.less'; - - - @page { margin: 0; } //TODO: ???? - - - .useColumns(){ - column-count : 2; - column-fill : auto; - column-gap : 1cm; - column-width : 8cm; - } - & *{ - -webkit-print-color-adjust : exact; - } - .useColumns(); + @import './phb.elements.less'; counter-increment : phb-page-numbers; position : relative; z-index : 15; @@ -37,6 +27,10 @@ width : 215.9mm; padding : 1.0cm 1.7cm; padding-bottom : 1.5cm; + column-count : 2; + column-fill : auto; + column-gap : 1cm; + column-width : 8cm; background-color : @background; background-image : @phbBG; font-family : BookInsanity; @@ -44,167 +38,56 @@ text-rendering : optimizeLegibility; page-break-before : always; page-break-after : always; - - - /* CODE */ - pre{ - font-family : monospace; - background-color : @yellow; - padding : 12px; - border: 1px solid #bfbfbf; - white-space: pre-wrap; - color : #333; - -webkit-column-break-inside : avoid; - column-break-inside : avoid; + @page { margin: 0; } //TODO: ???? + & *{ + -webkit-print-color-adjust : exact; + } + //***************************** + // * FOOTER + // *****************************/ + &:after{ + content : "Made with The Homebrewery"; + position : absolute; + bottom : 0px; + left : 0px; + z-index : 100; + height : 50px; + width : 100%; + background-image : @footerImg; + background-size : cover; + padding: 28px 63px; + box-sizing: border-box; + color : lighten(@gold, 0%); + font-size: 0.7em; + } + &:nth-child(even){ + &:after{ + background-image: @footerFlipImg; + text-align: right; + } + &:before{ + left : 2px; + } + .footnote{ + left : 80px; + text-align : left; + } } + &:before{ + content : counter(phb-page-numbers); + position : absolute; + right : 2px; + bottom : 22px; + width : 50px; + font-size : 0.9em; + color : @gold; + text-align : center; + } //***************************** // * BASE // *****************************/ - p{ - padding-bottom : 0.8em; - line-height : 1.3em; - &+p{ - margin-top : -0.8em; - } - } - ul{ - margin-bottom : 0.8em; - padding-left : 1.4em; - line-height : 1.3em; - list-style-position : outside; - list-style-type : disc; - } - ol{ - margin-bottom : 0.8em; - padding-left : 1.4em; - line-height : 1.3em; - list-style-position : outside; - list-style-type : decimal; - } - //Indents after p or lists - p+p, ul+p, ol+p{ - text-indent : 1em; - } - img{ - z-index : -1; - } - strong{ - font-weight : bold; - letter-spacing : 0.03em; - } - em{ - font-style : italic; - } - sup{ - vertical-align : super; - font-size : smaller; - line-height : 0; - } - sub{ - vertical-align : sub; - font-size : smaller; - line-height : 0; - } - //***************************** - // * HEADERS - // *****************************/ - h1,h2,h3,h4{ - margin-top : 0.2em; - margin-bottom : 0.2em; - font-family : MrEaves; - font-weight : 800; - color : @headerText; - } - h1{ - column-span : all; - font-size : 0.987cm; - -webkit-column-span : all; - -moz-column-span : all; - &+p::first-letter{ - float : left; - font-family : Solbera; - font-size : 10em; - color : #222; - line-height : 0.8em; - } - } - h2{ - font-size : 0.705cm; - } - h3{ - font-size : 0.529cm; - border-bottom : 2px solid @headerUnderline; - } - h4{ - margin-bottom : 0.00em; - font-size : 0.458cm; - } - h5{ - margin-bottom : 0.2em; - font-family : ScalySansSmallCaps; - font-size : 0.423cm; - font-weight : 900; - } - - hr{ - visibility : visible; - height : 6px; - margin : 4px 0px; - background-image : @dividerImg; - background-size : 100% 100%; - border : none; - } - //***************************** - // * TABLE - // *****************************/ - table{ - .useSansSerif(); - width : 100%; - margin-bottom : 1em; - font-size : 10pt; - thead{ - font-weight : 800; - th{ - vertical-align : bottom; - padding-bottom : 0.3em; - padding-right : 0.1em; - padding-left : 0.1em; - } - } - tbody{ - tr{ - td{ - padding : 0.3em 0.1em; - } - &:nth-child(odd){ - background-color : @noteGreen; - } - } - } - } - //***************************** - // * NOTE - // *****************************/ - /* - blockquote{ - .useSansSerif(); - box-sizing : border-box; - margin-bottom : 1em; - padding : 5px 10px; - background-color : @noteGreen; - border-style : solid; - border-width : 11px; - border-image : @noteBorder 11; - border-image-outset : 9px 0px; - box-shadow : 1px 4px 14px #888; - p, ul{ - font-size : 0.352cm; - line-height : 1.1em; - } - } - */ //If a note starts a column, give it space at the top to render border //pre+blockquote, h2+blockquote, h3+blockquote, h4+blockquote, h5+blockquote { // margin-top : 13px; @@ -212,6 +95,7 @@ //***************************** // * MONSTER STAT BLOCK // *****************************/ + /* hr+blockquote{ position : relative; padding-top : 15px; @@ -271,62 +155,10 @@ border : none; } } - //Full Width - hr+hr+blockquote{ - //.useColumns(0.96); - } - //***************************** - // * FOOTER - // *****************************/ - &:after{ - content : ""; - position : absolute; - bottom : 0px; - left : 0px; - z-index : 100; - height : 50px; - width : 100%; - background-image : @footerImg; - background-size : cover; - } - &:nth-child(even){ - &:after{ - transform : scaleX(-1); - } - .pageNumber{ - left : 2px; - } - .footnote{ - left : 80px; - text-align : left; - } - } - .pageNumber{ - position : absolute; - right : 2px; - bottom : 22px; - width : 50px; - font-size : 0.9em; - color : #c9ad6a; - text-align : center; - &.auto::after { - content : counter(phb-page-numbers); - } - } - .footnote{ - position : absolute; - right : 80px; - bottom : 32px; - z-index : 150; - width : 200px; - font-size : 0.8em; - color : #c9ad6a; - text-align : right; - } + //***************************** // * EXTRAS // *****************************/ - //Modified unorder list, used in spells // hr+ul{ // margin-bottom : 0.5em; @@ -350,7 +182,6 @@ -webkit-column-break-inside : avoid; column-break-inside : avoid; overflow: hidden; /* Firefox fix */ - //Better spacing for spell blocks // h4+p+hr+ul{ // margin-top : -0.5em @@ -360,15 +191,6 @@ // text-indent : 1em; // } // Nested lists - ul ul,ol ol,ul ol,ol ul{ - margin-bottom : 0px; - margin-left : 1.5em; - } - li{ - -webkit-column-break-inside : avoid; - column-break-inside : avoid; - } - //***************************** // * SPELL LIST // *****************************/ @@ -403,7 +225,6 @@ // box-shadow : none; // } // } - //***************************** // * WIDE // *****************************/ @@ -468,41 +289,15 @@ margin-top : 8px; } */ - //***************************** - // * TABLE OF CONTENTS - // *****************************/ - .toc{ - -webkit-column-break-inside : avoid; - column-break-inside : avoid; - a{ - color : black; - text-decoration : none; - &:hover{ - text-decoration : underline; - } - } - ul{ - padding-left : 0; - list-style-type : none; - } - &>ul>li{ - margin-bottom : 10px; - } - } - - - //***************************** // * Old Stuff // *****************************/ - // //Double hr for full width elements // hr+hr+blockquote{ // column-span : all; // -webkit-column-span : all; // -moz-column-span : all; // } - //***************************** // * CLASS TABLE // *****************************/ diff --git a/shared/homebrewery/phb_style/phb.mixins.less b/shared/homebrewery/phb_style/phb.mixins.less new file mode 100644 index 0000000..9e0abaa --- /dev/null +++ b/shared/homebrewery/phb_style/phb.mixins.less @@ -0,0 +1,29 @@ +.breakAvoid(){ + column-break-inside : avoid; + -webkit-column-break-inside : avoid; +} +.pseudoBorder(){ + position : relative; + &:before{ + content : ''; + position : absolute; + z-index : -1; + box-sizing : border-box; + border-style : solid; + border-image-repeat : round; + } +} + + +.useSansSerif(){ + font-family : ScalySans; + em{ + font-family : ScalySans; + font-style : italic; + } + strong{ + font-family : ScalySans; + font-weight : 800; + letter-spacing : -0.02em; + } +} \ No newline at end of file diff --git a/statics/faq.md b/statics/faq.md index 9aa79d1..ef045cf 100644 --- a/statics/faq.md +++ b/statics/faq.md @@ -15,7 +15,11 @@ How to make spacers - +- How to skip page numbers +- How to set page number +- How to hide footers +#p1:before, #p1:after{ display:none } +#p2:before{ counter-reset: phb-page-numbers 30; } ## Changing backgrounds From 28a3f31caa400e4443344d43d850844683be0931 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 19 Mar 2017 17:26:55 -0400 Subject: [PATCH 16/21] Work on the Table of contents snippet --- .../snippets_old/tableOfContents.gen.js | 2 +- .../menubar/snippetGroup/snippetGroup.jsx | 1 - shared/homebrewery/phb_style/phb.blocks.less | 67 +++++++---- shared/homebrewery/phb_style/phb.colors.less | 1 + ...classTable.snippet.js => class.snippet.js} | 0 shared/homebrewery/snippets/brew/index.js | 5 +- .../homebrewery/snippets/brew/toc.snippet.js | 112 ++++++++++++++++++ statics/faq.md | 74 +++++++++++- statics/test.brew.md | 24 ++-- 9 files changed, 242 insertions(+), 44 deletions(-) rename shared/homebrewery/snippets/brew/{classTable.snippet.js => class.snippet.js} (100%) create mode 100644 shared/homebrewery/snippets/brew/toc.snippet.js diff --git a/shared/depricated/snippets_old/tableOfContents.gen.js b/shared/depricated/snippets_old/tableOfContents.gen.js index 448b2f4..ed1381a 100644 --- a/shared/depricated/snippets_old/tableOfContents.gen.js +++ b/shared/depricated/snippets_old/tableOfContents.gen.js @@ -48,7 +48,7 @@ const getTOC = (pages) => { } module.exports = function(brew){ - const pages = brew.split('\\page'); + const TOC = getTOC(pages); const markdown = _.reduce(TOC, (r, g1, idx1)=>{ r.push(`- **[${idx1 + 1} ${g1.title}](#p${g1.page})**`) diff --git a/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx b/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx index 8268e0e..fd36d7a 100644 --- a/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx +++ b/shared/homebrewery/brewEditor/menubar/snippetGroup/snippetGroup.jsx @@ -6,7 +6,6 @@ const cx = require('classnames'); const SnippetGroup = React.createClass({ getDefaultProps: function() { return { - brew : '', name : '', icon : 'fa-rocket', snippets : [], diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less index 2e3c777..f663054 100644 --- a/shared/homebrewery/phb_style/phb.blocks.less +++ b/shared/homebrewery/phb_style/phb.blocks.less @@ -1,5 +1,4 @@ - /////////////////// .spell{ ul:first-of-type{ @@ -16,7 +15,7 @@ .monster{ .breakAvoid(); .pseudoBorder(); - padding : 10px 5px; + padding : 10px 5px; table{ color : @headerText; } @@ -86,7 +85,6 @@ border-image-width : 47px; } } - .footnote{ position : absolute; right : 80px; @@ -97,13 +95,46 @@ color : @gold; text-align : right; } - - //***************************** // * TABLE OF CONTENTS // *****************************/ .toc{ - .breakAvoid(); + h1{ + text-align : center; + } + li{ + margin-bottom : 3px; + strong, em::after{ + font-family : BookInsanity; + font-size : 13px; + font-style : normal; + font-weight : 500; + color : black; + } + em{ + display : block; + overflow : hidden; + width : auto; + font-style : normal; + white-space : nowrap; + &:after{ + content : " .............................................................................................................."; + } + } + strong{ + float : right; + margin-left : 4px; + } + h3{ + margin-top : 15px; + em{ color : @crimson; } + em::after{ display : none; } + } + h4{ + margin-top : 10px; + em{ color : @crimson; } + } + } a{ color : black; text-decoration : none; @@ -115,17 +146,7 @@ padding-left : 0; list-style-type : none; } - &>ul>li{ - margin-bottom : 10px; - } } - - - - - - - .wide{ column-span : all; -webkit-column-span : all; @@ -133,25 +154,25 @@ } .oneColumn{ column-count : 1; - column-gap : 1cm; +// column-gap : 1cm; } .twoColumn{ column-count : 2; - column-gap : 1cm; + //column-fill: auto; + ////column-gap : 1cm; } .threeColumn{ column-count : 3; - column-gap : 1cm; + //column-gap : 1cm; } .fourColumn{ column-count : 4; - column-gap : 1cm; + //column-gap : 1cm; } .columnSplit{ visibility : hidden; - -webkit-column-break-after : always; - break-after : always; - -moz-column-break-after : always; + -webkit-column-break-bfore : always; + break-before : column; } .brushed{ border-image-outset : 25px 17px; diff --git a/shared/homebrewery/phb_style/phb.colors.less b/shared/homebrewery/phb_style/phb.colors.less index 3f92db1..35f82f2 100644 --- a/shared/homebrewery/phb_style/phb.colors.less +++ b/shared/homebrewery/phb_style/phb.colors.less @@ -20,6 +20,7 @@ } } +@crimson : #58180D; @red : #9c2b1b; @gold : #c9ad6a; //brown? @green : #e0e5c1; diff --git a/shared/homebrewery/snippets/brew/classTable.snippet.js b/shared/homebrewery/snippets/brew/class.snippet.js similarity index 100% rename from shared/homebrewery/snippets/brew/classTable.snippet.js rename to shared/homebrewery/snippets/brew/class.snippet.js diff --git a/shared/homebrewery/snippets/brew/index.js b/shared/homebrewery/snippets/brew/index.js index d1f9b0b..0cb4d4f 100644 --- a/shared/homebrewery/snippets/brew/index.js +++ b/shared/homebrewery/snippets/brew/index.js @@ -3,9 +3,10 @@ const _ = require('lodash'); module.exports = _.merge( require('./spell.snippet.js'), require('./table.snippet.js'), - require('./classTable.snippet.js'), + require('./class.snippet.js'), require('./note.snippet.js'), - require('./monster.snippet.js') + require('./monster.snippet.js'), + require('./toc.snippet.js') //wide diff --git a/shared/homebrewery/snippets/brew/toc.snippet.js b/shared/homebrewery/snippets/brew/toc.snippet.js new file mode 100644 index 0000000..bd41168 --- /dev/null +++ b/shared/homebrewery/snippets/brew/toc.snippet.js @@ -0,0 +1,112 @@ +const _ = require('lodash'); +const Store = require('homebrewery/brew.store.js'); + +const getTOC = (text) => { + const pages = text.split('\\page'); + const add1 = (title, page)=>{ + res.push({ + title : title, + page : page + 1, + children : [] + }); + } + const add2 = (title, page)=>{ + if(!_.last(res)) add1('', page); + _.last(res).children.push({ + title : title, + page : page + 1, + children : [] + }); + } + const add3 = (title, page)=>{ + if(!_.last(res)) add1('', page); + if(!_.last(_.last(res).children)) add2('', page); + _.last(_.last(res).children).children.push({ + title : title, + page : page + 1, + children : [] + }); + } + + let res = []; + _.each(pages, (page, pageNum)=>{ + const lines = page.split('\n'); + _.each(lines, (line) => { + if(_.startsWith(line, '# ')){ + const title = line.replace('# ', ''); + add1(title, pageNum) + } + if(_.startsWith(line, '## ')){ + const title = line.replace('## ', ''); + add2(title, pageNum); + } + if(_.startsWith(line, '### ')){ + const title = line.replace('### ', ''); + add3(title, pageNum); + } + }) + }); + return res; +} + + +module.exports = { + //TODO: TOC not perfect yet + + toc : (text)=>{ + text = text || Store.getBrewCode(); + + console.log(getTOC(text)); + + const TOC = getTOC(text) + + const markdown = _.reduce(TOC, (r, g1, idx1)=>{ + r.push(`- ### [**${g1.page}** *${g1.title}*](#p${g1.page})`) + if(g1.children.length){ + _.each(g1.children, (g2, idx2) => { + r.push(` - #### [**${g2.page}** *${g2.title}*](#p${g2.page})`) + if(g2.children.length){ + _.each(g2.children, (g3, idx3) => { + r.push(` - [**${g3.page}** *${g3.title}*](#p${g3.page})`) + }); + } + }); + } + return r; + }, []).join('\n'); + + + + return `{{toc +# Contents + +${markdown} + +}}`; +/* + +- ### [**4** *Preface*](#p3) +- ### [**5** *Introduction*](#p3) + - [**5** *Worlds of Adventure*](#p5) + - [**6** *Using This Book*](#p5) + - [**6** *How to Play*](#p5) + - [**7** *Adventures*](#p5) + +- ### [**5** *Introduction*](#p3) + - #### [**5** *Worlds of Adventure*](#p5) + - [**6** *Using This Book*](#p5) + - [**6** *How to Play*](#p5) + - #### [**7** *Adventures*](#p5) + + + + + + + +}} + + +`;*/ + } +} \ No newline at end of file diff --git a/statics/faq.md b/statics/faq.md index ef045cf..59eb9bd 100644 --- a/statics/faq.md +++ b/statics/faq.md @@ -9,7 +9,9 @@ # Images - +Image basics +- background images +- Adding brushes How to make spacers @@ -22,6 +24,18 @@ How to make spacers #p2:before{ counter-reset: phb-page-numbers 30; } +- blockquotes, cite + +styling images + + +# Print +- Saving ink +- Changing page size +- Printing to PDF + + + ## Changing backgrounds {{wide In style @@ -33,3 +47,61 @@ In style ``` }} +## Changes in v3 + +``` ``` -> \column + + +\page + +## Columns +{{wide,twoColumn +This is how columns work sdfsdfsdf +``` +{{twoColumn + +| d4 | Manicurist Level | Equipment | +|:---:|:---:|:---| +| 1 | 1st | The four fragments of the Disk of Madness | +| 2 | 3rd | Broch of Air Blasts | +| 3 | 5th | The four fragments of the Disk of Madness | +| 4 | 7th | 3rd born child | + + +| d4 | Manicurist Level | Equipment | +|:---:|:---:|:---| +| 1 | 1st | The four fragments of the Disk of Madness | +| 2 | 3rd | Broch of Air Blasts | +| 3 | 5th | The four fragments of the Disk of Madness | +| 4 | 7th | 3rd born child | + +}} + +``` + +\column + + +{{twoColumn + +| d4 | Manicurist Level | Equipment | +|:---:|:---:|:---| +| 1 | 1st | The four fragments of the Disk of Madness | +| 2 | 3rd | Broch of Air Blasts | +| 3 | 5th | The four fragments of the Disk of Madness | +| 4 | 7th | 3rd born child | + + +| d4 | Manicurist Level | Equipment | +|:---:|:---:|:---| +| 1 | 1st | The four fragments of the Disk of Madness | +| 2 | 3rd | Broch of Air Blasts | +| 3 | 5th | The four fragments of the Disk of Madness | +| 4 | 7th | 3rd born child | + +}} + +}} + +this is after + diff --git a/statics/test.brew.md b/statics/test.brew.md index 0442caa..9fe7bb0 100644 --- a/statics/test.brew.md +++ b/statics/test.brew.md @@ -34,18 +34,13 @@ This tool will **always** be free, never have ads, and I will never offer any "p }} +> This is a cool blockquote fdgfgsfg sfd sdfsdfsdfsdfsdfsdf sdfsdfsdfssdfsdffgsdfgsdfg +> You know? +> +> One with quotes and what not +> yeah yeah yeah +> {{cite -- Very cool person }} ->##### PDF Exporting -> PDF Printing works best in Chrome. If you are having quality/consistency issues, try using Chrome to print instead. -> -> After clicking the "Print" item in the navbar a new page will open and a print dialog will pop-up. -> * Set the **Destination** to "Save as PDF" -> * Set **Paper Size** to "Letter" -> * If you are printing on A4 paper, make sure to have the "A4 page size snippet" in your brew -> * In **Options** make sure "Background Images" is selected. -> * Hit print and enjoy! You're done! -> -> If you want to save ink or have a monochrome printer, add the **Ink Friendly** snippet to your brew before you print {{note ##### PDF Exporting @@ -64,7 +59,7 @@ This tool will **always** be free, never have ads, and I will never offer any "p }} - +![test](http://i.imgur.com/hMna6G0.png) ``` cool stuff @@ -91,12 +86,9 @@ If you are looking for more 5e Homebrew resources check out [r/UnearthedArcana]( - - -
1
-
PART 1 | FANCINESS
+{{footnote PART 1 | FANCINESS }} \page From 20371a8b3d1a16b49260af16ba7c690c718fac84 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 19 Mar 2017 20:23:19 -0400 Subject: [PATCH 17/21] Adding the brew title to the print page title, so downloads are named properly --- client/homebrew/pages/printPage/printPage.jsx | 15 +++++++++++++-- client/homebrew/pages/printPage/printPage.less | 16 +++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index 356967d..1643b23 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -3,6 +3,8 @@ const _ = require('lodash'); const cx = require('classnames'); const Markdown = require('homebrewery/markdown.js'); +const Headtags = require('vitreum/headtags'); + const PrintPage = React.createClass({ getDefaultProps: function() { return { @@ -30,7 +32,7 @@ const PrintPage = React.createClass({ } if(this.props.query.dialog) window.print(); }, - //TODO: This is pretty bad + //TODO: Print page shouldn't replicate functionality in brew renderer renderStyle : function(){ if(!this.state.brew.style) return; return @@ -45,8 +47,17 @@ const PrintPage = React.createClass({ }); }, + renderPrintInstructions : function(){ + return
+ Hey, I'm really cool instructions!!!!! + +
+ }, + render : function(){ - return
+ return
+ {this.state.brew.title} + {this.renderPrintInstructions()} {this.renderStyle()} {this.renderPages()}
diff --git a/client/homebrew/pages/printPage/printPage.less b/client/homebrew/pages/printPage/printPage.less index 0d9e7b6..6430ef7 100644 --- a/client/homebrew/pages/printPage/printPage.less +++ b/client/homebrew/pages/printPage/printPage.less @@ -1,3 +1,17 @@ -.printPage{ +.printPage{ + position : relative; + @media print{ + .printInstructions{ + display : none; + } + } + .printInstructions{ + position : absolute; + top : 0px; + right : 0px; + z-index : 100000; + padding : 30px; + background-color : @blue; + } } \ No newline at end of file From ee1827eab06e63edd0764879397a8cdcf966f6c1 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Tue, 21 Mar 2017 00:09:37 -0400 Subject: [PATCH 18/21] Trying to get it working --- client/homebrew/navbar/issue.navitem.jsx | 7 ++++++- client/homebrew/pages/newPage/newPage.jsx | 2 +- shared/naturalcrit/nav/nav.jsx | 11 ++++++----- shared/naturalcrit/nav/nav.less | 20 ++++++++++++++++++++ 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/client/homebrew/navbar/issue.navitem.jsx b/client/homebrew/navbar/issue.navitem.jsx index 3631ce7..60adf4e 100644 --- a/client/homebrew/navbar/issue.navitem.jsx +++ b/client/homebrew/navbar/issue.navitem.jsx @@ -2,7 +2,12 @@ var React = require('react'); var Nav = require('naturalcrit/nav/nav.jsx'); module.exports = function(props){ - return + return report issue }; \ No newline at end of file diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 9d7c028..2560c8b 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -47,7 +47,7 @@ const NewPage = React.createClass({ get PDF - + diff --git a/shared/naturalcrit/nav/nav.jsx b/shared/naturalcrit/nav/nav.jsx index 6439548..0f7ce49 100644 --- a/shared/naturalcrit/nav/nav.jsx +++ b/shared/naturalcrit/nav/nav.jsx @@ -38,28 +38,29 @@ var Nav = { href : null, newTab : false, onClick : function(){}, - color : null + color : null, + collaspe : false }; }, handleClick : function(){ this.props.onClick(); }, render : function(){ - var classes = cx('navItem', this.props.color, this.props.className); + var classes = cx('navItem', this.props.color, this.props.className, {collaspe : this.props.collaspe}); var icon; if(this.props.icon) icon = ; - const props = _.omit(this.props, ['newTab']); + const props = _.omit(this.props, ['newTab', 'collaspe']); if(this.props.href){ return
- {this.props.children} + {this.props.children} {icon} }else{ return
- {this.props.children} + {this.props.children} {icon}
} diff --git a/shared/naturalcrit/nav/nav.less b/shared/naturalcrit/nav/nav.less index 94ce5ca..de26c01 100644 --- a/shared/naturalcrit/nav/nav.less +++ b/shared/naturalcrit/nav/nav.less @@ -49,10 +49,30 @@ nav{ color : white; text-decoration : none; text-transform : uppercase; + display: inline-block; i{ margin-left : 5px; font-size : 13px; } + &.collaspe{ + //width : 60px; + overflow: hidden; + background-color: red; + span{ + white-space: nowrap; + width : 0%; + display: inline-block; + overflow: hidden; + visibility: hidden; + } + &:hover{ + span{ + visibility: visible; + width : auto; + } + } + } + &.tealLight:hover{ background-color : @tealLight }; &.teal:hover{ background-color : @teal }; &.greenLight:hover{ background-color : @greenLight }; From 1946a50ce0a78bf8b35ea80831e5a94bebdaae1b Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Tue, 21 Mar 2017 00:15:24 -0400 Subject: [PATCH 19/21] Converted a few nav items over --- client/homebrew/navbar/patreon.navitem.jsx | 1 + client/homebrew/pages/homePage/homePage.jsx | 8 +++--- shared/naturalcrit/nav/nav.less | 28 ++++++++++++--------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/client/homebrew/navbar/patreon.navitem.jsx b/client/homebrew/navbar/patreon.navitem.jsx index a7a53d3..36a51d1 100644 --- a/client/homebrew/navbar/patreon.navitem.jsx +++ b/client/homebrew/navbar/patreon.navitem.jsx @@ -3,6 +3,7 @@ var Nav = require('naturalcrit/nav/nav.jsx'); module.exports = function(props){ return - - - - Changelog + + + + What's new diff --git a/shared/naturalcrit/nav/nav.less b/shared/naturalcrit/nav/nav.less index de26c01..72d3027 100644 --- a/shared/naturalcrit/nav/nav.less +++ b/shared/naturalcrit/nav/nav.less @@ -1,3 +1,4 @@ + nav{ background-color : #333; .navContent{ @@ -41,6 +42,7 @@ nav{ } .navItem{ .animate(background-color); + display : inline-block; padding : 8px 12px; cursor : pointer; background-color : #333; @@ -49,30 +51,32 @@ nav{ color : white; text-decoration : none; text-transform : uppercase; - display: inline-block; i{ margin-left : 5px; font-size : 13px; } &.collaspe{ - //width : 60px; - overflow: hidden; - background-color: red; + overflow : hidden; + i{ + margin-left : 0px; + } span{ - white-space: nowrap; - width : 0%; - display: inline-block; - overflow: hidden; - visibility: hidden; + display : inline-block; + visibility : hidden; + overflow : hidden; + width : 0px; + white-space : nowrap; } &:hover{ span{ - visibility: visible; - width : auto; + visibility : visible; + width : auto; + } + i{ + margin-left : 5px; } } } - &.tealLight:hover{ background-color : @tealLight }; &.teal:hover{ background-color : @teal }; &.greenLight:hover{ background-color : @greenLight }; From f99bcabad025fdeeb75e0d0d2fbaa119c0087d66 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Mar 2017 12:20:17 -0400 Subject: [PATCH 20/21] Updating the build scripts --- client/homebrew/navbar/recent.navitem.jsx | 5 +++++ scripts/build.js | 25 +++++++++++----------- scripts/dev.js | 26 +++++++++++------------ 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/client/homebrew/navbar/recent.navitem.jsx b/client/homebrew/navbar/recent.navitem.jsx index bd1e1e7..e2a4b6f 100644 --- a/client/homebrew/navbar/recent.navitem.jsx +++ b/client/homebrew/navbar/recent.navitem.jsx @@ -8,6 +8,9 @@ var Nav = require('naturalcrit/nav/nav.jsx'); const VIEW_KEY = 'homebrewery-recently-viewed'; const EDIT_KEY = 'homebrewery-recently-edited'; +//DEPRICATED + + var BaseItem = React.createClass({ getDefaultProps: function() { return { @@ -28,6 +31,8 @@ var BaseItem = React.createClass({ }, componentDidMount: function() { + console.log('Recent nav item is depricated'); + var brews = JSON.parse(localStorage.getItem(this.props.storageKey) || '[]'); brews = _.filter(brews, (brew)=>{ diff --git a/scripts/build.js b/scripts/build.js index 2f6af1a..fbdce82 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -2,19 +2,20 @@ const label = 'build'; console.time(label); const clean = require('vitreum/steps/clean.js'); -const jsx = require('vitreum/steps/jsx.js').partial; -const lib = require('vitreum/steps/libs.js').partial; -const less = require('vitreum/steps/less.js').partial; -const asset = require('vitreum/steps/assets.js').partial; +const jsx = require('vitreum/steps/jsx.js'); +const lib = require('vitreum/steps/libs.js'); +const less = require('vitreum/steps/less.js'); +const asset = require('vitreum/steps/assets.js'); const Proj = require('./project.json'); -clean() - .then(lib(Proj.libs)) - .then(jsx('homebrew', './client/homebrew/homebrew.jsx', Proj.libs, ['./shared'])) - .then(less('homebrew', ['./shared'])) - .then(jsx('admin', './client/admin/admin.jsx', Proj.libs, ['./shared'])) - .then(less('admin', ['./shared'])) - .then(asset(Proj.assets, ['./shared', './client'])) - .then(console.timeEnd.bind(console, label)) +Promise.resolve() + .then(()=>clean()) + .then(()=>lib(Proj.libs)) + .then(()=>jsx('homebrew', './client/homebrew/homebrew.jsx', Proj.libs, ['./shared'])) + .then((deps)=>less('homebrew', ['./shared'], deps)) + .then(()=>jsx('admin', './client/admin/admin.jsx', Proj.libs, ['./shared'])) + .then((deps)=>less('admin', ['./shared'], deps)) + .then(()=>asset(Proj.assets, ['./shared', './client'])) + .then(()=>console.timeEnd.bind(console, label)) .catch(console.error); \ No newline at end of file diff --git a/scripts/dev.js b/scripts/dev.js index c112e84..b79137a 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -1,21 +1,21 @@ const label = 'dev'; console.time(label); -const jsx = require('vitreum/steps/jsx.watch.js').partial; -const less = require('vitreum/steps/less.watch.js').partial; -const assets = require('vitreum/steps/assets.watch.js').partial; -const server = require('vitreum/steps/server.watch.js').partial; -const livereload = require('vitreum/steps/livereload.js').partial; +const jsx = require('vitreum/steps/jsx.watch.js'); +const less = require('vitreum/steps/less.watch.js'); +const assets = require('vitreum/steps/assets.watch.js'); +const server = require('vitreum/steps/server.watch.js'); +const livereload = require('vitreum/steps/livereload.js'); const Proj = require('./project.json'); Promise.resolve() - .then(jsx('homebrew', './client/homebrew/homebrew.jsx', Proj.libs, './shared')) - .then(less('homebrew', './shared')) - .then(jsx('admin', './client/admin/admin.jsx', Proj.libs, './shared')) - .then(less('admin', './shared')) - .then(assets(Proj.assets, ['./shared', './client'])) - .then(livereload()) - .then(server('./server.js', ['server'])) - .then(console.timeEnd.bind(console, label)) + .then(()=>jsx('homebrew', './client/homebrew/homebrew.jsx', Proj.libs, './shared')) + .then((deps)=>less('homebrew', './shared', deps)) + .then(()=>jsx('admin', './client/admin/admin.jsx', Proj.libs, './shared')) + .then((deps)=>less('admin', './shared', deps)) + .then(()=>assets(Proj.assets, ['./shared', './client'])) + .then(()=>livereload()) + .then(()=>server('./server.js', ['server'])) + .then(()=>console.timeEnd.bind(console, label)) .catch(console.error) \ No newline at end of file From d5f04ca2b61b2f330daa44fee13347c4035801cb Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 26 Mar 2017 15:10:36 -0400 Subject: [PATCH 21/21] Shadows now being drawn as a :after element. Beauty --- .../phb_style/img/note_border - Copy.png | Bin 0 -> 530 bytes .../homebrewery/phb_style/img/note_border.pdn | Bin 0 -> 66727 bytes .../phb_style/img/note_border_shadow.png | Bin 0 -> 1204 bytes .../phb_style/img/shadow_border.pdn | Bin 0 -> 11737 bytes .../phb_style/img/shadow_border.png | Bin 0 -> 1069 bytes shared/homebrewery/phb_style/phb.blocks.less | 48 +++++++++++------- shared/homebrewery/phb_style/phb.img.less | 2 + shared/homebrewery/phb_style/phb.mixins.less | 21 +++++++- .../snippets/brew/monster.snippet.js | 46 +++++++++++++++-- .../homebrewery/snippets/brew/random.data.js | 3 +- 10 files changed, 95 insertions(+), 25 deletions(-) create mode 100644 shared/homebrewery/phb_style/img/note_border - Copy.png create mode 100644 shared/homebrewery/phb_style/img/note_border.pdn create mode 100644 shared/homebrewery/phb_style/img/note_border_shadow.png create mode 100644 shared/homebrewery/phb_style/img/shadow_border.pdn create mode 100644 shared/homebrewery/phb_style/img/shadow_border.png diff --git a/shared/homebrewery/phb_style/img/note_border - Copy.png b/shared/homebrewery/phb_style/img/note_border - Copy.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7b30188c1e90112fcce7f91b7ad48ec815f63c GIT binary patch literal 530 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 literal 0 HcmV?d00001 diff --git a/shared/homebrewery/phb_style/img/note_border_shadow.png b/shared/homebrewery/phb_style/img/note_border_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..87dd2bb3d1c9fec54d193963832c3bd271d52d8d GIT binary patch literal 1204 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MV!3HGNn;9%xk z7srr_xVLkx`+Wl?+WM>SJd!HpcI?>EvO`2lH?Xs<@4iCRe}{+m9#^dF9T$hM2+^AA z;(X}$1oO?C)^1LpAF2F#=GVO^CtIAEv-kSvbKAdJ8vZ_G^xAs&k=6F~Z;EF?uXT#wNVv^e3Ld?=-=zU#W^MCb<3?= z-UY43cOD8%*X~nqQopSh9N^=)&}>RZZu9P?i60Bb&? znRj~a>MGsD5*yi`t9FGRGQ!JUmg!m?QS~eAPWJaKz5PhP_U!`4W3M|bG|zSUL>F{; z&v|q$xaspnr!uZ@ma|gM_;KIMO}o|P9P>zIyT!4u8H#T*V+y`;f7>nGl&0Sa)gg9# z$FZM4soa=~KCW-Jv-T<(L47@3pY z=LSSqbFM3R_VU0}C-d4*{h#x?_i3!_ihi_p#oUIS_c^z2m6mzPmA>Qf!$aF$`)dmh zSUwD@;QSs^Be-?)&dWgQ$1LU+MUp!X1B1ruWi#`%-xi^>bP0 Hl+XkKb3ZZk literal 0 HcmV?d00001 diff --git a/shared/homebrewery/phb_style/img/shadow_border.pdn b/shared/homebrewery/phb_style/img/shadow_border.pdn new file mode 100644 index 0000000000000000000000000000000000000000..46681ccbce000e7d5238e10e6d7c75b57749358c GIT binary patch literal 11737 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 Ny)v8HF(fHZ{|o;RkuU%N literal 0 HcmV?d00001 diff --git a/shared/homebrewery/phb_style/img/shadow_border.png b/shared/homebrewery/phb_style/img/shadow_border.png new file mode 100644 index 0000000000000000000000000000000000000000..4a07c8b6e2248ba4769ea3fed83ce7075988cfb8 GIT binary patch literal 1069 zcmeAS@N?(olHy`uVBq!ia0vp^DL`z`!3HG7R_7)FDVB6cUq=Rpjs4tz5?O(K&H|6f zVg?4jgCNYfV`BDOprB-lYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoqfu5nU33GH60|WCa zPZ!6KinzCT@>hqXinM)vJYPgt)7!;+$|NNpk1IkhOz|EHoUSbUChq&cJ>%~NX>-%f zb1l#BsVKO{`(66!8M~P4YrdX2aP#+)%P&jp&dgak@9n%*H)M6` z-M0!3@mTY0v?(5BJd{yfHv>8deV`8Px3oV}f(jY8+ z_4U>9q5IcCWx5NOr98g%so&CC!X(aob@{6MVL+nxj5ib)RSQH{Y+n zvp|mQ)Z8YKyjSapU-5&QxUKK=!e{P{f7`?AtYdgoEP0J#ylB#P%Zhz#ZdIT87l9Bj z7fL#A+0b)i@2kUbQ{L-7$-BD37U~W@?w>1fNpiR8rYzbr;p8PJHE-^jI=U&FsKhz# z*!o32y8pRCea_wO$})P++m*lYTDPBHnSbMEnfL9*uP(p({A&Hx@T>N#*RRfBRWDy@ zcz{Vb$KVi`@f(9Xzo%{6I@?aN%)oZF+o}Ak_N(ec{~8^S;n{FN#c0DJoy(0+7gqLB{w?~s#byu7JaP8YEk7cCP3zwo9&dmnnuiH%pTl6mumxwLf|!WRDe1lUTh}L^++`YL3#e^z8i( z-*vk?4sd9nnPy~g_GaVPW2IYtmZX%rb_H(!FXPqo`^T|;+`qrwtUV3$`!u6XtL|w# zzuCNIorhu4w|R#6IcU*G)5S5kd_df(|S6@}Ys zHzwY5-Tl4`=<>v=D-RfCXX#6J%AfdkYKu#czDdvSi0}W8vMug75t8EjRySEve?sQR zMLMgyOSYTOQDQng_gqix= 0 ? '+'+mod : mod ) + ")" + }).join('|') + '|'; +} + +const getAttributes = ()=>{ + + + + + return ` +- **Saving Throws** +- **Condition Immunities** " + genList(["groggy", "swagged", "weak-kneed", "buzzed", "groovy", "melancholy", "drunk"], 3), +- **Senses** passive Perception " + _.random(3, 20), +- **Languages** ${Data.rand(["Common", "Pottymouth", "Gibberish", "Latin", "Jive"], 2).join(', ')} +- **Challenge** ${_.random(0, 15)} (${_.random(10,10000)} XP) +`; + +} + +const getAbilities = ()=>{ + +} + +const getActions = ()=>{ + + +} + + module.exports = { monster : ()=>{ @@ -21,15 +54,18 @@ module.exports = { |STR|DEX|CON|INT|WIS|CHA| |:---:|:---:|:---:|:---:|:---:|:---:| -${stats} +${getStats()} --- -- **Condition Immunities** " + genList(["groggy", "swagged", "weak-kneed", "buzzed", "groovy", "melancholy", "drunk"], 3), -- **Senses** passive Perception " + _.random(3, 20), -- **Languages** " + genList(["Common", "Pottymouth", "Gibberish", "Latin", "Jive"], 2), -- **Challenge** " + _.random(0, 15) + " (" + _.random(10,10000)+ " XP)", +${getAttributes()} +--- + +Abilities + + +### Actions }}` diff --git a/shared/homebrewery/snippets/brew/random.data.js b/shared/homebrewery/snippets/brew/random.data.js index 4be3f58..d360a2d 100644 --- a/shared/homebrewery/snippets/brew/random.data.js +++ b/shared/homebrewery/snippets/brew/random.data.js @@ -2,7 +2,8 @@ const _ = require('lodash'); const Data = { rand : (name, max = 1, min = 1)=>{ - return _.sampleSize(Data[name], _.random(min, max)); + const data = (Data[name] ? Data[name] : name); + return _.sampleSize(data, _.random(min, max)); }, titles : [