create-dubhe 1.2.0-pre.99 → 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 (360) 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 +4 -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 +4 -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/sources/codegen/dapp_key.move +45 -31
  297. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/error.move +10 -0
  298. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move +30 -13
  299. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move +19 -14
  300. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter1.move +30 -20
  301. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2.move +35 -24
  302. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/user_storage_init.move +26 -0
  303. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/scripts/deploy_hook.move +6 -10
  304. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/systems/counter.move +7 -20
  305. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/tests/counter.move +14 -27
  306. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.lock +33 -30
  307. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.toml +4 -3
  308. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/dapp_key.move +45 -31
  309. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/error.move +170 -0
  310. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/genesis.move +16 -13
  311. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/init_test.move +8 -14
  312. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/account_key.move +1 -3
  313. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/dapp_service.move +1776 -137
  314. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/data_key.move +1 -20
  315. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/events.move +864 -25
  316. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/scripts/deploy_hook.move +15 -16
  317. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/scripts/migrate.move +0 -3
  318. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/address_system.move +25 -17
  319. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/dapp_system.move +2802 -343
  320. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/utils.move +1 -1
  321. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/address.move +173 -55
  322. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/dapp_test.move +769 -0
  323. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/fee_test.move +2965 -0
  324. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/integration_test.move +303 -0
  325. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/listing_test.move +1422 -0
  326. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/scene_session_test.move +269 -0
  327. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/session_test.move +624 -0
  328. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/storage_test.move +700 -0
  329. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/typed_object_test.move +177 -0
  330. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/typed_scene_test.move +452 -0
  331. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/user_storage_test.move +160 -0
  332. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/math.move +4 -3
  333. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/type_info.move +2 -2
  334. package/templates/101/sui-template/packages/contracts/src/counter/Move.lock +0 -41
  335. package/templates/101/sui-template/packages/contracts/src/counter/Published.toml +0 -9
  336. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/errors.move +0 -12
  337. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/errors.move +0 -140
  338. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
  339. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
  340. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
  341. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
  342. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +0 -29
  343. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/session_system.move +0 -44
  344. package/templates/contract/sui-template/src/dubhe/sources/codegen/errors.move +0 -140
  345. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
  346. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
  347. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
  348. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
  349. package/templates/contract/sui-template/src/dubhe/sources/core/dapp_store.move +0 -29
  350. package/templates/contract/sui-template/src/dubhe/sources/systems/session_system.move +0 -44
  351. package/templates/nextjs/sui-template/packages/contracts/src/counter/Move.lock +0 -47
  352. package/templates/nextjs/sui-template/packages/contracts/src/counter/Published.toml +0 -9
  353. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/errors.move +0 -12
  354. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/errors.move +0 -140
  355. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
  356. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
  357. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
  358. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
  359. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +0 -29
  360. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/session_system.move +0 -44
