|
- function makeVehicle(name, sides, mass) {
- views = {
-
- }
-
- Object.entries(sides).forEach(([key, val]) => {
- views[key] = {
- attributes: {
- height: {
- name: "Height",
- power: 1,
- type: "length",
- base: val.height
- },
- mass: {
- name: "Mass",
- power: 3,
- type: "mass",
- base: mass
- }
- },
- image: val.image,
- name: val.name
- }
- });
-
- return makeEntity({ name: name }, views);
- }
-
- function makeMultiVehicle(name, sides) {
- views = {
-
- }
-
- Object.entries(sides).forEach(([key, val]) => {
- views[key] = {
- attributes: {
- height: {
- name: "Height",
- power: 1,
- type: "length",
- base: val.height
- },
- mass: {
- name: "Mass",
- power: 3,
- type: "mass",
- base: val.mass
- }
- },
- image: val.image,
- name: val.name,
- rename: val.rename
- }
- });
-
- return makeEntity({ name: name }, views);
- }
-
-
- function makeVehicles() {
- const results = [];
-
- results.push({
- name: "Bus",
- constructor: () => makeVehicle(
- "Bus",
- {
- side: {
- name: "Side",
- height: math.unit(10.5, "feet"),
- image: { source: "./media/vehicles/bus.svg" }
- },
- vertical: {
- name: "Side (Vertical)",
- height: math.unit(38.5, "feet"),
- image: { source: "./media/vehicles/vertical-bus.svg" }
- },
-
- },
- math.unit(30000, "lb"),
- )
- });
-
- results.push({
- name: "Leopard 2 Rev. 1",
- constructor: () => makeVehicle(
- "Leopard 2 Rev. 1",
- {
- side: {
- name: "Side",
- height: math.unit(3, "meters"),
- image: { source: "./media/vehicles/leopard-2-revolution-1.svg" },
- },
- vertical: {
- name: "Side (Vertical)",
- height: math.unit(10, "meters"),
- image: { source: "./media/vehicles/vertical-leopard-2-revolution-1.svg" },
- }
- },
- math.unit(60, "tonnes")
- )
- });
-
- results.push({
- name: "737",
- constructor: () => makeVehicle(
- "737",
- {
- side: {
- name: "Side",
- height: math.unit(12.55, "meters"),
- image: { source: "./media/vehicles/737-side.svg" },
- },
- sideVertical: {
- name: "Side (Vertical)",
- height: math.unit(39.47, "meters"),
- image: { source: "./media/vehicles/737-side-vertical.svg" },
- },
- top: {
- name: "Top",
- height: math.unit(39.47, "meters"),
- image: { source: "./media/vehicles/737-top.svg" },
- },
- front: {
- name: "Front",
- height: math.unit(12.55, "meters"),
- image: { source: "./media/vehicles/737-front.svg" },
- }
- },
- math.unit(90710, "lbs")
- )
- });
-
- results.push({
- name: "Titanic",
- constructor: () => makeVehicle(
- "Titanic",
- {
- side: {
- name: "Side",
- height: math.unit(883*1114/4250, "feet"),
- image: { source: "./media/vehicles/titanic.svg" },
- },
- sideVertical: {
- name: "Side (Vertical)",
- height: math.unit(883, "feet"),
- image: { source: "./media/vehicles/vertical-titanic.svg" },
- },
- },
- math.unit(52310, "tons")
- )
- });
-
- results.push({
- name: "18-Wheeler",
- constructor: () => makeVehicle(
- "18-Wheeler",
- {
- side: {
- name: "Side",
- height: math.unit(13.6, "feet"),
- image: { source: "./media/vehicles/18-wheeler.svg" },
- },
- sideVertical: {
- name: "Side (Vertical)",
- height: math.unit(54, "feet"),
- image: { source: "./media/vehicles/18-wheeler-vertical.svg" },
- },
- },
- math.unit(52310, "tons")
- )
- });
-
- results.push({
- name: "Spacecraft",
- constructor: () => makeMultiVehicle(
- "Spacecraft",
- {
- "n-1": {
- name: "N-1",
- rename: true,
- height: math.unit(105, "meters"),
- mass: math.unit(95, "tons"),
- image: { source: "./media/vehicles/spacecraft/n-1.svg" }
- },
- "saturn-v": {
- name: "Saturn V",
- rename: true,
- height: math.unit(110.6, "meters"),
- mass: math.unit(140, "tons"),
- image: { source: "./media/vehicles/spacecraft/saturn-v.svg" }
- },
- "starship": {
- name: "Starship",
- rename: true,
- height: math.unit(118, "m"),
- mass: math.unit(150, "tons"),
- image: { source: "./media/vehicles/spacecraft/saturn-v.svg" }
- },
- }
- )
- });
-
- return results;
- }
|