Ver código fonte

Allow views and sizes to affect computed descriptions for an object

tags/v0.1.0
Fen Dweller 5 anos atrás
pai
commit
5581d2e784
2 arquivos alterados com 90 adições e 5 exclusões
  1. +56
    -0
      macrovision.js
  2. +34
    -5
      presets/characters.js

+ 56
- 0
macrovision.js Ver arquivo

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

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;
return this;
}
@@ -253,6 +296,19 @@ function makeEntity(info, views, sizes) {
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) {
clicked = target;
const rect = target.getBoundingClientRect();


+ 34
- 5
presets/characters.js Ver arquivo

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

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

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



Carregando…
Cancelar
Salvar