@@ -0,0 +1,372 @@
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::pet_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"pet_config";
15
+ const OFFCHAIN: bool = false;
16
+
17
+ public struct PetConfig has copy, drop, store {
18
+ common_egg_price: u64,
19
+ rare_egg_price: u64,
20
+ seasonal_egg_price: u64,
21
+ common_hatch_ms: u64,
22
+ rare_hatch_ms: u64,
23
+ seasonal_hatch_ms: u64,
24
+ slot2_price: u64,
25
+ slot3_price: u64,
26
+ }
27
+
28
+ public fun new(common_egg_price: u64, rare_egg_price: u64, seasonal_egg_price: u64, common_hatch_ms: u64, rare_hatch_ms: u64, seasonal_hatch_ms: u64, slot2_price: u64, slot3_price: u64): PetConfig {
29
+ PetConfig {
30
+ common_egg_price,
31
+ rare_egg_price,
32
+ seasonal_egg_price,
33
+ common_hatch_ms,
34
+ rare_hatch_ms,
35
+ seasonal_hatch_ms,
36
+ slot2_price,
37
+ slot3_price,
38
+ }
39
+ }
40
+
41
+ public fun common_egg_price(self: &PetConfig): u64 {
42
+ self.common_egg_price
43
+ }
44
+
45
+ public fun rare_egg_price(self: &PetConfig): u64 {
46
+ self.rare_egg_price
47
+ }
48
+
49
+ public fun seasonal_egg_price(self: &PetConfig): u64 {
50
+ self.seasonal_egg_price
51
+ }
52
+
53
+ public fun common_hatch_ms(self: &PetConfig): u64 {
54
+ self.common_hatch_ms
55
+ }
56
+
57
+ public fun rare_hatch_ms(self: &PetConfig): u64 {
58
+ self.rare_hatch_ms
59
+ }
60
+
61
+ public fun seasonal_hatch_ms(self: &PetConfig): u64 {
62
+ self.seasonal_hatch_ms
63
+ }
64
+
65
+ public fun slot2_price(self: &PetConfig): u64 {
66
+ self.slot2_price
67
+ }
68
+
69
+ public fun slot3_price(self: &PetConfig): u64 {
70
+ self.slot3_price
71
+ }
72
+
73
+ public fun update_common_egg_price(self: &mut PetConfig, common_egg_price: u64) {
74
+ self.common_egg_price = common_egg_price
75
+ }
76
+
77
+ public fun update_rare_egg_price(self: &mut PetConfig, rare_egg_price: u64) {
78
+ self.rare_egg_price = rare_egg_price
79
+ }
80
+
81
+ public fun update_seasonal_egg_price(self: &mut PetConfig, seasonal_egg_price: u64) {
82
+ self.seasonal_egg_price = seasonal_egg_price
83
+ }
84
+
85
+ public fun update_common_hatch_ms(self: &mut PetConfig, common_hatch_ms: u64) {
86
+ self.common_hatch_ms = common_hatch_ms
87
+ }
88
+
89
+ public fun update_rare_hatch_ms(self: &mut PetConfig, rare_hatch_ms: u64) {
90
+ self.rare_hatch_ms = rare_hatch_ms
91
+ }
92
+
93
+ public fun update_seasonal_hatch_ms(self: &mut PetConfig, seasonal_hatch_ms: u64) {
94
+ self.seasonal_hatch_ms = seasonal_hatch_ms
95
+ }
96
+
97
+ public fun update_slot2_price(self: &mut PetConfig, slot2_price: u64) {
98
+ self.slot2_price = slot2_price
99
+ }
100
+
101
+ public fun update_slot3_price(self: &mut PetConfig, slot3_price: u64) {
102
+ self.slot3_price = slot3_price
103
+ }
104
+
105
+ public fun has(dapp_storage: &DappStorage): bool {
106
+ let mut key_tuple = vector::empty();
107
+ key_tuple.push_back(TABLE_NAME);
108
+ dapp_system::has_global_record<DappKey>(dapp_storage, key_tuple)
109
+ }
110
+
111
+ public fun ensure_has(dapp_storage: &DappStorage) {
112
+ let mut key_tuple = vector::empty();
113
+ key_tuple.push_back(TABLE_NAME);
114
+ dapp_system::ensure_has_global_record<DappKey>(dapp_storage, key_tuple)
115
+ }
116
+
117
+ public fun ensure_has_not(dapp_storage: &DappStorage) {
118
+ let mut key_tuple = vector::empty();
119
+ key_tuple.push_back(TABLE_NAME);
120
+ dapp_system::ensure_has_not_global_record<DappKey>(dapp_storage, key_tuple)
121
+ }
122
+
123
+
124
+ public(package) fun delete(dapp_storage: &mut DappStorage) {
125
+ let mut key_tuple = vector::empty();
126
+ key_tuple.push_back(TABLE_NAME);
127
+ dapp_system::delete_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, vector[b"common_egg_price", b"rare_egg_price", b"seasonal_egg_price", b"common_hatch_ms", b"rare_hatch_ms", b"seasonal_hatch_ms", b"slot2_price", b"slot3_price"]);
128
+ }
129
+
130
+ public fun get_common_egg_price(dapp_storage: &DappStorage): u64 {
131
+ let mut key_tuple = vector::empty();
132
+ key_tuple.push_back(TABLE_NAME);
133
+ let common_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"common_egg_price");
134
+ let mut common_egg_price_bcs = sui::bcs::new(common_egg_price_raw);
135
+ let common_egg_price = sui::bcs::peel_u64(&mut common_egg_price_bcs);
136
+ common_egg_price
137
+ }
138
+
139
+ public(package) fun set_common_egg_price(dapp_storage: &mut DappStorage, common_egg_price: u64) {
140
+ let mut key_tuple = vector::empty();
141
+ key_tuple.push_back(TABLE_NAME);
142
+ let value = to_bytes(&common_egg_price);
143
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"common_egg_price", value);
144
+ }
145
+
146
+ public fun get_rare_egg_price(dapp_storage: &DappStorage): u64 {
147
+ let mut key_tuple = vector::empty();
148
+ key_tuple.push_back(TABLE_NAME);
149
+ let rare_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"rare_egg_price");
150
+ let mut rare_egg_price_bcs = sui::bcs::new(rare_egg_price_raw);
151
+ let rare_egg_price = sui::bcs::peel_u64(&mut rare_egg_price_bcs);
152
+ rare_egg_price
153
+ }
154
+
155
+ public(package) fun set_rare_egg_price(dapp_storage: &mut DappStorage, rare_egg_price: u64) {
156
+ let mut key_tuple = vector::empty();
157
+ key_tuple.push_back(TABLE_NAME);
158
+ let value = to_bytes(&rare_egg_price);
159
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"rare_egg_price", value);
160
+ }
161
+
162
+ public fun get_seasonal_egg_price(dapp_storage: &DappStorage): u64 {
163
+ let mut key_tuple = vector::empty();
164
+ key_tuple.push_back(TABLE_NAME);
165
+ let seasonal_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"seasonal_egg_price");
166
+ let mut seasonal_egg_price_bcs = sui::bcs::new(seasonal_egg_price_raw);
167
+ let seasonal_egg_price = sui::bcs::peel_u64(&mut seasonal_egg_price_bcs);
168
+ seasonal_egg_price
169
+ }
170
+
171
+ public(package) fun set_seasonal_egg_price(dapp_storage: &mut DappStorage, seasonal_egg_price: u64) {
172
+ let mut key_tuple = vector::empty();
173
+ key_tuple.push_back(TABLE_NAME);
174
+ let value = to_bytes(&seasonal_egg_price);
175
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"seasonal_egg_price", value);
176
+ }
177
+
178
+ public fun get_common_hatch_ms(dapp_storage: &DappStorage): u64 {
179
+ let mut key_tuple = vector::empty();
180
+ key_tuple.push_back(TABLE_NAME);
181
+ let common_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"common_hatch_ms");
182
+ let mut common_hatch_ms_bcs = sui::bcs::new(common_hatch_ms_raw);
183
+ let common_hatch_ms = sui::bcs::peel_u64(&mut common_hatch_ms_bcs);
184
+ common_hatch_ms
185
+ }
186
+
187
+ public(package) fun set_common_hatch_ms(dapp_storage: &mut DappStorage, common_hatch_ms: u64) {
188
+ let mut key_tuple = vector::empty();
189
+ key_tuple.push_back(TABLE_NAME);
190
+ let value = to_bytes(&common_hatch_ms);
191
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"common_hatch_ms", value);
192
+ }
193
+
194
+ public fun get_rare_hatch_ms(dapp_storage: &DappStorage): u64 {
195
+ let mut key_tuple = vector::empty();
196
+ key_tuple.push_back(TABLE_NAME);
197
+ let rare_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"rare_hatch_ms");
198
+ let mut rare_hatch_ms_bcs = sui::bcs::new(rare_hatch_ms_raw);
199
+ let rare_hatch_ms = sui::bcs::peel_u64(&mut rare_hatch_ms_bcs);
200
+ rare_hatch_ms
201
+ }
202
+
203
+ public(package) fun set_rare_hatch_ms(dapp_storage: &mut DappStorage, rare_hatch_ms: u64) {
204
+ let mut key_tuple = vector::empty();
205
+ key_tuple.push_back(TABLE_NAME);
206
+ let value = to_bytes(&rare_hatch_ms);
207
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"rare_hatch_ms", value);
208
+ }
209
+
210
+ public fun get_seasonal_hatch_ms(dapp_storage: &DappStorage): u64 {
211
+ let mut key_tuple = vector::empty();
212
+ key_tuple.push_back(TABLE_NAME);
213
+ let seasonal_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"seasonal_hatch_ms");
214
+ let mut seasonal_hatch_ms_bcs = sui::bcs::new(seasonal_hatch_ms_raw);
215
+ let seasonal_hatch_ms = sui::bcs::peel_u64(&mut seasonal_hatch_ms_bcs);
216
+ seasonal_hatch_ms
217
+ }
218
+
219
+ public(package) fun set_seasonal_hatch_ms(dapp_storage: &mut DappStorage, seasonal_hatch_ms: u64) {
220
+ let mut key_tuple = vector::empty();
221
+ key_tuple.push_back(TABLE_NAME);
222
+ let value = to_bytes(&seasonal_hatch_ms);
223
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"seasonal_hatch_ms", value);
224
+ }
225
+
226
+ public fun get_slot2_price(dapp_storage: &DappStorage): u64 {
227
+ let mut key_tuple = vector::empty();
228
+ key_tuple.push_back(TABLE_NAME);
229
+ let slot2_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"slot2_price");
230
+ let mut slot2_price_bcs = sui::bcs::new(slot2_price_raw);
231
+ let slot2_price = sui::bcs::peel_u64(&mut slot2_price_bcs);
232
+ slot2_price
233
+ }
234
+
235
+ public(package) fun set_slot2_price(dapp_storage: &mut DappStorage, slot2_price: u64) {
236
+ let mut key_tuple = vector::empty();
237
+ key_tuple.push_back(TABLE_NAME);
238
+ let value = to_bytes(&slot2_price);
239
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"slot2_price", value);
240
+ }
241
+
242
+ public fun get_slot3_price(dapp_storage: &DappStorage): u64 {
243
+ let mut key_tuple = vector::empty();
244
+ key_tuple.push_back(TABLE_NAME);
245
+ let slot3_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"slot3_price");
246
+ let mut slot3_price_bcs = sui::bcs::new(slot3_price_raw);
247
+ let slot3_price = sui::bcs::peel_u64(&mut slot3_price_bcs);
248
+ slot3_price
249
+ }
250
+
251
+ public(package) fun set_slot3_price(dapp_storage: &mut DappStorage, slot3_price: u64) {
252
+ let mut key_tuple = vector::empty();
253
+ key_tuple.push_back(TABLE_NAME);
254
+ let value = to_bytes(&slot3_price);
255
+ dapp_system::set_global_field<DappKey>(dapp_key::new(), dapp_storage, key_tuple, b"slot3_price", value);
256
+ }
257
+
258
+ public fun get(dapp_storage: &DappStorage): (u64, u64, u64, u64, u64, u64, u64, u64) {
259
+ let mut key_tuple = vector::empty();
260
+ key_tuple.push_back(TABLE_NAME);
261
+ let common_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"common_egg_price");
262
+ let mut common_egg_price_bcs = sui::bcs::new(common_egg_price_raw);
263
+ let common_egg_price = sui::bcs::peel_u64(&mut common_egg_price_bcs);
264
+ let rare_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"rare_egg_price");
265
+ let mut rare_egg_price_bcs = sui::bcs::new(rare_egg_price_raw);
266
+ let rare_egg_price = sui::bcs::peel_u64(&mut rare_egg_price_bcs);
267
+ let seasonal_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"seasonal_egg_price");
268
+ let mut seasonal_egg_price_bcs = sui::bcs::new(seasonal_egg_price_raw);
269
+ let seasonal_egg_price = sui::bcs::peel_u64(&mut seasonal_egg_price_bcs);
270
+ let common_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"common_hatch_ms");
271
+ let mut common_hatch_ms_bcs = sui::bcs::new(common_hatch_ms_raw);
272
+ let common_hatch_ms = sui::bcs::peel_u64(&mut common_hatch_ms_bcs);
273
+ let rare_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"rare_hatch_ms");
274
+ let mut rare_hatch_ms_bcs = sui::bcs::new(rare_hatch_ms_raw);
275
+ let rare_hatch_ms = sui::bcs::peel_u64(&mut rare_hatch_ms_bcs);
276
+ let seasonal_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"seasonal_hatch_ms");
277
+ let mut seasonal_hatch_ms_bcs = sui::bcs::new(seasonal_hatch_ms_raw);
278
+ let seasonal_hatch_ms = sui::bcs::peel_u64(&mut seasonal_hatch_ms_bcs);
279
+ let slot2_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"slot2_price");
280
+ let mut slot2_price_bcs = sui::bcs::new(slot2_price_raw);
281
+ let slot2_price = sui::bcs::peel_u64(&mut slot2_price_bcs);
282
+ let slot3_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"slot3_price");
283
+ let mut slot3_price_bcs = sui::bcs::new(slot3_price_raw);
284
+ let slot3_price = sui::bcs::peel_u64(&mut slot3_price_bcs);
285
+ (common_egg_price, rare_egg_price, seasonal_egg_price, common_hatch_ms, rare_hatch_ms, seasonal_hatch_ms, slot2_price, slot3_price)
286
+ }
287
+
288
+ public(package) fun set(dapp_storage: &mut DappStorage, common_egg_price: u64, rare_egg_price: u64, seasonal_egg_price: u64, common_hatch_ms: u64, rare_hatch_ms: u64, seasonal_hatch_ms: u64, slot2_price: u64, slot3_price: u64) {
289
+ let mut key_tuple = vector::empty();
290
+ key_tuple.push_back(TABLE_NAME);
291
+ let field_names = vector[b"common_egg_price", b"rare_egg_price", b"seasonal_egg_price", b"common_hatch_ms", b"rare_hatch_ms", b"seasonal_hatch_ms", b"slot2_price", b"slot3_price"];
292
+ let value_tuple = encode(common_egg_price, rare_egg_price, seasonal_egg_price, common_hatch_ms, rare_hatch_ms, seasonal_hatch_ms, slot2_price, slot3_price);
293
+ dapp_system::set_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, field_names, value_tuple, OFFCHAIN);
294
+ }
295
+
296
+ public fun get_struct(dapp_storage: &DappStorage): PetConfig {
297
+ let mut key_tuple = vector::empty();
298
+ key_tuple.push_back(TABLE_NAME);
299
+ let common_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"common_egg_price");
300
+ let mut common_egg_price_bcs = sui::bcs::new(common_egg_price_raw);
301
+ let common_egg_price = sui::bcs::peel_u64(&mut common_egg_price_bcs);
302
+ let rare_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"rare_egg_price");
303
+ let mut rare_egg_price_bcs = sui::bcs::new(rare_egg_price_raw);
304
+ let rare_egg_price = sui::bcs::peel_u64(&mut rare_egg_price_bcs);
305
+ let seasonal_egg_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"seasonal_egg_price");
306
+ let mut seasonal_egg_price_bcs = sui::bcs::new(seasonal_egg_price_raw);
307
+ let seasonal_egg_price = sui::bcs::peel_u64(&mut seasonal_egg_price_bcs);
308
+ let common_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"common_hatch_ms");
309
+ let mut common_hatch_ms_bcs = sui::bcs::new(common_hatch_ms_raw);
310
+ let common_hatch_ms = sui::bcs::peel_u64(&mut common_hatch_ms_bcs);
311
+ let rare_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"rare_hatch_ms");
312
+ let mut rare_hatch_ms_bcs = sui::bcs::new(rare_hatch_ms_raw);
313
+ let rare_hatch_ms = sui::bcs::peel_u64(&mut rare_hatch_ms_bcs);
314
+ let seasonal_hatch_ms_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"seasonal_hatch_ms");
315
+ let mut seasonal_hatch_ms_bcs = sui::bcs::new(seasonal_hatch_ms_raw);
316
+ let seasonal_hatch_ms = sui::bcs::peel_u64(&mut seasonal_hatch_ms_bcs);
317
+ let slot2_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"slot2_price");
318
+ let mut slot2_price_bcs = sui::bcs::new(slot2_price_raw);
319
+ let slot2_price = sui::bcs::peel_u64(&mut slot2_price_bcs);
320
+ let slot3_price_raw = dapp_system::get_global_field<DappKey>(dapp_storage, key_tuple, b"slot3_price");
321
+ let mut slot3_price_bcs = sui::bcs::new(slot3_price_raw);
322
+ let slot3_price = sui::bcs::peel_u64(&mut slot3_price_bcs);
323
+ PetConfig { common_egg_price, rare_egg_price, seasonal_egg_price, common_hatch_ms, rare_hatch_ms, seasonal_hatch_ms, slot2_price, slot3_price }
324
+ }
325
+
326
+ public(package) fun set_struct(dapp_storage: &mut DappStorage, pet_config: PetConfig) {
327
+ let mut key_tuple = vector::empty();
328
+ key_tuple.push_back(TABLE_NAME);
329
+ let field_names = vector[b"common_egg_price", b"rare_egg_price", b"seasonal_egg_price", b"common_hatch_ms", b"rare_hatch_ms", b"seasonal_hatch_ms", b"slot2_price", b"slot3_price"];
330
+ let value_tuple = encode_struct(pet_config);
331
+ dapp_system::set_global_record<DappKey>(dapp_key::new(), dapp_storage, key_tuple, field_names, value_tuple, OFFCHAIN);
332
+ }
333
+
334
+ public fun encode(common_egg_price: u64, rare_egg_price: u64, seasonal_egg_price: u64, common_hatch_ms: u64, rare_hatch_ms: u64, seasonal_hatch_ms: u64, slot2_price: u64, slot3_price: u64): vector<vector<u8>> {
335
+ let mut value_tuple = vector::empty();
336
+ value_tuple.push_back(to_bytes(&common_egg_price));
337
+ value_tuple.push_back(to_bytes(&rare_egg_price));
338
+ value_tuple.push_back(to_bytes(&seasonal_egg_price));
339
+ value_tuple.push_back(to_bytes(&common_hatch_ms));
340
+ value_tuple.push_back(to_bytes(&rare_hatch_ms));
341
+ value_tuple.push_back(to_bytes(&seasonal_hatch_ms));
342
+ value_tuple.push_back(to_bytes(&slot2_price));
343
+ value_tuple.push_back(to_bytes(&slot3_price));
344
+ value_tuple
345
+ }
346
+
347
+ public fun encode_struct(pet_config: PetConfig): vector<vector<u8>> {
348
+ encode(pet_config.common_egg_price, pet_config.rare_egg_price, pet_config.seasonal_egg_price, pet_config.common_hatch_ms, pet_config.rare_hatch_ms, pet_config.seasonal_hatch_ms, pet_config.slot2_price, pet_config.slot3_price)
349
+ }
350
+
351
+ public fun decode(data: vector<u8>): PetConfig {
352
+ let mut bcs_type = sui::bcs::new(data);
353
+ let common_egg_price = sui::bcs::peel_u64(&mut bcs_type);
354
+ let rare_egg_price = sui::bcs::peel_u64(&mut bcs_type);
355
+ let seasonal_egg_price = sui::bcs::peel_u64(&mut bcs_type);
356
+ let common_hatch_ms = sui::bcs::peel_u64(&mut bcs_type);
357
+ let rare_hatch_ms = sui::bcs::peel_u64(&mut bcs_type);
358
+ let seasonal_hatch_ms = sui::bcs::peel_u64(&mut bcs_type);
359
+ let slot2_price = sui::bcs::peel_u64(&mut bcs_type);
360
+ let slot3_price = sui::bcs::peel_u64(&mut bcs_type);
361
+ PetConfig {
362
+ common_egg_price,
363
+ rare_egg_price,
364
+ seasonal_egg_price,
365
+ common_hatch_ms,
366
+ rare_hatch_ms,
367
+ seasonal_hatch_ms,
368
+ slot2_price,
369
+ slot3_price,
370
+ }
371
+ }
372
+ }
@@ -0,0 +1,162 @@
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::pet_hatch {
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"pet_hatch";
15
+ const OFFCHAIN: bool = false;
16
+
17
+ public struct PetHatch has copy, drop, store {
18
+ egg_type: u8,
19
+ hatch_at: u64,
20
+ }
21
+
22
+ public fun new(egg_type: u8, hatch_at: u64): PetHatch {
23
+ PetHatch {
24
+ egg_type,
25
+ hatch_at,
26
+ }
27
+ }
28
+
29
+ public fun egg_type(self: &PetHatch): u8 {
30
+ self.egg_type
31
+ }
32
+
33
+ public fun hatch_at(self: &PetHatch): u64 {
34
+ self.hatch_at
35
+ }
36
+
37
+ public fun update_egg_type(self: &mut PetHatch, egg_type: u8) {
38
+ self.egg_type = egg_type
39
+ }
40
+
41
+ public fun update_hatch_at(self: &mut PetHatch, hatch_at: u64) {
42
+ self.hatch_at = hatch_at
43
+ }
44
+
45
+ public fun has(user_storage: &UserStorage): bool {
46
+ let mut key_tuple = vector::empty();
47
+ key_tuple.push_back(TABLE_NAME);
48
+ dapp_system::has_record<DappKey>(user_storage, key_tuple)
49
+ }
50
+
51
+ public fun ensure_has(user_storage: &UserStorage) {
52
+ let mut key_tuple = vector::empty();
53
+ key_tuple.push_back(TABLE_NAME);
54
+ dapp_system::ensure_has_record<DappKey>(user_storage, key_tuple)
55
+ }
56
+
57
+ public fun ensure_has_not(user_storage: &UserStorage) {
58
+ let mut key_tuple = vector::empty();
59
+ key_tuple.push_back(TABLE_NAME);
60
+ dapp_system::ensure_has_not_record<DappKey>(user_storage, key_tuple)
61
+ }
62
+
63
+
64
+ public(package) fun delete(user_storage: &mut UserStorage, ctx: &TxContext) {
65
+ let mut key_tuple = vector::empty();
66
+ key_tuple.push_back(TABLE_NAME);
67
+ dapp_system::delete_record<DappKey>(dapp_key::new(), user_storage, key_tuple, vector[b"egg_type", b"hatch_at"], ctx);
68
+ }
69
+
70
+ public fun get_egg_type(user_storage: &UserStorage): u8 {
71
+ let mut key_tuple = vector::empty();
72
+ key_tuple.push_back(TABLE_NAME);
73
+ let egg_type_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"egg_type");
74
+ let mut egg_type_bcs = sui::bcs::new(egg_type_raw);
75
+ let egg_type = sui::bcs::peel_u8(&mut egg_type_bcs);
76
+ egg_type
77
+ }
78
+
79
+ public(package) fun set_egg_type(user_storage: &mut UserStorage, egg_type: u8, ctx: &mut TxContext) {
80
+ let mut key_tuple = vector::empty();
81
+ key_tuple.push_back(TABLE_NAME);
82
+ let value = to_bytes(&egg_type);
83
+ dapp_system::set_field<DappKey>(dapp_key::new(), user_storage, key_tuple, b"egg_type", value, ctx);
84
+ }
85
+
86
+ public fun get_hatch_at(user_storage: &UserStorage): u64 {
87
+ let mut key_tuple = vector::empty();
88
+ key_tuple.push_back(TABLE_NAME);
89
+ let hatch_at_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"hatch_at");
90
+ let mut hatch_at_bcs = sui::bcs::new(hatch_at_raw);
91
+ let hatch_at = sui::bcs::peel_u64(&mut hatch_at_bcs);
92
+ hatch_at
93
+ }
94
+
95
+ public(package) fun set_hatch_at(user_storage: &mut UserStorage, hatch_at: u64, ctx: &mut TxContext) {
96
+ let mut key_tuple = vector::empty();
97
+ key_tuple.push_back(TABLE_NAME);
98
+ let value = to_bytes(&hatch_at);
99
+ dapp_system::set_field<DappKey>(dapp_key::new(), user_storage, key_tuple, b"hatch_at", value, ctx);
100
+ }
101
+
102
+ public fun get(user_storage: &UserStorage): (u8, u64) {
103
+ let mut key_tuple = vector::empty();
104
+ key_tuple.push_back(TABLE_NAME);
105
+ let egg_type_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"egg_type");
106
+ let mut egg_type_bcs = sui::bcs::new(egg_type_raw);
107
+ let egg_type = sui::bcs::peel_u8(&mut egg_type_bcs);
108
+ let hatch_at_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"hatch_at");
109
+ let mut hatch_at_bcs = sui::bcs::new(hatch_at_raw);
110
+ let hatch_at = sui::bcs::peel_u64(&mut hatch_at_bcs);
111
+ (egg_type, hatch_at)
112
+ }
113
+
114
+ public(package) fun set(user_storage: &mut UserStorage, egg_type: u8, hatch_at: u64, ctx: &mut TxContext) {
115
+ let mut key_tuple = vector::empty();
116
+ key_tuple.push_back(TABLE_NAME);
117
+ let field_names = vector[b"egg_type", b"hatch_at"];
118
+ let value_tuple = encode(egg_type, hatch_at);
119
+ dapp_system::set_record<DappKey>(dapp_key::new(), user_storage, key_tuple, field_names, value_tuple, OFFCHAIN, ctx);
120
+ }
121
+
122
+ public fun get_struct(user_storage: &UserStorage): PetHatch {
123
+ let mut key_tuple = vector::empty();
124
+ key_tuple.push_back(TABLE_NAME);
125
+ let egg_type_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"egg_type");
126
+ let mut egg_type_bcs = sui::bcs::new(egg_type_raw);
127
+ let egg_type = sui::bcs::peel_u8(&mut egg_type_bcs);
128
+ let hatch_at_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"hatch_at");
129
+ let mut hatch_at_bcs = sui::bcs::new(hatch_at_raw);
130
+ let hatch_at = sui::bcs::peel_u64(&mut hatch_at_bcs);
131
+ PetHatch { egg_type, hatch_at }
132
+ }
133
+
134
+ public(package) fun set_struct(user_storage: &mut UserStorage, pet_hatch: PetHatch, ctx: &mut TxContext) {
135
+ let mut key_tuple = vector::empty();
136
+ key_tuple.push_back(TABLE_NAME);
137
+ let field_names = vector[b"egg_type", b"hatch_at"];
138
+ let value_tuple = encode_struct(pet_hatch);
139
+ dapp_system::set_record<DappKey>(dapp_key::new(), user_storage, key_tuple, field_names, value_tuple, OFFCHAIN, ctx);
140
+ }
141
+
142
+ public fun encode(egg_type: u8, hatch_at: u64): vector<vector<u8>> {
143
+ let mut value_tuple = vector::empty();
144
+ value_tuple.push_back(to_bytes(&egg_type));
145
+ value_tuple.push_back(to_bytes(&hatch_at));
146
+ value_tuple
147
+ }
148
+
149
+ public fun encode_struct(pet_hatch: PetHatch): vector<vector<u8>> {
150
+ encode(pet_hatch.egg_type, pet_hatch.hatch_at)
151
+ }
152
+
153
+ public fun decode(data: vector<u8>): PetHatch {
154
+ let mut bcs_type = sui::bcs::new(data);
155
+ let egg_type = sui::bcs::peel_u8(&mut bcs_type);
156
+ let hatch_at = sui::bcs::peel_u64(&mut bcs_type);
157
+ PetHatch {
158
+ egg_type,
159
+ hatch_at,
160
+ }
161
+ }
162
+ }
@@ -0,0 +1,83 @@
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::pet_slot_index {
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"pet_slot_index";
15
+ const OFFCHAIN: bool = false;
16
+
17
+ public fun has(user_storage: &UserStorage, slot: u8): bool {
18
+ let mut key_tuple = vector::empty();
19
+ key_tuple.push_back(TABLE_NAME);
20
+ key_tuple.push_back(to_bytes(&slot));
21
+ dapp_system::has_record<DappKey>(user_storage, key_tuple)
22
+ }
23
+
24
+ public fun ensure_has(user_storage: &UserStorage, slot: u8) {
25
+ let mut key_tuple = vector::empty();
26
+ key_tuple.push_back(TABLE_NAME);
27
+ key_tuple.push_back(to_bytes(&slot));
28
+ dapp_system::ensure_has_record<DappKey>(user_storage, key_tuple)
29
+ }
30
+
31
+ public fun ensure_has_not(user_storage: &UserStorage, slot: u8) {
32
+ let mut key_tuple = vector::empty();
33
+ key_tuple.push_back(TABLE_NAME);
34
+ key_tuple.push_back(to_bytes(&slot));
35
+ dapp_system::ensure_has_not_record<DappKey>(user_storage, key_tuple)
36
+ }
37
+
38
+
39
+ public(package) fun delete(user_storage: &mut UserStorage, slot: u8, ctx: &TxContext) {
40
+ let mut key_tuple = vector::empty();
41
+ key_tuple.push_back(TABLE_NAME);
42
+ key_tuple.push_back(to_bytes(&slot));
43
+ dapp_system::delete_record<DappKey>(dapp_key::new(), user_storage, key_tuple, vector[b"pet_id"], ctx);
44
+ }
45
+
46
+ public fun get(user_storage: &UserStorage, slot: u8): address {
47
+ let mut key_tuple = vector::empty();
48
+ key_tuple.push_back(TABLE_NAME);
49
+ key_tuple.push_back(to_bytes(&slot));
50
+ let pet_id_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"pet_id");
51
+ let mut pet_id_bcs = sui::bcs::new(pet_id_raw);
52
+ let value = sui::bcs::peel_address(&mut pet_id_bcs);
53
+ value
54
+ }
55
+
56
+ public(package) fun set(user_storage: &mut UserStorage, slot: u8, value: address, ctx: &mut TxContext) {
57
+ let mut key_tuple = vector::empty();
58
+ key_tuple.push_back(TABLE_NAME);
59
+ key_tuple.push_back(to_bytes(&slot));
60
+ let field_names = vector[b"pet_id"];
61
+ let value_tuple = encode(value);
62
+ dapp_system::set_record<DappKey>(dapp_key::new(), user_storage, key_tuple, field_names, value_tuple, OFFCHAIN, ctx);
63
+ }
64
+
65
+ public fun encode(value: address): vector<vector<u8>> {
66
+ let mut value_tuple = vector::empty();
67
+ value_tuple.push_back(to_bytes(&value));
68
+ value_tuple
69
+ }
70
+
71
+
72
+ // ─── keys: mint (developer provides keys; framework ensures no duplicate) ─
73
+ // Choosing the ID strategy (fresh address, counter, coordinate pack, etc.)
74
+ // is intentionally left to the caller.
75
+ public(package) fun mint(
76
+ user_storage: &mut UserStorage,
77
+ slot: u8, pet_id: address,
78
+ ctx: &mut TxContext,
79
+ ) {
80
+ ensure_has_not(user_storage, slot);
81
+ set(user_storage, slot, pet_id, ctx);
82
+ }
83
+ }
@@ -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::pet_slots {
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"pet_slots";
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"slots_owned"], ctx);
40
+ }
41
+
42
+ public fun get(user_storage: &UserStorage): u8 {
43
+ let mut key_tuple = vector::empty();
44
+ key_tuple.push_back(TABLE_NAME);
45
+ let slots_owned_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"slots_owned");
46
+ let mut slots_owned_bcs = sui::bcs::new(slots_owned_raw);
47
+ let value = sui::bcs::peel_u8(&mut slots_owned_bcs);
48
+ value
49
+ }
50
+
51
+ public(package) fun set(user_storage: &mut UserStorage, value: u8, ctx: &mut TxContext) {
52
+ let mut key_tuple = vector::empty();
53
+ key_tuple.push_back(TABLE_NAME);
54
+ let field_names = vector[b"slots_owned"];
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: u8): vector<vector<u8>> {
60
+ let mut value_tuple = vector::empty();
61
+ value_tuple.push_back(to_bytes(&value));
62
+ value_tuple
63
+ }
64
+ }