update for foundry 0.8
12 files changed, 182 insertions(+), 141 deletions(-)

A => Bearbones.js
R module/actor.js => 
R module/bearbones.js => 
R module/index.js => 
R module/sheets/HeroSheet.js => 
A => modules/bear_actor.js
A => modules/bear_sheet.js
A => modules/bear_token.js
M system.json
M template.json
A => templates/sheets/bear-sheet.html
R templates/sheets/hero-sheet.hbs => 
A => Bearbones.js +19 -0
@@ 0,0 1,19 @@ 
+import BearActor from './modules/bear_actor.js';
+import BearSheet from './modules/bear_sheet.js';
+
+Hooks.once("init", function() {
+    console.log('Bearbones | look ma no brains')
+
+    game.bearbones2 = {
+    }
+
+    CONFIG.Actor.documentClass = BearActor;
+
+    Actors.unregisterSheet("core", ActorSheet);
+    Actors.registerSheet("bearbones2", BearSheet, {
+        // types: ["pc", "enemy", "vehicle"],
+        makeDefault: true,
+        // label: "Bearbones.CharacterSheet"
+    });
+
+});
  No newline at end of file

          
R module/actor.js =>  +0 -44
@@ 1,44 0,0 @@ 
-
-export default class BearActor extends Actor {
-
-    /** @override */
-    static async create(data, options={}) {
-        const default_image = "systems/bearbones/icons/npc_spear.png"
-        data.token = data.token || {};
-        if ( data.type === "pc" ) {
-            mergeObject(data.token, {
-                vision: true,
-                dimSight: 0,
-                brightSight: 10000,
-                actorLink: true,
-                disposition: 1,
-                img: default_image,
-                displayName:TOKEN_DISPLAY_MODES.NEVER,
-                displayBars: TOKEN_DISPLAY_MODES.NEVER,
-                bar1: {attribute: "combat.health"},
-            }, {overwrite: false});
-            data.img = data.img || default_image;
-        } else if ( data.type === "enemy" ) {
-            const default_image = "systems/bearbones/icons/npc_angery.png"
-            mergeObject(data.token, {
-                vision: false,
-                actorLink: false,
-                disposition: -1,
-                img: default_image,
-                displayName:TOKEN_DISPLAY_MODES.HOVER,
-                displayBars: TOKEN_DISPLAY_MODES.OWNER,
-                bar1: {attribute: "combat.health"},
-            }, {overwrite: false});
-            data.img = data.img || default_image;
-        }
-        return super.create(data, options);
-    }
-
-    /** @override */
-    async update(data, options={}) {
-        // Perform the update
-        return super.update(data, options);
-    }
-
-
-}
  No newline at end of file

          
R module/bearbones.js =>  +0 -17
@@ 1,17 0,0 @@ 
-import { bearbones } from "./index.js";
-import HeroSheet from "./sheets/HeroSheet.js";
-import BearActor from "./actor.js";
-
-Hooks.once("init", function () {
-    console.log('Bearbones | look ma no brains')
-
-    CONFIG.bearbones = bearbones;
-    CONFIG.Actor.entityClass = BearActor;
-
-    Actors.unregisterSheet("core", ActorSheet);
-    Actors.registerSheet("bearbones", HeroSheet, {makeDefault: true});
-
-    // Actors.unregisterSheet("core", Actor);
-    // Actors.registerSheet("bearbones", BearActor, {makeDefault: true});
-
-})
  No newline at end of file

          
R module/index.js =>  +0 -1
@@ 1,1 0,0 @@ 
-export const bearbones = {};
  No newline at end of file

          
R module/sheets/HeroSheet.js =>  +0 -15
@@ 1,15 0,0 @@ 
-export default class HeroSheet extends ActorSheet {
-    static get defaultOptions () {
-        return mergeObject(super.defaultOptions, {
-            classes: ["bearbones", "sheet"],
-            template: `systems/bearbones/templates/sheets/hero-sheet.hbs`,
-            width: 600,
-            height: 600,
-            // tabs: [{navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "bio"}],
-        });
-    }
-    getData() {
-        const data = super.getData();
-        return data;
-    }
-}
  No newline at end of file

          
