|
- function makeObject(name, viewInfo) {
- views = {};
-
- Object.entries(viewInfo).forEach(([key, value]) => {
- views[key] = {
- attributes: {
- height: {
- name: "Height",
- power: 1,
- type: "length",
- base: value.height
- }
- },
- image: value.image,
- name: value.name,
- rename: value.rename
- }
-
- if (value.mass) {
- views[key].attributes.mass = {
- name: "Mass",
- power: 3,
- type: "mass",
- base: value.mass
- };
- }
- });
-
- return makeEntity({ name: name }, views);
- }
-
- function makeObjects() {
- const results = [];
-
- results.push({
- name: "Soda Can",
- constructor: () => makeObject(
- "Soda Can",
- {
- front: {
- height: math.unit(4.83, "inches"),
- mass: math.unit(15, "grams"),
- image: { source: "./media/objects/soda-can.svg" },
- name: "Side"
- }
- }
- )
- });
-
- results.push({
- name: "Sewing Pin",
- constructor: () => makeObject(
- "Sewing Pin",
- {
- side: {
- height: math.unit(1.5, "inches"),
- image: { source: "./media/objects/sewing-pin.svg" },
- name: "Side"
- },
- top: {
- height: math.unit(2, "millimeters"),
- image: { source: "./media/objects/pin-head.svg" },
- name: "Head"
- }
- }
- )
- });
-
- results.push({
- name: "Lamp",
- constructor: () => makeObject(
- "Lamp",
- {
- lamp: {
- height: math.unit(30, "inches"),
- mass: math.unit(10, "lbs"),
- image: { source: "./media/objects/lamp.svg" },
- name: "Lamp"
- }
- }
- )
- });
-
- results.push({
- name: "Human",
- constructor: () => makeObject(
- "Human",
- {
- woman1: {
- height: math.unit(5 + 4/12, "feet"),
- mass: math.unit(140, "lbs"),
- image: { source: "./media/objects/humans/woman-1.svg" },
- name: "Woman 1"
- },
- man1: {
- height: math.unit(5 + 6/12, "feet"),
- mass: math.unit(150, "lbs"),
- image: { source: "./media/objects/humans/man-1.svg" },
- name: "Man 1"
- },
- }
- )
- });
-
- results.push({
- name: "Nail Polish",
- constructor: () => makeObject(
- "Nail Polish",
- {
- bottle: {
- height: math.unit(3.25, "inches"),
- mass: math.unit(66, "g"),
- image: { source: "./media/objects/nail-polish.svg" },
- name: "Bottle"
- }
- }
- )
- });
-
- results.push({
- name: "Shot Glass",
- constructor: () => makeObject(
- "Shot Glass",
- {
- glass: {
- height: math.unit(2 + 3/8, "inches"),
- mass: math.unit(75, "g"),
- image: { source: "./media/objects/shot-glass.svg" },
- name: "Bottle"
- }
- }
- )
- });
-
- results.push({
- name: "Beer Bottle",
- constructor: () => makeObject(
- "Beer Bottle",
- {
- longneck: {
- height: math.unit(9, "inches"),
- mass: math.unit(200, "g"),
- image: { source: "./media/objects/beer-bottle.svg" },
- name: "Longneck Bottle"
- }
- }
- )
- });
-
- results.push({
- name: "Coin",
- constructor: () => makeObject(
- "Coin",
- {
- penny: {
- height: math.unit(0.75, "inches"),
- mass: math.unit(2.5, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Penny",
- rename: true
- },
- nickel: {
- height: math.unit(0.835, "inches"),
- mass: math.unit(5, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Nickel",
- rename: true
- },
- dime: {
- height: math.unit(0.705, "inches"),
- mass: math.unit(2.268, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Dime",
- rename: true
- },
- quarter: {
- height: math.unit(0.955, "inches"),
- mass: math.unit(5.67, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Quarter",
- rename: true
- },
- dollar: {
- height: math.unit(1.043, "inches"),
- mass: math.unit(8.1, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Dollar Coin",
- rename: true
- },
- }
- )
- });
-
- results.push({
- name: "Pencil",
- constructor: () => makeObject(
- "Pencil",
- {
- pencil: {
- height: math.unit(7.5, "inches"),
- mass: math.unit(7, "g"),
- image: { source: "./media/objects/pencil.svg" },
- name: "Pencil"
- }
- }
- )
- });
-
- results.push({
- name: "Balls",
- constructor: () => makeObject(
- "Balls",
- {
- golf: {
- height: math.unit(1.62, "inches"),
- mass: math.unit(45, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Golfball",
- rename: true
- },
- tennis: {
- height: math.unit(2.6, "inches"),
- mass: math.unit(57, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Tennisball",
- rename: true
- },
- baseball: {
- height: math.unit(2.9, "inches"),
- mass: math.unit(145, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Baseball",
- rename: true
- },
- volleyball: {
- height: math.unit(8, "inches"),
- mass: math.unit(270, "g"),
- image: { source: "./media/objects/circle.svg" },
- name: "Volleyball",
- rename: true
- }
- }
- )
- });
-
- results.push({
- name: "Paperclip",
- constructor: () => makeObject(
- "Paperclip",
- {
- paperclip: {
- height: math.unit(1.834, "inches"),
- mass: math.unit(1, "g"),
- image: { source: "./media/objects/paperclip.svg" },
- name: "Paperclip"
- }
- }
- )
- });
-
- results.sort((b1, b2) => {
- e1 = b1.constructor();
- e2 = b2.constructor();
- return -math.subtract(e1.views[e1.defaultView].height, e2.views[e2.defaultView].height).value;
- });
-
- return results;
- }
|