less copy protection, more size visualization
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

207 lines
5.9 KiB

  1. function makeVehicle(name, sides, mass) {
  2. views = {
  3. }
  4. Object.entries(sides).forEach(([key, val]) => {
  5. views[key] = {
  6. attributes: {
  7. height: {
  8. name: "Height",
  9. power: 1,
  10. type: "length",
  11. base: val.height
  12. },
  13. mass: {
  14. name: "Mass",
  15. power: 3,
  16. type: "mass",
  17. base: mass
  18. }
  19. },
  20. image: val.image,
  21. name: val.name
  22. }
  23. });
  24. return makeEntity({ name: name }, views);
  25. }
  26. function makeMultiVehicle(name, sides) {
  27. views = {
  28. }
  29. Object.entries(sides).forEach(([key, val]) => {
  30. views[key] = {
  31. attributes: {
  32. height: {
  33. name: "Height",
  34. power: 1,
  35. type: "length",
  36. base: val.height
  37. },
  38. mass: {
  39. name: "Mass",
  40. power: 3,
  41. type: "mass",
  42. base: val.mass
  43. }
  44. },
  45. image: val.image,
  46. name: val.name,
  47. rename: val.rename
  48. }
  49. });
  50. return makeEntity({ name: name }, views);
  51. }
  52. function makeVehicles() {
  53. const results = [];
  54. results.push({
  55. name: "Bus",
  56. constructor: () => makeVehicle(
  57. "Bus",
  58. {
  59. side: {
  60. name: "Side",
  61. height: math.unit(10.5, "feet"),
  62. image: { source: "./media/vehicles/bus.svg" }
  63. },
  64. vertical: {
  65. name: "Side (Vertical)",
  66. height: math.unit(38.5, "feet"),
  67. image: { source: "./media/vehicles/vertical-bus.svg" }
  68. },
  69. },
  70. math.unit(30000, "lb"),
  71. )
  72. });
  73. results.push({
  74. name: "Leopard 2 Rev. 1",
  75. constructor: () => makeVehicle(
  76. "Leopard 2 Rev. 1",
  77. {
  78. side: {
  79. name: "Side",
  80. height: math.unit(3, "meters"),
  81. image: { source: "./media/vehicles/leopard-2-revolution-1.svg" },
  82. },
  83. vertical: {
  84. name: "Side (Vertical)",
  85. height: math.unit(10, "meters"),
  86. image: { source: "./media/vehicles/vertical-leopard-2-revolution-1.svg" },
  87. }
  88. },
  89. math.unit(60, "tonnes")
  90. )
  91. });
  92. results.push({
  93. name: "737",
  94. constructor: () => makeVehicle(
  95. "737",
  96. {
  97. side: {
  98. name: "Side",
  99. height: math.unit(12.55, "meters"),
  100. image: { source: "./media/vehicles/737-side.svg" },
  101. },
  102. sideVertical: {
  103. name: "Side (Vertical)",
  104. height: math.unit(39.47, "meters"),
  105. image: { source: "./media/vehicles/737-side-vertical.svg" },
  106. },
  107. top: {
  108. name: "Top",
  109. height: math.unit(39.47, "meters"),
  110. image: { source: "./media/vehicles/737-top.svg" },
  111. },
  112. front: {
  113. name: "Front",
  114. height: math.unit(12.55, "meters"),
  115. image: { source: "./media/vehicles/737-front.svg" },
  116. }
  117. },
  118. math.unit(90710, "lbs")
  119. )
  120. });
  121. results.push({
  122. name: "Titanic",
  123. constructor: () => makeVehicle(
  124. "Titanic",
  125. {
  126. side: {
  127. name: "Side",
  128. height: math.unit(883*1114/4250, "feet"),
  129. image: { source: "./media/vehicles/titanic.svg" },
  130. },
  131. sideVertical: {
  132. name: "Side (Vertical)",
  133. height: math.unit(883, "feet"),
  134. image: { source: "./media/vehicles/vertical-titanic.svg" },
  135. },
  136. },
  137. math.unit(52310, "tons")
  138. )
  139. });
  140. results.push({
  141. name: "18-Wheeler",
  142. constructor: () => makeVehicle(
  143. "18-Wheeler",
  144. {
  145. side: {
  146. name: "Side",
  147. height: math.unit(13.6, "feet"),
  148. image: { source: "./media/vehicles/18-wheeler.svg" },
  149. },
  150. sideVertical: {
  151. name: "Side (Vertical)",
  152. height: math.unit(54, "feet"),
  153. image: { source: "./media/vehicles/18-wheeler-vertical.svg" },
  154. },
  155. },
  156. math.unit(52310, "tons")
  157. )
  158. });
  159. results.push({
  160. name: "Spacecraft",
  161. constructor: () => makeMultiVehicle(
  162. "Spacecraft",
  163. {
  164. "n-1": {
  165. name: "N-1",
  166. rename: true,
  167. height: math.unit(105, "meters"),
  168. mass: math.unit(95, "tons"),
  169. image: { source: "./media/vehicles/spacecraft/n-1.svg" }
  170. },
  171. "saturn-v": {
  172. name: "Saturn V",
  173. rename: true,
  174. height: math.unit(110.6, "meters"),
  175. mass: math.unit(140, "tons"),
  176. image: { source: "./media/vehicles/spacecraft/saturn-v.svg" }
  177. },
  178. "starship": {
  179. name: "Starship",
  180. rename: true,
  181. height: math.unit(118, "m"),
  182. mass: math.unit(150, "tons"),
  183. image: { source: "./media/vehicles/spacecraft/saturn-v.svg" }
  184. },
  185. }
  186. )
  187. });
  188. return results;
  189. }