Quellcode durchsuchen

Allow views and sizes to affect computed descriptions for an object

tags/v0.1.0
Fen Dweller vor 6 Jahren
Ursprung
Commit
5581d2e784
2 geänderte Dateien mit 90 neuen und 5 gelöschten Zeilen
  1. +56
    -0
      macrovision.js
  2. +34
    -5
      presets/characters.js

+ 56
- 0
macrovision.js Datei anzeigen

@@ -223,10 +223,12 @@ function makeEntity(info, views, sizes) {
views: views, views: views,
sizes: sizes === undefined ? [] : sizes, sizes: sizes === undefined ? [] : sizes,
init: function () { init: function () {
const entity = this;
Object.entries(this.views).forEach(([viewKey, view]) => { Object.entries(this.views).forEach(([viewKey, view]) => {
view.parent = this; view.parent = this;
if (this.defaultView === undefined) { if (this.defaultView === undefined) {
this.defaultView = viewKey; this.defaultView = viewKey;
this.view = viewKey;
} }


Object.entries(view.attributes).forEach(([key, val]) => { Object.entries(view.attributes).forEach(([key, val]) => {
@@ -245,6 +247,47 @@ function makeEntity(info, views, sizes) {
) )
}); });
}); });

this.sizes.forEach(size => {
if (size.default === true) {
this.views[this.defaultView].height = size.height;
this.size = size;
}
});

if (this.size === undefined && this.sizes.length > 0) {
this.views[this.defaultView].height = this.sizes[0].height;
this.size = this.sizes[0];
}

this.desc = {};

Object.entries(this.info).forEach(([key, value]) => {
Object.defineProperty(
this.desc,
key,
{
get: function() {
let text = value.text;

if (entity.views[entity.view].info) {
if (entity.views[entity.view].info[key]) {
text = combineInfo(text, entity.views[entity.view].info[key]);
}
}

if (entity.size.info) {
if (entity.size.info[key]) {
text = combineInfo(text, entity.size.info[key]);
}
}

return {title: value.title, text: text};
}
}
)
});

delete this.init; delete this.init;
return this; return this;
} }
@@ -253,6 +296,19 @@ function makeEntity(info, views, sizes) {
return entityTemplate; return entityTemplate;
} }


function combineInfo(existing, next) {
switch(next.mode) {
case "replace":
return next.text;
case "prepend":
return next.text + existing;
case "append":
return existing + next.text;
}

return existing;
}

function clickDown(target, x, y) { function clickDown(target, x, y) {
clicked = target; clicked = target;
const rect = target.getBoundingClientRect(); const rect = target.getBoundingClientRect();


+ 34
- 5
presets/characters.js Datei anzeigen

@@ -8,7 +8,10 @@ math.createUnit("lightyears", {
definition: "9.461e15 meters", definition: "9.461e15 meters",
prefixes: "long" prefixes: "long"
}) })
function makeCharacter(name, author, viewInfo, defaultSizes, defaultSize) {
function makeCharacter(name, author, viewInfo, defaultSizes, defaultSize, extraInfo) {
if (extraInfo === undefined) {
extraInfo = {}
}
views = {}; views = {};


Object.entries(viewInfo).forEach(([key, value]) => { Object.entries(viewInfo).forEach(([key, value]) => {
@@ -22,7 +25,8 @@ function makeCharacter(name, author, viewInfo, defaultSizes, defaultSize) {
} }
}, },
image: value.image, image: value.image,
name: value.name
name: value.name,
info: value.info
} }


if (value.weight) { if (value.weight) {
@@ -35,7 +39,7 @@ function makeCharacter(name, author, viewInfo, defaultSizes, defaultSize) {
} }
}); });


const entity = makeEntity({ name: name }, views, defaultSizes);
const entity = makeEntity(Object.assign(extraInfo, { name: name, author: author }), views, defaultSizes);


if (defaultSize) { if (defaultSize) {
entity.views[entity.defaultView].height = defaultSize; entity.views[entity.defaultView].height = defaultSize;
@@ -55,6 +59,12 @@ characterMakers["Fen"] = () => {
name: "Back", name: "Back",
image: { image: {
source: "./media/characters/fen/back.svg" source: "./media/characters/fen/back.svg"
},
info: {
description: {
mode: "append",
text: "\n\nHe is not currently looking at you."
}
} }
}, },
full: { full: {
@@ -63,6 +73,12 @@ characterMakers["Fen"] = () => {
name: "Full", name: "Full",
image: { image: {
source: "./media/characters/fen/full.svg" source: "./media/characters/fen/full.svg"
},
info: {
description: {
mode: "append",
text: "\n\nMunch."
}
} }
} }
}, },
@@ -77,7 +93,14 @@ characterMakers["Fen"] = () => {
}, },
{ {
name: "Macro", name: "Macro",
height: math.unit(100, "meter")
height: math.unit(100, "meter"),
default: true,
info: {
description: {
mode: "append",
text: "\n\nTOO DAMN BIG"
}
}
}, },
{ {
name: "Macro+", name: "Macro+",
@@ -88,7 +111,13 @@ characterMakers["Fen"] = () => {
height: math.unit(10, "miles") height: math.unit(10, "miles")
} }
], ],
math.unit(100, "meter")
math.unit(100, "meter"),
{
description: {
title: "Bio",
text: "Very furry. Sheds on everything."
}
}
) )
}; };




Laden…
Abbrechen
Speichern