A => modules/bear_actor.js +70 -0
@@ 0,0 1,70 @@ 
+
+export default class BearActor extends Actor {
+
+    async _preCreate(data, options, user) {
+        await super._preCreate(data, options, user);
+        const sourceId = this.getFlag("core", "sourceId");
+        if (sourceId?.startsWith("Compendium.")) return;
+
+        // Player character configuration
+        if (this.type === "character") {
+            this.data.token.update({ 
+                vision: true,
+                actorLink: true,
+                dimSight: 0,
+                brightSight: 0,
+                disposition: 1,
+                displayName: CONST.TOKEN_DISPLAY_MODES.ALWAYS,
+                displayBars: CONST.TOKEN_DISPLAY_MODES.OWNER,
+                bar1: {attribute: "combat.health"},
+                img: "systems/bearbones2/icons/npc.png",
+            });
+            this.data.update({img: "systems/bearbones2/icons/npc.png"})
+        } else if (this.type === "enemy") {
+            this.data.token.update({ 
+                vision: false,
+                actorLink: true,
+                disposition: -1,
+                displayName: CONST.TOKEN_DISPLAY_MODES.OWNER,
+                displayBars: CONST.TOKEN_DISPLAY_MODES.ALWAYS,
+                bar1: {attribute: "combat.health"},
+                img: "systems/bearbones2/icons/npc_angery.png",
+            });
+            this.data.update({img: "systems/bearbones2/icons/npc_angery.png"})
+        } else if (this.type === "object") {
+            this.data.token.update({ 
+                vision: false,
+                actorLink: true,
+                disposition: 0,
+                displayName: CONST.TOKEN_DISPLAY_MODES.HOVER,
+                displayBars: CONST.TOKEN_DISPLAY_MODES.NONE,
+                img: "systems/bearbones2/icons/npc_spear.png",
+            });
+            this.data.update({img: "systems/bearbones2/icons/npc_spear.png"})
+        }
+    }
+
+
+    async _preUpdate(changed, options, user) {
+        await super._preUpdate(changed, options, user);
+
+        if (changed.data && changed.data.darkvision === true){
+            this.data.token.update({
+                dimSight: 60,
+            });
+        } else if (changed.data && changed.data.darkvision === false) {
+            this.data.token.update({
+                dimSight: 0,
+            });
+        }
+
+        const docs_to_update = this.getActiveTokens(true).map(token => {
+            console.log(token);
+            token.data.dimSight = this.data.token.dimSight;
+            return token.data;
+        });
+
+        return canvas.scene?.updateEmbeddedDocuments("Token", docs_to_update);
+    }
+
+}
  No newline at end of file

          
A => modules/bear_sheet.js +17 -0
@@ 0,0 1,17 @@ 
+
+export default class BearSheet extends ActorSheet {
+    static get defaultOptions() {
+        return mergeObject(super.defaultOptions, {
+        classes: ["bearbones2", "sheet", "actor"],
+        template: `systems/bearbones2/templates/sheets/bear-sheet.html`,
+        width: 720,
+        height: 680
+      });
+    }
+    getData() {
+        const data = super.getData();
+        data.isGM = game.user.isGM;
+        console.log(data);
+        return data;
+    }
+}
  No newline at end of file

          
A => modules/bear_token.js +0 -0

        
M system.json +8 -10
@@ 1,17 1,15 @@ 
 {
-    "name": "bearbones",
-    "title": "Bearbones is Bearbones",
+    "name": "bearbones2",
+    "title": "Bearbones is Bearbones 2",
     "description": "My Dog ate my Character Sheet",
-    "esmodules": [
-        "module/bearbones.js"
-    ],
-    "styles": [
-        "styles/style.css"
-    ],
     "packs": [],
     "languages": [],
     "gridDistance": "5",
     "gridUnits": "ft",
-    "primaryTokenAttribute": "health",
-    "initiative": "1d20"
+    "primaryTokenAttribute": "combat.health",
+    "initiative": "1d20",
+    "esmodules": ["Bearbones.js"],
+    "styles": [
+        "styles/style.css"
+    ]
 }
  No newline at end of file

          
