create-dubhe 1.2.0-pre.98 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/cli.js.map +1 -1
  3. package/package.json +16 -16
  4. package/templates/101/sui-template/docker-compose.testnet.yml +73 -0
  5. package/templates/101/sui-template/packages/client/src/app/page.tsx +545 -41
  6. package/templates/101/sui-template/packages/client/src/app/providers.tsx +12 -4
  7. package/templates/101/sui-template/packages/contracts/Pub.localnet.toml +4 -4
  8. package/templates/101/sui-template/packages/contracts/counter.lock.json +20 -0
  9. package/templates/101/sui-template/packages/contracts/deployment.ts +8 -3
  10. package/templates/101/sui-template/packages/contracts/dubhe.config.json +59 -13
  11. package/templates/101/sui-template/packages/contracts/dubhe.config.ts +1 -4
  12. package/templates/101/sui-template/packages/contracts/metadata.json +1015 -68
  13. package/templates/101/sui-template/packages/contracts/package.json +7 -4
  14. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/dapp_key.move +45 -31
  15. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/error.move +8 -0
  16. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move +30 -13
  17. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move +19 -14
  18. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2.move +198 -0
  19. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2withkey.move +90 -0
  20. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/resources/value.move +30 -20
  21. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/user_storage_init.move +26 -0
  22. package/templates/101/sui-template/packages/contracts/src/counter/sources/scripts/deploy_hook.move +6 -11
  23. package/templates/101/sui-template/packages/contracts/src/counter/sources/systems/counter.move +23 -11
  24. package/templates/101/sui-template/packages/contracts/src/counter/sources/tests/counter.move +15 -14
  25. package/templates/101/sui-template/packages/contracts/src/dubhe/Move.lock +33 -30
  26. package/templates/101/sui-template/packages/contracts/src/dubhe/Move.toml +8 -3
  27. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/dapp_key.move +45 -31
  28. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/error.move +170 -0
  29. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/genesis.move +16 -13
  30. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/init_test.move +8 -14
  31. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/account_key.move +1 -3
  32. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/dapp_service.move +1776 -137
  33. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/data_key.move +1 -20
  34. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/events.move +864 -25
  35. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/scripts/deploy_hook.move +15 -16
  36. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/scripts/migrate.move +0 -3
  37. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/address_system.move +25 -17
  38. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/dapp_system.move +2802 -343
  39. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/utils.move +1 -1
  40. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/address.move +173 -55
  41. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/dapp_test.move +769 -0
  42. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/fee_test.move +2965 -0
  43. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/integration_test.move +303 -0
  44. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/listing_test.move +1422 -0
  45. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/scene_session_test.move +269 -0
  46. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/session_test.move +624 -0
  47. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/storage_test.move +700 -0
  48. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/typed_object_test.move +177 -0
  49. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/typed_scene_test.move +452 -0
  50. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/user_storage_test.move +160 -0
  51. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/utils/math.move +4 -3
  52. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/utils/type_info.move +2 -2
  53. package/templates/contract/sui-template/dubhe.config.ts +0 -1
  54. package/templates/contract/sui-template/package.json +3 -3
  55. package/templates/contract/sui-template/src/dubhe/Move.lock +33 -30
  56. package/templates/contract/sui-template/src/dubhe/Move.toml +8 -3
  57. package/templates/contract/sui-template/src/dubhe/sources/codegen/dapp_key.move +45 -31
  58. package/templates/contract/sui-template/src/dubhe/sources/codegen/error.move +170 -0
  59. package/templates/contract/sui-template/src/dubhe/sources/codegen/genesis.move +16 -13
  60. package/templates/contract/sui-template/src/dubhe/sources/codegen/init_test.move +8 -14
  61. package/templates/contract/sui-template/src/dubhe/sources/core/account_key.move +1 -3
  62. package/templates/contract/sui-template/src/dubhe/sources/core/dapp_service.move +1776 -137
  63. package/templates/contract/sui-template/src/dubhe/sources/core/data_key.move +1 -20
  64. package/templates/contract/sui-template/src/dubhe/sources/core/events.move +864 -25
  65. package/templates/contract/sui-template/src/dubhe/sources/scripts/deploy_hook.move +15 -16
  66. package/templates/contract/sui-template/src/dubhe/sources/scripts/migrate.move +0 -3
  67. package/templates/contract/sui-template/src/dubhe/sources/systems/address_system.move +25 -17
  68. package/templates/contract/sui-template/src/dubhe/sources/systems/dapp_system.move +2802 -343
  69. package/templates/contract/sui-template/src/dubhe/sources/systems/utils.move +1 -1
  70. package/templates/contract/sui-template/src/dubhe/sources/tests/address.move +173 -55
  71. package/templates/contract/sui-template/src/dubhe/sources/tests/dapp_test.move +769 -0
  72. package/templates/contract/sui-template/src/dubhe/sources/tests/fee_test.move +2965 -0
  73. package/templates/contract/sui-template/src/dubhe/sources/tests/integration_test.move +303 -0
  74. package/templates/contract/sui-template/src/dubhe/sources/tests/listing_test.move +1422 -0
  75. package/templates/contract/sui-template/src/dubhe/sources/tests/scene_session_test.move +269 -0
  76. package/templates/contract/sui-template/src/dubhe/sources/tests/session_test.move +624 -0
  77. package/templates/contract/sui-template/src/dubhe/sources/tests/storage_test.move +700 -0
  78. package/templates/contract/sui-template/src/dubhe/sources/tests/typed_object_test.move +177 -0
  79. package/templates/contract/sui-template/src/dubhe/sources/tests/typed_scene_test.move +452 -0
  80. package/templates/contract/sui-template/src/dubhe/sources/tests/user_storage_test.move +160 -0
  81. package/templates/contract/sui-template/src/dubhe/sources/utils/math.move +4 -3
  82. package/templates/contract/sui-template/src/dubhe/sources/utils/type_info.move +2 -2
  83. package/templates/contract/sui-template/src/template/Move.toml +12 -0
  84. package/templates/contract/sui-template/src/template/sources/codegen/dapp_key.move +47 -0
  85. package/templates/contract/sui-template/src/template/sources/codegen/genesis.move +34 -0
  86. package/templates/contract/sui-template/src/template/sources/codegen/init_test.move +23 -0
  87. package/templates/contract/sui-template/src/template/sources/codegen/user_storage_init.move +27 -0
  88. package/templates/contract/sui-template/src/template/sources/scripts/deploy_hook.move +13 -0
  89. package/templates/contract/sui-template/src/template/sources/scripts/migrate.move +7 -0
  90. package/templates/nextjs/sui-card-duel/.gitignore_ +51 -0
  91. package/templates/nextjs/sui-card-duel/README.md +213 -0
  92. package/templates/nextjs/sui-card-duel/docker-compose.yml +34 -0
  93. package/templates/nextjs/sui-card-duel/mprocs.yaml +17 -0
  94. package/templates/nextjs/sui-card-duel/package.json +43 -0
  95. package/templates/nextjs/sui-card-duel/packages/client/.gitignore_ +48 -0
  96. package/templates/nextjs/sui-card-duel/packages/client/.prettierignore +1 -0
  97. package/templates/nextjs/sui-card-duel/packages/client/.prettierrc.json +8 -0
  98. package/templates/nextjs/sui-card-duel/packages/client/eslint.config.mjs +22 -0
  99. package/templates/nextjs/sui-card-duel/packages/client/next.config.mjs +8 -0
  100. package/templates/nextjs/sui-card-duel/packages/client/package.json +47 -0
  101. package/templates/nextjs/sui-card-duel/packages/client/postcss.config.mjs +8 -0
  102. package/templates/nextjs/sui-card-duel/packages/client/src/app/admin/ArenaPanel.tsx +307 -0
  103. package/templates/nextjs/sui-card-duel/packages/client/src/app/admin/page.tsx +622 -0
  104. package/templates/nextjs/sui-card-duel/packages/client/src/app/brawl/[id]/page.tsx +559 -0
  105. package/templates/nextjs/sui-card-duel/packages/client/src/app/collection/page.tsx +202 -0
  106. package/templates/nextjs/sui-card-duel/packages/client/src/app/components/CardView.tsx +66 -0
  107. package/templates/nextjs/sui-card-duel/packages/client/src/app/components/GameShell.tsx +294 -0
  108. package/templates/nextjs/sui-card-duel/packages/client/src/app/components/icons.tsx +101 -0
  109. package/templates/nextjs/sui-card-duel/packages/client/src/app/duel/[id]/page.tsx +477 -0
  110. package/templates/nextjs/sui-card-duel/packages/client/src/app/favicon.ico +0 -0
  111. package/templates/nextjs/sui-card-duel/packages/client/src/app/globals.css +85 -0
  112. package/templates/nextjs/sui-card-duel/packages/client/src/app/hooks/useGame.ts +313 -0
  113. package/templates/nextjs/sui-card-duel/packages/client/src/app/layout.tsx +24 -0
  114. package/templates/nextjs/sui-card-duel/packages/client/src/app/leaderboard/page.tsx +123 -0
  115. package/templates/nextjs/sui-card-duel/packages/client/src/app/lib/game.ts +77 -0
  116. package/templates/nextjs/sui-card-duel/packages/client/src/app/lib/scenes.ts +226 -0
  117. package/templates/nextjs/sui-card-duel/packages/client/src/app/market/page.tsx +418 -0
  118. package/templates/nextjs/sui-card-duel/packages/client/src/app/page.tsx +427 -0
  119. package/templates/nextjs/sui-card-duel/packages/client/src/app/providers.tsx +69 -0
  120. package/templates/nextjs/sui-card-duel/packages/client/tailwind.config.ts +21 -0
  121. package/templates/nextjs/sui-card-duel/packages/client/tsconfig.json +30 -0
  122. package/templates/nextjs/sui-card-duel/packages/contracts/.gitignore_ +51 -0
  123. package/templates/nextjs/sui-card-duel/packages/contracts/.prettierignore +1 -0
  124. package/templates/nextjs/sui-card-duel/packages/contracts/.prettierrc.json +8 -0
  125. package/templates/nextjs/sui-card-duel/packages/contracts/Dockerfile +5 -0
  126. package/templates/nextjs/sui-card-duel/packages/contracts/Pub.localnet.toml +13 -0
  127. package/templates/nextjs/sui-card-duel/packages/contracts/card_duel.lock.json +66 -0
  128. package/templates/nextjs/sui-card-duel/packages/contracts/docker-compose.yml +34 -0
  129. package/templates/nextjs/sui-card-duel/packages/contracts/dubhe.config.ts +150 -0
  130. package/templates/nextjs/sui-card-duel/packages/contracts/logs/combined.log +31383 -0
  131. package/templates/nextjs/sui-card-duel/packages/contracts/package.json +49 -0
  132. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/config.ts +17 -0
  133. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-brawl.ts +270 -0
  134. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-duel.ts +272 -0
  135. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-lobby.ts +177 -0
  136. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-market.ts +219 -0
  137. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-session.ts +342 -0
  138. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/query-dapp-revenue.ts +95 -0
  139. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/seed.ts +92 -0
  140. package/templates/nextjs/sui-card-duel/packages/contracts/scripts/withdraw-dapp-revenue.ts +56 -0
  141. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/Move.toml +15 -0
  142. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/dapp_key.move +46 -0
  143. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/enums/card_kind.move +47 -0
  144. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/enums/match_state.move +37 -0
  145. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/enums/rarity.move +37 -0
  146. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/error.move +126 -0
  147. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/genesis.move +33 -0
  148. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/init_test.move +23 -0
  149. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/objects/arena.move +137 -0
  150. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/permits/brawl_permit.move +125 -0
  151. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/permits/duel_permit.move +125 -0
  152. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/battle_state.move +255 -0
  153. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/card.move +282 -0
  154. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/deck.move +64 -0
  155. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/game_config.move +267 -0
  156. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/gold.move +205 -0
  157. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/profile.move +255 -0
  158. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/scenes/brawl.move +313 -0
  159. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/scenes/duel.move +313 -0
  160. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/user_storage_init.move +26 -0
  161. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/scripts/deploy_hook.move +32 -0
  162. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/scripts/migrate.move +7 -0
  163. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/arena_system.move +57 -0
  164. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/brawl_system.move +559 -0
  165. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/card_system.move +146 -0
  166. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/duel_system.move +515 -0
  167. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/market_system.move +115 -0
  168. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/player_system.move +37 -0
  169. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/tests/brawl_tests.move +385 -0
  170. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/tests/duel_tests.move +656 -0
  171. package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/tests/test_helpers.move +31 -0
  172. package/templates/nextjs/sui-card-duel/packages/contracts/sui-indexer-schema.graphql +5973 -0
  173. package/templates/nextjs/sui-card-duel/pnpm-workspace.yaml +2 -0
  174. package/templates/nextjs/sui-farm/.gitignore_ +51 -0
  175. package/templates/nextjs/sui-farm/README.md +15 -0
  176. package/templates/nextjs/sui-farm/UPGRADE_NOTES.md +97 -0
  177. package/templates/nextjs/sui-farm/docker-compose.yml +34 -0
  178. package/templates/nextjs/sui-farm/mprocs.yaml +17 -0
  179. package/templates/nextjs/sui-farm/package.json +43 -0
  180. package/templates/nextjs/sui-farm/packages/client/.gitignore_ +48 -0
  181. package/templates/nextjs/sui-farm/packages/client/.prettierignore +1 -0
  182. package/templates/nextjs/sui-farm/packages/client/.prettierrc.json +8 -0
  183. package/templates/nextjs/sui-farm/packages/client/eslint.config.mjs +22 -0
  184. package/templates/nextjs/sui-farm/packages/client/next.config.mjs +8 -0
  185. package/templates/nextjs/sui-farm/packages/client/package.json +47 -0
  186. package/templates/nextjs/sui-farm/packages/client/postcss.config.mjs +8 -0
  187. package/templates/nextjs/sui-farm/packages/client/src/app/admin/page.tsx +618 -0
  188. package/templates/nextjs/sui-farm/packages/client/src/app/components/FarmLand.tsx +526 -0
  189. package/templates/nextjs/sui-farm/packages/client/src/app/components/FarmPlotCard.tsx +215 -0
  190. package/templates/nextjs/sui-farm/packages/client/src/app/components/PetAvatar.tsx +868 -0
  191. package/templates/nextjs/sui-farm/packages/client/src/app/components/PetPanel.tsx +1360 -0
  192. package/templates/nextjs/sui-farm/packages/client/src/app/components/PlantModal.tsx +147 -0
  193. package/templates/nextjs/sui-farm/packages/client/src/app/components/ProxyCard.tsx +684 -0
  194. package/templates/nextjs/sui-farm/packages/client/src/app/components/RanchLand.tsx +822 -0
  195. package/templates/nextjs/sui-farm/packages/client/src/app/components/ResourceHUD.tsx +125 -0
  196. package/templates/nextjs/sui-farm/packages/client/src/app/components/ShopPanel.tsx +232 -0
  197. package/templates/nextjs/sui-farm/packages/client/src/app/components/icons/GameIcons.tsx +574 -0
  198. package/templates/nextjs/sui-farm/packages/client/src/app/favicon.ico +0 -0
  199. package/templates/nextjs/sui-farm/packages/client/src/app/globals.css +423 -0
  200. package/templates/nextjs/sui-farm/packages/client/src/app/hooks/useWorldPermitId.ts +66 -0
  201. package/templates/nextjs/sui-farm/packages/client/src/app/layout.tsx +23 -0
  202. package/templates/nextjs/sui-farm/packages/client/src/app/leaderboard/page.tsx +185 -0
  203. package/templates/nextjs/sui-farm/packages/client/src/app/lib/crops.ts +97 -0
  204. package/templates/nextjs/sui-farm/packages/client/src/app/market/page.tsx +763 -0
  205. package/templates/nextjs/sui-farm/packages/client/src/app/page.tsx +1173 -0
  206. package/templates/nextjs/sui-farm/packages/client/src/app/providers.tsx +69 -0
  207. package/templates/nextjs/sui-farm/packages/client/src/app/state/index.tsx +5 -0
  208. package/templates/nextjs/sui-farm/packages/client/tailwind.config.ts +25 -0
  209. package/templates/nextjs/sui-farm/packages/client/tsconfig.json +30 -0
  210. package/templates/nextjs/sui-farm/packages/contracts/.gitignore_ +51 -0
  211. package/templates/nextjs/sui-farm/packages/contracts/.prettierignore +1 -0
  212. package/templates/nextjs/sui-farm/packages/contracts/.prettierrc.json +8 -0
  213. package/templates/nextjs/sui-farm/packages/contracts/Dockerfile +5 -0
  214. package/templates/nextjs/sui-farm/packages/contracts/Pub.localnet.toml +13 -0
  215. package/templates/nextjs/sui-farm/packages/contracts/counter.lock.json +14 -0
  216. package/templates/nextjs/sui-farm/packages/contracts/docker-compose.yml +34 -0
  217. package/templates/nextjs/sui-farm/packages/contracts/dubhe.config.ts +178 -0
  218. package/templates/nextjs/sui-farm/packages/contracts/harvest.lock.json +120 -0
  219. package/templates/nextjs/sui-farm/packages/contracts/package.json +48 -0
  220. package/templates/nextjs/sui-farm/packages/contracts/scripts/config.ts +17 -0
  221. package/templates/nextjs/sui-farm/packages/contracts/scripts/query-dapp-revenue.ts +95 -0
  222. package/templates/nextjs/sui-farm/packages/contracts/scripts/read-permit.ts +72 -0
  223. package/templates/nextjs/sui-farm/packages/contracts/scripts/seed.ts +85 -0
  224. package/templates/nextjs/sui-farm/packages/contracts/scripts/withdraw-dapp-revenue.ts +56 -0
  225. package/templates/nextjs/sui-farm/packages/contracts/src/counter/Move.toml +14 -0
  226. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/dapp_key.move +31 -0
  227. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/error.move +10 -0
  228. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/genesis.move +33 -0
  229. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/init_test.move +23 -0
  230. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/resources/counter1.move +64 -0
  231. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/resources/counter2.move +70 -0
  232. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/user_storage_init.move +26 -0
  233. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/scripts/deploy_hook.move +8 -0
  234. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/scripts/migrate.move +8 -0
  235. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/systems/counter.move +13 -0
  236. package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/tests/counter.move +28 -0
  237. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/Move.toml +14 -0
  238. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/dapp_key.move +46 -0
  239. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/crop_type.move +47 -0
  240. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/egg_type.move +42 -0
  241. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/pet_rarity.move +37 -0
  242. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/pet_species.move +52 -0
  243. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/error.move +110 -0
  244. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/genesis.move +33 -0
  245. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/init_test.move +23 -0
  246. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/permits/world.move +125 -0
  247. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/carrot.move +136 -0
  248. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/carrot_seed.move +80 -0
  249. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/common_egg.move +136 -0
  250. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/corn.move +136 -0
  251. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/corn_seed.move +80 -0
  252. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/crow_charges.move +162 -0
  253. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/crow_damage.move +207 -0
  254. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/farm_plot.move +261 -0
  255. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/gold.move +80 -0
  256. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet.move +467 -0
  257. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_config.move +372 -0
  258. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_hatch.move +162 -0
  259. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_slot_index.move +83 -0
  260. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_slots.move +64 -0
  261. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/profile.move +162 -0
  262. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pumpkin.move +136 -0
  263. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pumpkin_seed.move +80 -0
  264. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/rare_egg.move +136 -0
  265. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/scarecrow.move +64 -0
  266. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/season_config.move +197 -0
  267. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/season_stats.move +64 -0
  268. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/seasonal_egg.move +136 -0
  269. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/shop_config.move +267 -0
  270. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/trophy.move +245 -0
  271. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/wheat.move +136 -0
  272. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/wheat_seed.move +80 -0
  273. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/world_permit_id.move +64 -0
  274. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/user_storage_init.move +26 -0
  275. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/scripts/deploy_hook.move +45 -0
  276. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/scripts/migrate.move +7 -0
  277. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/crow_system.move +96 -0
  278. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/farm_system.move +182 -0
  279. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/market_system.move +172 -0
  280. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/pet_system.move +495 -0
  281. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/season_system.move +70 -0
  282. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/shop_system.move +112 -0
  283. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/world_system.move +34 -0
  284. package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/tests/farm_tests.move +1192 -0
  285. package/templates/nextjs/sui-farm/pnpm-workspace.yaml +2 -0
  286. package/templates/nextjs/sui-template/packages/client/src/app/components/ProxyCard.tsx +683 -0
  287. package/templates/nextjs/sui-template/packages/client/src/app/page.tsx +510 -5
  288. package/templates/nextjs/sui-template/packages/client/src/app/providers.tsx +13 -5
  289. package/templates/nextjs/sui-template/packages/contracts/Pub.localnet.toml +4 -4
  290. package/templates/nextjs/sui-template/packages/contracts/counter.lock.json +14 -0
  291. package/templates/nextjs/sui-template/packages/contracts/deployment.ts +8 -3
  292. package/templates/nextjs/sui-template/packages/contracts/dubhe.config.json +9 -9
  293. package/templates/nextjs/sui-template/packages/contracts/dubhe.config.ts +0 -4
  294. package/templates/nextjs/sui-template/packages/contracts/metadata.json +180 -124
  295. package/templates/nextjs/sui-template/packages/contracts/package.json +8 -4
  296. package/templates/nextjs/sui-template/packages/contracts/src/counter/Move.toml +4 -0
  297. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/dapp_key.move +45 -31
  298. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/error.move +10 -0
  299. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move +30 -13
  300. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move +19 -14
  301. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter1.move +30 -20
  302. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2.move +35 -24
  303. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/user_storage_init.move +26 -0
  304. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/scripts/deploy_hook.move +6 -10
  305. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/systems/counter.move +7 -20
  306. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/tests/counter.move +14 -27
  307. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.lock +33 -30
  308. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.toml +8 -3
  309. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/dapp_key.move +45 -31
  310. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/error.move +170 -0
  311. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/genesis.move +16 -13
  312. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/init_test.move +8 -14
  313. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/account_key.move +1 -3
  314. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/dapp_service.move +1776 -137
  315. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/data_key.move +1 -20
  316. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/events.move +864 -25
  317. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/scripts/deploy_hook.move +15 -16
  318. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/scripts/migrate.move +0 -3
  319. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/address_system.move +25 -17
  320. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/dapp_system.move +2802 -343
  321. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/utils.move +1 -1
  322. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/address.move +173 -55
  323. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/dapp_test.move +769 -0
  324. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/fee_test.move +2965 -0
  325. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/integration_test.move +303 -0
  326. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/listing_test.move +1422 -0
  327. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/scene_session_test.move +269 -0
  328. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/session_test.move +624 -0
  329. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/storage_test.move +700 -0
  330. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/typed_object_test.move +177 -0
  331. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/typed_scene_test.move +452 -0
  332. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/user_storage_test.move +160 -0
  333. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/math.move +4 -3
  334. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/type_info.move +2 -2
  335. package/templates/101/sui-template/packages/contracts/src/counter/Move.lock +0 -41
  336. package/templates/101/sui-template/packages/contracts/src/counter/Published.toml +0 -9
  337. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/errors.move +0 -12
  338. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/errors.move +0 -140
  339. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
  340. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
  341. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
  342. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
  343. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +0 -29
  344. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/session_system.move +0 -44
  345. package/templates/contract/sui-template/src/dubhe/sources/codegen/errors.move +0 -140
  346. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
  347. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
  348. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
  349. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
  350. package/templates/contract/sui-template/src/dubhe/sources/core/dapp_store.move +0 -29
  351. package/templates/contract/sui-template/src/dubhe/sources/systems/session_system.move +0 -44
  352. package/templates/nextjs/sui-template/packages/contracts/src/counter/Move.lock +0 -47
  353. package/templates/nextjs/sui-template/packages/contracts/src/counter/Published.toml +0 -9
  354. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/errors.move +0 -12
  355. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/errors.move +0 -140
  356. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
  357. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
  358. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
  359. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
  360. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +0 -29
  361. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/session_system.move +0 -44
