Forráskód Böngészése

init game sdk

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
LoganZ2 3 napja
commit
3128c60ff6
1 módosított fájl, 54 hozzáadás és 0 törlés
  1. 54 0
      game-sdk.js

+ 54 - 0
game-sdk.js

@@ -0,0 +1,54 @@
+/**
+ * Game Platform SDK
+ *
+ * When running inside the platform, window.GameSDK is injected automatically
+ * before your bundle loads. Use it directly:
+ *
+ *   const result = await GameSDK.submit(score)
+ *   // result: { ok: true, rank: 3 } or { ok: false, error: '...' }
+ *
+ *   const name = GameSDK.getPlayerName()  // the current player's display name
+ *   const id   = GameSDK.gameId           // this game's id string
+ *
+ * For local development (outside the platform), load this file as a script
+ * tag before your bundle and call GameSDK.init(gameId, apiBase):
+ *
+ *   <script src="game-sdk.js"></script>
+ *   <script>GameSDK.init('my-game', 'http://localhost:4006')</script>
+ *   <script src="my-game.bundle.js"></script>
+ */
+
+;(function () {
+  if (window.GameSDK && window.GameSDK._platform) return // already injected by platform
+
+  const NAME_KEY = 'gameName'
+
+  window.GameSDK = {
+    gameId: null,
+    _apiBase: '',
+
+    init: function (gameId, apiBase) {
+      this.gameId = gameId
+      this._apiBase = apiBase || ''
+    },
+
+    getPlayerName: function () {
+      return localStorage.getItem(NAME_KEY) || 'anonymous'
+    },
+
+    submit: async function (score) {
+      if (!this.gameId) return { ok: false, error: 'GameSDK not initialised — call GameSDK.init(gameId)' }
+      const name = this.getPlayerName()
+      try {
+        const r = await fetch(`${this._apiBase}/api/games/${this.gameId}/scores`, {
+          method: 'POST',
+          headers: { 'Content-Type': 'application/json' },
+          body: JSON.stringify({ name, score }),
+        })
+        return await r.json()
+      } catch {
+        return { ok: false, error: 'Network error' }
+      }
+    },
+  }
+})()