M template.json +25 -18
@@ 1,36 1,43 @@ 
 {
     "Actor": {
-        "types": ["pc", "enemy"],
+        "types": ["character", "object", "enemy"],
         "templates": {
             "combat": {
                 "health": {
-                    "min": 0,
-                    "max": 10,
-                    "value": 10
+                    "health": {
+                        "min": 0,
+                        "max": 10,
+                        "value": 10
+                    }
                 },
-                "death_saves_failed": {
-                    "min": 0,
-                    "value": 0,
-                    "max": 3
-                },
-                "death_saves_saved": {
-                    "min": 0,
-                    "value": 0,
-                    "max": 3
+                "death_saves": {
+                    "failed": {
+                        "min": 0,
+                        "value": 0,
+                        "max": 3
+                    },
+                    "saved": {
+                        "min": 0,
+                        "value": 0,
+                        "max": 3
+                    }
                 }
             },
             "notes": {
                 "notes": ""
+            },
+            "vision": {
+                "darkvision": false
             }
         },
-        "pc": {
-            "templates": ["combat", "notes"]
+        "character": {
+            "templates": ["combat", "vision", "notes"]
+        },
+        "object": {
+            "templates": ["notes"]
         },
         "enemy": {
             "templates": ["combat", "notes"]
         }
-    },
-    "Item": {
-        
     }
 }
  No newline at end of file

          
A => templates/sheets/bear-sheet.html +43 -0
@@ 0,0 1,43 @@ 
+<form class="{{cssClass}}" autocomplete="off">
+    <header class="sheet-header">
+        <img src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="64" width="64" />
+        <h1><input name="name" type="text" value="{{actor.name}}"/></h1>
+    </header>
+    <div>
+        <p>Health</p>
+        <div class="attribute-row">
+            <div>
+                <label>Health</label>
+                <input type="number" name="data.health.health.value" value="{{data.data.health.health.value}}"/>
+            </div>
+            <div>
+                <label>Max Health</label>
+                <input type="number" name="data.health.health.max" value="{{data.data.health.health.max}}"/>
+            </div>
+        </div>
+        <p>Death Saves</p>
+        <div class="attribute-row">
+            <div>
+                <label>Failed</label>
+                <input type="text" name="data.death_saves.failed.value" value="{{data.data.death_saves.failed.value}}"/>
+            </div>
+            <div>
+                <label>Succeeded</label>
+                <input type="text" name="data.death_saves.saved.value" value="{{data.data.death_saves.saved.value}}"/>
+            </div>
+        </div>
+        
+        {{# if isGM }}
+        <p>Vision</p>
+        <div class="attribute-row">
+            <div>
+                <label>Darkvision?</label>
+                <input type="checkbox" name="data.darkvision" {{checked data.data.darkvision}} />
+            </div>
+        </div>
+        {{/if}}
+
+        <p>Notes</p>
+        <textarea style="min-height:18em" name="data.notes" data-edit="notes">{{data.data.notes}}</textarea>
+    </div>
+</form>
  No newline at end of file

          
R templates/sheets/hero-sheet.hbs =>  +0 -36
@@ 1,36 0,0 @@ 
-<form class="{{cssClass}}" autocomplete="off">
-    <header class="sheet-header">
-        <img src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="64" width="64" />
-        <h1><input name="name" type="text" value="{{actor.name}}"/></h1>
-    </header>
-    <div>
-        <p>Health</p>
-        <div class="attribute-row">
-            <div>
-                <label>Health</label>
-                <input type="text" name="data.combat.health.value" value="{{data.combat.health.value}}" data-dtype="Number" />
-            </div>
-            <div>
-                <label>Max Health</label>
-                <input type="text" name="data.combat.health.max" value="{{data.combat.health.max}}" data-dtype="Number" />
-            </div>
-        </div>
-
-        <p>Death Saves</p>
-        <div class="attribute-row">
-            <div>
-                <label>Failed</label>
-                <input type="text" name="data.combat.death_saves_failed.value" value="{{data.combat.death_saves_failed.value}}" data-dtype="Number" />
-            </div>
-            <div>
-                <label>Succeeded</label>
-                <input type="text" name="data.combat.death_saves_saved.value" value="{{data.combat.death_saves_saved.value}}" data-dtype="Number" />
-            </div>
-        </div>
-
-        <p>Notes</p>
-        <textarea style="min-height:18em" name="data.notes.notes" data-edit="data.notes.notes">{{data.notes.notes}}</textarea>
-    </div>
-
-
-</form>
  No newline at end of file