@@ -0,0 +1,197 @@
1
+ // Copyright (c) Obelisk Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /* Autogenerated file. Do not edit manually. */
5
+
6
+ module harvest::season_config {
7
+ use sui::bcs::{to_bytes};
8
+ use dubhe::dapp_service::DappStorage;
9
+ use dubhe::dapp_system;
10
+ use harvest::dapp_key;
11
+ use harvest::dapp_key::DappKey;
12
+
13
+
14
+ const TABLE_NAME: vector<u8> = b"season_config";
15
+ const OFFCHAIN: bool = false;
16
+
17
+ public struct SeasonConfig has copy, drop, store {
18
+ season_id: u8,
19
+ end_ms: u64,
20
+ bonus_crop: u8,
21
+ }
22
+
23
+ public fun new(season_id: u8, end_ms: u64, bonus_crop: u8): SeasonConfig {
24
+ SeasonConfig {
25
+ season_id,
26
+ end_ms,
27
+ bonus_crop,
28
+ }
29
+ }
30
+
31
+ public fun season_id(self: &SeasonConfig): u8 {
32
+ self.season_id
33
+ }
34
+
35
+ public fun end_ms(self: &SeasonConfig): u64 {
36
+ self.end_ms
37
+ }
38
+
39
+ public fun bonus_crop(self: &SeasonConfig): u8 {
40
+ self.bonus_crop
41
+ }
42
+
43
+ public fun update_season_id(self: &mut SeasonConfig, season_id: u8) {
44
+ self.season_id = season_id
45
+ }
46
+
47
+ public fun update_end_ms(self: &mut SeasonConfig, end_ms: u64) {
48
+ self.end_ms = end_ms
49
+ }
50
+
51
+ public fun update_bonus_crop(self: &mut SeasonConfig, bonus_crop: u8) {
52
+ self.bonus_crop = bonus_crop
53
+ }
54
+
55
+ public fun has(dapp_storage: &DappStorage): bool {
56
+ let mut key_tuple = vector::empty();
57
+ key_tuple.push_back(TABLE_NAME);
58
+ dapp_system::has_global_record<DappKey>(dapp_storage, key_tuple)
59
+ }
60
+
61
+ public fun ensure_has(dapp_storage: &DappStorage) {
62
+ let mut key_tuple = vector::empty();
63
+ key_tuple.push_back(TABLE_NAME);
64
+ dapp_system::ensure_has_global_record<DappKey>(dapp_storage, key_tuple)
65
+ }
66
+
67
+ public fun ensure_has_not(dapp_storage: &DappStorage) {
68
+ let mut key_tuple = vector::empty();
69
+ key_tuple.push_back(TABLE_NAME);
70
+ dapp_system::ensure_has_not_global_record<DappKey>(dapp_storage, key_tuple)
71
+ }
72
+
73
+
74
+ public(package) fun delete(dapp_storage: &mut DappStorage) {
75
+ let mut key_tuple = vector::empty();
76
+ key_tuple.push_back(TABLE_NAME);
77
+ dapp_system::delete_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, vector[b"season_id", b"end_ms", b"bonus_crop"]);
78
+ }
79
+
80
+ public fun get_season_id(dapp_storage: &DappStorage): u8 {
81
+ let mut key_tuple = vector::empty();
82
+ key_tuple.push_back(TABLE_NAME);
83
+ let season_id_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"season_id");
84
+ let mut season_id_bcs = sui::bcs::new(season_id_raw);
85
+ let season_id = sui::bcs::peel_u8(&mut season_id_bcs);
86
+ season_id
87
+ }
88
+
89
+ public(package) fun set_season_id(dapp_storage: &mut DappStorage, season_id: u8) {
90
+ let mut key_tuple = vector::empty();
91
+ key_tuple.push_back(TABLE_NAME);
92
+ let value = to_bytes(&season_id);
93
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"season_id", value);
94
+ }
95
+
96
+ public fun get_end_ms(dapp_storage: &DappStorage): u64 {
97
+ let mut key_tuple = vector::empty();
98
+ key_tuple.push_back(TABLE_NAME);
99
+ let end_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"end_ms");
100
+ let mut end_ms_bcs = sui::bcs::new(end_ms_raw);
101
+ let end_ms = sui::bcs::peel_u64(&mut end_ms_bcs);
102
+ end_ms
103
+ }
104
+
105
+ public(package) fun set_end_ms(dapp_storage: &mut DappStorage, end_ms: u64) {
106
+ let mut key_tuple = vector::empty();
107
+ key_tuple.push_back(TABLE_NAME);
108
+ let value = to_bytes(&end_ms);
109
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"end_ms", value);
110
+ }
111
+
112
+ public fun get_bonus_crop(dapp_storage: &DappStorage): u8 {
113
+ let mut key_tuple = vector::empty();
114
+ key_tuple.push_back(TABLE_NAME);
115
+ let bonus_crop_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"bonus_crop");
116
+ let mut bonus_crop_bcs = sui::bcs::new(bonus_crop_raw);
117
+ let bonus_crop = sui::bcs::peel_u8(&mut bonus_crop_bcs);
118
+ bonus_crop
119
+ }
120
+
121
+ public(package) fun set_bonus_crop(dapp_storage: &mut DappStorage, bonus_crop: u8) {
122
+ let mut key_tuple = vector::empty();
123
+ key_tuple.push_back(TABLE_NAME);
124
+ let value = to_bytes(&bonus_crop);
125
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"bonus_crop", value);
126
+ }
127
+
128
+ public fun get(dapp_storage: &DappStorage): (u8, u64, u8) {
129
+ let mut key_tuple = vector::empty();
130
+ key_tuple.push_back(TABLE_NAME);
131
+ let season_id_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"season_id");
132
+ let mut season_id_bcs = sui::bcs::new(season_id_raw);
133
+ let season_id = sui::bcs::peel_u8(&mut season_id_bcs);
134
+ let end_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"end_ms");
135
+ let mut end_ms_bcs = sui::bcs::new(end_ms_raw);
136
+ let end_ms = sui::bcs::peel_u64(&mut end_ms_bcs);
137
+ let bonus_crop_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"bonus_crop");
138
+ let mut bonus_crop_bcs = sui::bcs::new(bonus_crop_raw);
139
+ let bonus_crop = sui::bcs::peel_u8(&mut bonus_crop_bcs);
140
+ (season_id, end_ms, bonus_crop)
141
+ }
142
+
143
+ public(package) fun set(dapp_storage: &mut DappStorage, season_id: u8, end_ms: u64, bonus_crop: u8) {
144
+ let mut key_tuple = vector::empty();
145
+ key_tuple.push_back(TABLE_NAME);
146
+ let field_names = vector[b"season_id", b"end_ms", b"bonus_crop"];
147
+ let value_tuple = encode(season_id, end_ms, bonus_crop);
148
+ dapp_system::set_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, field_names, value_tuple, OFFCHAIN);
149
+ }
150
+
151
+ public fun get_struct(dapp_storage: &DappStorage): SeasonConfig {
152
+ let mut key_tuple = vector::empty();
153
+ key_tuple.push_back(TABLE_NAME);
154
+ let season_id_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"season_id");
155
+ let mut season_id_bcs = sui::bcs::new(season_id_raw);
156
+ let season_id = sui::bcs::peel_u8(&mut season_id_bcs);
157
+ let end_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"end_ms");
158
+ let mut end_ms_bcs = sui::bcs::new(end_ms_raw);
159
+ let end_ms = sui::bcs::peel_u64(&mut end_ms_bcs);
160
+ let bonus_crop_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"bonus_crop");
161
+ let mut bonus_crop_bcs = sui::bcs::new(bonus_crop_raw);
162
+ let bonus_crop = sui::bcs::peel_u8(&mut bonus_crop_bcs);
163
+ SeasonConfig { season_id, end_ms, bonus_crop }
164
+ }
165
+
166
+ public(package) fun set_struct(dapp_storage: &mut DappStorage, season_config: SeasonConfig) {
167
+ let mut key_tuple = vector::empty();
168
+ key_tuple.push_back(TABLE_NAME);
169
+ let field_names = vector[b"season_id", b"end_ms", b"bonus_crop"];
170
+ let value_tuple = encode_struct(season_config);
171
+ dapp_system::set_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, field_names, value_tuple, OFFCHAIN);
172
+ }
173
+
174
+ public fun encode(season_id: u8, end_ms: u64, bonus_crop: u8): vector<vector<u8>> {
175
+ let mut value_tuple = vector::empty();
176
+ value_tuple.push_back(to_bytes(&season_id));
177
+ value_tuple.push_back(to_bytes(&end_ms));
178
+ value_tuple.push_back(to_bytes(&bonus_crop));
179
+ value_tuple
180
+ }
181
+
182
+ public fun encode_struct(season_config: SeasonConfig): vector<vector<u8>> {
183
+ encode(season_config.season_id, season_config.end_ms, season_config.bonus_crop)
184
+ }
185
+
186
+ public fun decode(data: vector<u8>): SeasonConfig {
187
+ let mut bcs_type = sui::bcs::new(data);
188
+ let season_id = sui::bcs::peel_u8(&mut bcs_type);
189
+ let end_ms = sui::bcs::peel_u64(&mut bcs_type);
190
+ let bonus_crop = sui::bcs::peel_u8(&mut bcs_type);
191
+ SeasonConfig {
192
+ season_id,
193
+ end_ms,
194
+ bonus_crop,
195
+ }
196
+ }
197
+ }
@@ -0,0 +1,64 @@
1
+ // Copyright (c) Obelisk Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /* Autogenerated file. Do not edit manually. */
5
+
6
+ module harvest::season_stats {
7
+ use sui::bcs::{to_bytes};
8
+ use dubhe::dapp_service::UserStorage;
9
+ use dubhe::dapp_system;
10
+ use harvest::dapp_key;
11
+ use harvest::dapp_key::DappKey;
12
+
13
+
14
+ const TABLE_NAME: vector<u8> = b"season_stats";
15
+ const OFFCHAIN: bool = false;
16
+
17
+ public fun has(user_storage: &UserStorage): bool {
18
+ let mut key_tuple = vector::empty();
19
+ key_tuple.push_back(TABLE_NAME);
20
+ dapp_system::has_record<DappKey>(user_storage, key_tuple)
21
+ }
22
+
23
+ public fun ensure_has(user_storage: &UserStorage) {
24
+ let mut key_tuple = vector::empty();
25
+ key_tuple.push_back(TABLE_NAME);
26
+ dapp_system::ensure_has_record<DappKey>(user_storage, key_tuple)
27
+ }
28
+
29
+ public fun ensure_has_not(user_storage: &UserStorage) {
30
+ let mut key_tuple = vector::empty();
31
+ key_tuple.push_back(TABLE_NAME);
32
+ dapp_system::ensure_has_not_record<DappKey>(user_storage, key_tuple)
33
+ }
34
+
35
+
36
+ public(package) fun delete(user_storage: &mut UserStorage, ctx: &TxContext) {
37
+ let mut key_tuple = vector::empty();
38
+ key_tuple.push_back(TABLE_NAME);
39
+ dapp_system::delete_record<DappKey>(dapp_key::new(), user_storage, key_tuple, vector[b"earned_this_season"], ctx);
40
+ }
41
+
42
+ public fun get(user_storage: &UserStorage): u64 {
43
+ let mut key_tuple = vector::empty();
44
+ key_tuple.push_back(TABLE_NAME);
45
+ let earned_this_season_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"earned_this_season");
46
+ let mut earned_this_season_bcs = sui::bcs::new(earned_this_season_raw);
47
+ let value = sui::bcs::peel_u64(&mut earned_this_season_bcs);
48
+ value
49
+ }
50
+
51
+ public(package) fun set(user_storage: &mut UserStorage, value: u64, ctx: &mut TxContext) {
52
+ let mut key_tuple = vector::empty();
53
+ key_tuple.push_back(TABLE_NAME);
54
+ let field_names = vector[b"earned_this_season"];
55
+ let value_tuple = encode(value);
56
+ dapp_system::set_record<DappKey>(dapp_key::new(), user_storage, key_tuple, field_names, value_tuple, OFFCHAIN, ctx);
57
+ }
58
+
59
+ public fun encode(value: u64): vector<vector<u8>> {
60
+ let mut value_tuple = vector::empty();
61
+ value_tuple.push_back(to_bytes(&value));
62
+ value_tuple
63
+ }
64
+ }
@@ -0,0 +1,136 @@
1
+ // Copyright (c) Obelisk Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /* Autogenerated file. Do not edit manually. */
5
+
6
+ module harvest::seasonal_egg {
7
+ use sui::bcs::{to_bytes};
8
+ use dubhe::dapp_service::{UserStorage, DappStorage};
9
+ use dubhe::dapp_system;
10
+ use harvest::dapp_key;
11
+ use harvest::dapp_key::DappKey;
12
+
13
+
14
+ const TABLE_NAME: vector<u8> = b"seasonal_egg";
15
+ const OFFCHAIN: bool = false;
16
+
17
+ public fun has(user_storage: &UserStorage): bool {
18
+ let mut key_tuple = vector::empty();
19
+ key_tuple.push_back(TABLE_NAME);
20
+ dapp_system::has_record<DappKey>(user_storage, key_tuple)
21
+ }
22
+
23
+ public fun ensure_has(user_storage: &UserStorage) {
24
+ let mut key_tuple = vector::empty();
25
+ key_tuple.push_back(TABLE_NAME);
26
+ dapp_system::ensure_has_record<DappKey>(user_storage, key_tuple)
27
+ }
28
+
29
+ public fun ensure_has_not(user_storage: &UserStorage) {
30
+ let mut key_tuple = vector::empty();
31
+ key_tuple.push_back(TABLE_NAME);
32
+ dapp_system::ensure_has_not_record<DappKey>(user_storage, key_tuple)
33
+ }
34
+
35
+
36
+ public(package) fun delete(user_storage: &mut UserStorage, ctx: &TxContext) {
37
+ let mut key_tuple = vector::empty();
38
+ key_tuple.push_back(TABLE_NAME);
39
+ dapp_system::delete_record<DappKey>(dapp_key::new(), user_storage, key_tuple, vector[b"amount"], ctx);
40
+ }
41
+
42
+ public fun get(user_storage: &UserStorage): u64 {
43
+ let mut key_tuple = vector::empty();
44
+ key_tuple.push_back(TABLE_NAME);
45
+ let amount_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"amount");
46
+ let mut amount_bcs = sui::bcs::new(amount_raw);
47
+ let value = sui::bcs::peel_u64(&mut amount_bcs);
48
+ value
49
+ }
50
+
51
+ public(package) fun set(user_storage: &mut UserStorage, value: u64, ctx: &mut TxContext) {
52
+ let mut key_tuple = vector::empty();
53
+ key_tuple.push_back(TABLE_NAME);
54
+ let field_names = vector[b"amount"];
55
+ let value_tuple = encode(value);
56
+ dapp_system::set_record<DappKey>(dapp_key::new(), user_storage, key_tuple, field_names, value_tuple, OFFCHAIN, ctx);
57
+ }
58
+
59
+ public fun encode(value: u64): vector<vector<u8>> {
60
+ let mut value_tuple = vector::empty();
61
+ value_tuple.push_back(to_bytes(&value));
62
+ value_tuple
63
+ }
64
+
65
+
66
+ // ─── fungible add / sub ─────────────────────────────────────────────
67
+ #[error]
68
+ const EInsufficientAmount: vector<u8> = b"Insufficient amount";
69
+
70
+ public(package) fun add(user_storage: &mut UserStorage, amount: u64, ctx: &mut TxContext) {
71
+ let current = if (has(user_storage)) { get(user_storage) } else { 0 };
72
+ set(user_storage, current + amount, ctx);
73
+ }
74
+
75
+ public(package) fun sub(user_storage: &mut UserStorage, amount: u64, ctx: &mut TxContext) {
76
+ let current = get(user_storage);
77
+ assert!(current >= amount, EInsufficientAmount);
78
+ set(user_storage, current - amount, ctx);
79
+ }
80
+
81
+ // ─── listable: market protocol (fungible) ──────────────────────────
82
+ // Package-level helpers: call these from your system functions.
83
+ // Add pause checks, access control, and custom logic there.
84
+ public(package) fun list<CoinType>(
85
+ user_storage: &mut UserStorage,
86
+ amount: u64,
87
+ price: u64,
88
+ listed_until: std::option::Option<u64>,
89
+ ctx: &mut TxContext,
90
+ ) {
91
+ dubhe::dapp_system::take_fungible_record<DappKey, CoinType>(
92
+ dapp_key::new(),
93
+ user_storage,
94
+ b"seasonal_egg",
95
+ { let mut k = vector::empty(); k.push_back(TABLE_NAME); k },
96
+ b"amount",
97
+ amount,
98
+ price,
99
+ listed_until,
100
+ ctx,
101
+ );
102
+ }
103
+
104
+ public(package) fun buy<CoinType>(
105
+ dh: &dubhe::dapp_service::DappHub,
106
+ dapp_storage: &mut DappStorage,
107
+ listing: dubhe::dapp_service::Listing<CoinType>,
108
+ user_storage: &mut UserStorage,
109
+ payment: sui::coin::Coin<CoinType>,
110
+ ctx: &mut TxContext,
111
+ ): sui::coin::Coin<CoinType> {
112
+ dubhe::dapp_system::buy_fungible_record<DappKey, CoinType>(
113
+ dapp_key::new(), dh, dapp_storage, listing, user_storage, payment, ctx
114
+ )
115
+ }
116
+
117
+ public(package) fun cancel_listing<CoinType>(
118
+ listing: dubhe::dapp_service::Listing<CoinType>,
119
+ user_storage: &mut UserStorage,
120
+ ctx: &TxContext,
121
+ ) {
122
+ dubhe::dapp_system::cancel_fungible_listing<DappKey, CoinType>(
123
+ dapp_key::new(), listing, user_storage, ctx
124
+ );
125
+ }
126
+
127
+ public(package) fun expire_listing<CoinType>(
128
+ listing: dubhe::dapp_service::Listing<CoinType>,
129
+ user_storage: &mut UserStorage,
130
+ ctx: &TxContext,
131
+ ) {
132
+ dubhe::dapp_system::expire_fungible_listing<DappKey, CoinType>(
133
+ dapp_key::new(), listing, user_storage, ctx
134
+ );
135
+ }
136
+ }
@@ -0,0 +1,267 @@
1
+ // Copyright (c) Obelisk Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /* Autogenerated file. Do not edit manually. */
5
+
6
+ module harvest::shop_config {
7
+ use sui::bcs::{to_bytes};
8
+ use dubhe::dapp_service::DappStorage;
9
+ use dubhe::dapp_system;
10
+ use harvest::dapp_key;
11
+ use harvest::dapp_key::DappKey;
12
+
13
+
14
+ const TABLE_NAME: vector<u8> = b"shop_config";
15
+ const OFFCHAIN: bool = false;
16
+
17
+ public struct ShopConfig has copy, drop, store {
18
+ wheat_seed_price: u64,
19
+ corn_seed_price: u64,
20
+ carrot_seed_price: u64,
21
+ pumpkin_seed_price: u64,
22
+ extra_plot_price: u64,
23
+ }
24
+
25
+ public fun new(wheat_seed_price: u64, corn_seed_price: u64, carrot_seed_price: u64, pumpkin_seed_price: u64, extra_plot_price: u64): ShopConfig {
26
+ ShopConfig {
27
+ wheat_seed_price,
28
+ corn_seed_price,
29
+ carrot_seed_price,
30
+ pumpkin_seed_price,
31
+ extra_plot_price,
32
+ }
33
+ }
34
+
35
+ public fun wheat_seed_price(self: &ShopConfig): u64 {
36
+ self.wheat_seed_price
37
+ }
38
+
39
+ public fun corn_seed_price(self: &ShopConfig): u64 {
40
+ self.corn_seed_price
41
+ }
42
+
43
+ public fun carrot_seed_price(self: &ShopConfig): u64 {
44
+ self.carrot_seed_price
45
+ }
46
+
47
+ public fun pumpkin_seed_price(self: &ShopConfig): u64 {
48
+ self.pumpkin_seed_price
49
+ }
50
+
51
+ public fun extra_plot_price(self: &ShopConfig): u64 {
52
+ self.extra_plot_price
53
+ }
54
+
55
+ public fun update_wheat_seed_price(self: &mut ShopConfig, wheat_seed_price: u64) {
56
+ self.wheat_seed_price = wheat_seed_price
57
+ }
58
+
59
+ public fun update_corn_seed_price(self: &mut ShopConfig, corn_seed_price: u64) {
60
+ self.corn_seed_price = corn_seed_price
61
+ }
62
+
63
+ public fun update_carrot_seed_price(self: &mut ShopConfig, carrot_seed_price: u64) {
64
+ self.carrot_seed_price = carrot_seed_price
65
+ }
66
+
67
+ public fun update_pumpkin_seed_price(self: &mut ShopConfig, pumpkin_seed_price: u64) {
68
+ self.pumpkin_seed_price = pumpkin_seed_price
69
+ }
70
+
71
+ public fun update_extra_plot_price(self: &mut ShopConfig, extra_plot_price: u64) {
72
+ self.extra_plot_price = extra_plot_price
73
+ }
74
+
75
+ public fun has(dapp_storage: &DappStorage): bool {
76
+ let mut key_tuple = vector::empty();
77
+ key_tuple.push_back(TABLE_NAME);
78
+ dapp_system::has_global_record<DappKey>(dapp_storage, key_tuple)
79
+ }
80
+
81
+ public fun ensure_has(dapp_storage: &DappStorage) {
82
+ let mut key_tuple = vector::empty();
83
+ key_tuple.push_back(TABLE_NAME);
84
+ dapp_system::ensure_has_global_record<DappKey>(dapp_storage, key_tuple)
85
+ }
86
+
87
+ public fun ensure_has_not(dapp_storage: &DappStorage) {
88
+ let mut key_tuple = vector::empty();
89
+ key_tuple.push_back(TABLE_NAME);
90
+ dapp_system::ensure_has_not_global_record<DappKey>(dapp_storage, key_tuple)
91
+ }
92
+
93
+
94
+ public(package) fun delete(dapp_storage: &mut DappStorage) {
95
+ let mut key_tuple = vector::empty();
96
+ key_tuple.push_back(TABLE_NAME);
97
+ dapp_system::delete_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, vector[b"wheat_seed_price", b"corn_seed_price", b"carrot_seed_price", b"pumpkin_seed_price", b"extra_plot_price"]);
98
+ }
99
+
100
+ public fun get_wheat_seed_price(dapp_storage: &DappStorage): u64 {
101
+ let mut key_tuple = vector::empty();
102
+ key_tuple.push_back(TABLE_NAME);
103
+ let wheat_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"wheat_seed_price");
104
+ let mut wheat_seed_price_bcs = sui::bcs::new(wheat_seed_price_raw);
105
+ let wheat_seed_price = sui::bcs::peel_u64(&mut wheat_seed_price_bcs);
106
+ wheat_seed_price
107
+ }
108
+
109
+ public(package) fun set_wheat_seed_price(dapp_storage: &mut DappStorage, wheat_seed_price: u64) {
110
+ let mut key_tuple = vector::empty();
111
+ key_tuple.push_back(TABLE_NAME);
112
+ let value = to_bytes(&wheat_seed_price);
113
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"wheat_seed_price", value);
114
+ }
115
+
116
+ public fun get_corn_seed_price(dapp_storage: &DappStorage): u64 {
117
+ let mut key_tuple = vector::empty();
118
+ key_tuple.push_back(TABLE_NAME);
119
+ let corn_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"corn_seed_price");
120
+ let mut corn_seed_price_bcs = sui::bcs::new(corn_seed_price_raw);
121
+ let corn_seed_price = sui::bcs::peel_u64(&mut corn_seed_price_bcs);
122
+ corn_seed_price
123
+ }
124
+
125
+ public(package) fun set_corn_seed_price(dapp_storage: &mut DappStorage, corn_seed_price: u64) {
126
+ let mut key_tuple = vector::empty();
127
+ key_tuple.push_back(TABLE_NAME);
128
+ let value = to_bytes(&corn_seed_price);
129
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"corn_seed_price", value);
130
+ }
131
+
132
+ public fun get_carrot_seed_price(dapp_storage: &DappStorage): u64 {
133
+ let mut key_tuple = vector::empty();
134
+ key_tuple.push_back(TABLE_NAME);
135
+ let carrot_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"carrot_seed_price");
136
+ let mut carrot_seed_price_bcs = sui::bcs::new(carrot_seed_price_raw);
137
+ let carrot_seed_price = sui::bcs::peel_u64(&mut carrot_seed_price_bcs);
138
+ carrot_seed_price
139
+ }
140
+
141
+ public(package) fun set_carrot_seed_price(dapp_storage: &mut DappStorage, carrot_seed_price: u64) {
142
+ let mut key_tuple = vector::empty();
143
+ key_tuple.push_back(TABLE_NAME);
144
+ let value = to_bytes(&carrot_seed_price);
145
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"carrot_seed_price", value);
146
+ }
147
+
148
+ public fun get_pumpkin_seed_price(dapp_storage: &DappStorage): u64 {
149
+ let mut key_tuple = vector::empty();
150
+ key_tuple.push_back(TABLE_NAME);
151
+ let pumpkin_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"pumpkin_seed_price");
152
+ let mut pumpkin_seed_price_bcs = sui::bcs::new(pumpkin_seed_price_raw);
153
+ let pumpkin_seed_price = sui::bcs::peel_u64(&mut pumpkin_seed_price_bcs);
154
+ pumpkin_seed_price
155
+ }
156
+
157
+ public(package) fun set_pumpkin_seed_price(dapp_storage: &mut DappStorage, pumpkin_seed_price: u64) {
158
+ let mut key_tuple = vector::empty();
159
+ key_tuple.push_back(TABLE_NAME);
160
+ let value = to_bytes(&pumpkin_seed_price);
161
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"pumpkin_seed_price", value);
162
+ }
163
+
164
+ public fun get_extra_plot_price(dapp_storage: &DappStorage): u64 {
165
+ let mut key_tuple = vector::empty();
166
+ key_tuple.push_back(TABLE_NAME);
167
+ let extra_plot_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"extra_plot_price");
168
+ let mut extra_plot_price_bcs = sui::bcs::new(extra_plot_price_raw);
169
+ let extra_plot_price = sui::bcs::peel_u64(&mut extra_plot_price_bcs);
170
+ extra_plot_price
171
+ }
172
+
173
+ public(package) fun set_extra_plot_price(dapp_storage: &mut DappStorage, extra_plot_price: u64) {
174
+ let mut key_tuple = vector::empty();
175
+ key_tuple.push_back(TABLE_NAME);
176
+ let value = to_bytes(&extra_plot_price);
177
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"extra_plot_price", value);
178
+ }
179
+
180
+ public fun get(dapp_storage: &DappStorage): (u64, u64, u64, u64, u64) {
181
+ let mut key_tuple = vector::empty();
182
+ key_tuple.push_back(TABLE_NAME);
183
+ let wheat_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"wheat_seed_price");
184
+ let mut wheat_seed_price_bcs = sui::bcs::new(wheat_seed_price_raw);
185
+ let wheat_seed_price = sui::bcs::peel_u64(&mut wheat_seed_price_bcs);
186
+ let corn_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"corn_seed_price");
187
+ let mut corn_seed_price_bcs = sui::bcs::new(corn_seed_price_raw);
188
+ let corn_seed_price = sui::bcs::peel_u64(&mut corn_seed_price_bcs);
189
+ let carrot_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"carrot_seed_price");
190
+ let mut carrot_seed_price_bcs = sui::bcs::new(carrot_seed_price_raw);
191
+ let carrot_seed_price = sui::bcs::peel_u64(&mut carrot_seed_price_bcs);
192
+ let pumpkin_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"pumpkin_seed_price");
193
+ let mut pumpkin_seed_price_bcs = sui::bcs::new(pumpkin_seed_price_raw);
194
+ let pumpkin_seed_price = sui::bcs::peel_u64(&mut pumpkin_seed_price_bcs);
195
+ let extra_plot_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"extra_plot_price");
196
+ let mut extra_plot_price_bcs = sui::bcs::new(extra_plot_price_raw);
197
+ let extra_plot_price = sui::bcs::peel_u64(&mut extra_plot_price_bcs);
198
+ (wheat_seed_price, corn_seed_price, carrot_seed_price, pumpkin_seed_price, extra_plot_price)
199
+ }
200
+
201
+ public(package) fun set(dapp_storage: &mut DappStorage, wheat_seed_price: u64, corn_seed_price: u64, carrot_seed_price: u64, pumpkin_seed_price: u64, extra_plot_price: u64) {
202
+ let mut key_tuple = vector::empty();
203
+ key_tuple.push_back(TABLE_NAME);
204
+ let field_names = vector[b"wheat_seed_price", b"corn_seed_price", b"carrot_seed_price", b"pumpkin_seed_price", b"extra_plot_price"];
205
+ let value_tuple = encode(wheat_seed_price, corn_seed_price, carrot_seed_price, pumpkin_seed_price, extra_plot_price);
206
+ dapp_system::set_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, field_names, value_tuple, OFFCHAIN);
207
+ }
208
+
209
+ public fun get_struct(dapp_storage: &DappStorage): ShopConfig {
210
+ let mut key_tuple = vector::empty();
211
+ key_tuple.push_back(TABLE_NAME);
212
+ let wheat_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"wheat_seed_price");
213
+ let mut wheat_seed_price_bcs = sui::bcs::new(wheat_seed_price_raw);
214
+ let wheat_seed_price = sui::bcs::peel_u64(&mut wheat_seed_price_bcs);
215
+ let corn_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"corn_seed_price");
216
+ let mut corn_seed_price_bcs = sui::bcs::new(corn_seed_price_raw);
217
+ let corn_seed_price = sui::bcs::peel_u64(&mut corn_seed_price_bcs);
218
+ let carrot_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"carrot_seed_price");
219
+ let mut carrot_seed_price_bcs = sui::bcs::new(carrot_seed_price_raw);
220
+ let carrot_seed_price = sui::bcs::peel_u64(&mut carrot_seed_price_bcs);
221
+ let pumpkin_seed_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"pumpkin_seed_price");
222
+ let mut pumpkin_seed_price_bcs = sui::bcs::new(pumpkin_seed_price_raw);
223
+ let pumpkin_seed_price = sui::bcs::peel_u64(&mut pumpkin_seed_price_bcs);
224
+ let extra_plot_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"extra_plot_price");
225
+ let mut extra_plot_price_bcs = sui::bcs::new(extra_plot_price_raw);
226
+ let extra_plot_price = sui::bcs::peel_u64(&mut extra_plot_price_bcs);
227
+ ShopConfig { wheat_seed_price, corn_seed_price, carrot_seed_price, pumpkin_seed_price, extra_plot_price }
228
+ }
229
+
230
+ public(package) fun set_struct(dapp_storage: &mut DappStorage, shop_config: ShopConfig) {
231
+ let mut key_tuple = vector::empty();
232
+ key_tuple.push_back(TABLE_NAME);
233
+ let field_names = vector[b"wheat_seed_price", b"corn_seed_price", b"carrot_seed_price", b"pumpkin_seed_price", b"extra_plot_price"];
234
+ let value_tuple = encode_struct(shop_config);
235
+ dapp_system::set_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, field_names, value_tuple, OFFCHAIN);
236
+ }
237
+
238
+ public fun encode(wheat_seed_price: u64, corn_seed_price: u64, carrot_seed_price: u64, pumpkin_seed_price: u64, extra_plot_price: u64): vector<vector<u8>> {
239
+ let mut value_tuple = vector::empty();
240
+ value_tuple.push_back(to_bytes(&wheat_seed_price));
241
+ value_tuple.push_back(to_bytes(&corn_seed_price));
242
+ value_tuple.push_back(to_bytes(&carrot_seed_price));
243
+ value_tuple.push_back(to_bytes(&pumpkin_seed_price));
244
+ value_tuple.push_back(to_bytes(&extra_plot_price));
245
+ value_tuple
246
+ }
247
+
248
+ public fun encode_struct(shop_config: ShopConfig): vector<vector<u8>> {
249
+ encode(shop_config.wheat_seed_price, shop_config.corn_seed_price, shop_config.carrot_seed_price, shop_config.pumpkin_seed_price, shop_config.extra_plot_price)
250
+ }
251
+
252
+ public fun decode(data: vector<u8>): ShopConfig {
253
+ let mut bcs_type = sui::bcs::new(data);
254
+ let wheat_seed_price = sui::bcs::peel_u64(&mut bcs_type);
255
+ let corn_seed_price = sui::bcs::peel_u64(&mut bcs_type);
256
+ let carrot_seed_price = sui::bcs::peel_u64(&mut bcs_type);
257
+ let pumpkin_seed_price = sui::bcs::peel_u64(&mut bcs_type);
258
+ let extra_plot_price = sui::bcs::peel_u64(&mut bcs_type);
259
+ ShopConfig {
260
+ wheat_seed_price,
261
+ corn_seed_price,
262
+ carrot_seed_price,
263
+ pumpkin_seed_price,
264
+ extra_plot_price,
265
+ }
266
+ }
267
+ }