less copy protection, more size visualization
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

105 行
3.0 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, "Vehicle", views);
  25. }
  26. function makeVehicles() {
  27. const results = [];
  28. results.push({
  29. name: "Bus",
  30. constructor: () => makeVehicle(
  31. "Bus",
  32. {
  33. side: {
  34. name: "Side",
  35. height: math.unit(10.5, "feet"),
  36. image: { source: "./media/vehicles/bus.svg" }
  37. },
  38. vertical: {
  39. name: "Side (Vertical)",
  40. height: math.unit(38.5, "feet"),
  41. image: { source: "./media/vehicles/vertical-bus.svg" }
  42. },
  43. },
  44. math.unit(30000, "lb"),
  45. )
  46. });
  47. results.push({
  48. name: "Leopard 2 Rev. 1",
  49. constructor: () => makeVehicle(
  50. "Leopard 2 Rev. 1",
  51. {
  52. side: {
  53. name: "Side",
  54. height: math.unit(3, "meters"),
  55. image: { source: "./media/vehicles/leopard-2-revolution-1.svg" },
  56. },
  57. vertical: {
  58. name: "Side (Vertical)",
  59. height: math.unit(10, "meters"),
  60. image: { source: "./media/vehicles/vertical-leopard-2-revolution-1.svg" },
  61. }
  62. },
  63. math.unit(60, "tonnes")
  64. )
  65. });
  66. results.push({
  67. name: "737",
  68. constructor: () => makeVehicle(
  69. "737",
  70. {
  71. side: {
  72. name: "Side",
  73. height: math.unit(12.55, "meters"),
  74. image: { source: "./media/vehicles/737-side.svg" },
  75. },
  76. sideVertical: {
  77. name: "Side (Vertical)",
  78. height: math.unit(39.47, "meters"),
  79. image: { source: "./media/vehicles/737-side-vertical.svg" },
  80. },
  81. top: {
  82. name: "Top",
  83. height: math.unit(39.47, "meters"),
  84. image: { source: "./media/vehicles/737-top.svg" },
  85. },
  86. front: {
  87. name: "Front",
  88. height: math.unit(12.55, "meters"),
  89. image: { source: "./media/vehicles/737-front.svg" },
  90. }
  91. },
  92. math.unit(90710, "lbs")
  93. )
  94. });
  95. return results;
  96. }