{"_id":"@coderone/bomberland-library","_rev":"2-d71186a5585fcefb534337df163f84e9","name":"@coderone/bomberland-library","dist-tags":{"latest":"4.0.0"},"versions":{"1.0.5":{"name":"@coderone/bomberland-library","version":"1.0.5","license":"MIT","devDependencies":{"@types/jest":"^28.1.0 ","jest":"^28.1.0 ","typescript":"^4.7.3"},"scripts":{"build":"tsc --build tsconfig.json","start":"tsc --build tsconfig.json --watch","test":"jest"},"main":"./lib/index.js","types":"./lib/index.d.ts","dependencies":{"websocket":"1.0.33"},"directories":{"lib":"lib"},"author":"","description":"```bash yarn install @coderone/bomberland-library ```","gitHead":"03c6bac1fd1efdc977e48277529fdf4ce6d8aebc","_id":"@coderone/bomberland-library@1.0.5","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-JLoMMXXqJ1vi+Y2ZRvo9f9o48S7yQxlXsKfoC4uRUQtg0HWND0/C+lvIwGgEk96MjLv8sZmWaOhoaHyblfgNYw==","shasum":"db55d960d9e1e6a954be4a783a900b3d6cd7c6ac","tarball":"https://registry.npmjs.org/@coderone/bomberland-library/-/bomberland-library-1.0.5.tgz","fileCount":109,"unpackedSize":339459,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD++uTq6IebKVpGaryNwlzPBJo+P5QbUiotTD5dYDZGVAIgK8qgJZE5G+9VZyJ4CGUvDdc48Iqkl9ZvmgXsNzeKNUM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJim6dvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo8khAAnAxKT+uI7B0baJvVczIK2an1DPH+ufWjksLSNXf/G39ccmxa\r\nFa0swlWZT8ccSm7l9taalMDZ+A6iaECiLQ5ZUvKBRn/nlU+QKFwgwrSzBSU/\r\nfeUKc7ZcnuVmnAHh5a4GJhRaCxvkkn3kDoc8cyimEqjiaeJtBNy4sWk5+9aV\r\nBKkqSeG+RXEdKd2gx6J8HUaDp+5o5CpRfk3nX6caPGrl4req2MkYsVDJhGLT\r\nQFwyd8taMKoPnSTK2gTCNUXL0JOcYbDGTlKdc00IzkGKkrNipI21hwSKtwf3\r\nzwpZ4GPmhOEEQNLUjOeLaOfS18e3sz/9CiBeEYQlZ9UY5tY+2FoReQd6uD3m\r\nq8vTmqTNYRhSv9r7e8uvjz0USmSWJT+4VILbLdhyCjTHASJNpNBHWIko0IQ4\r\nvvirJsuBuNdjkXQe9Pvvftz/wM63rSmqbJ/06vS+HiEvFBta0HFXUu5mnM3e\r\nHfsmw8uymDl4PYgeqPutAtQkQs7qAZfI4r5M2wQWjPl1ACjyDRkkA+W57hUs\r\nIFn20T4yiTUxFMG1NVkaTlh8troHC2cDgLTmVqoW0j6g5CH0etSD8PwZVijV\r\nsULs14EVAvV5dbebdhtP1rGoKgV+5YVmoI3oS9hVhTL49NAm3j3+9N+Dm49n\r\nrp3YsyVZmy3NyBWKxpAv64AaBRYqkU+QWLE=\r\n=SsHp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"thegalah","email":"thegalah@gmail.com"},"maintainers":[{"name":"thegalah","email":"thegalah@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bomberland-library_1.0.5_1654368111236_0.3562134420710257"},"_hasShrinkwrap":false},"2.0.0":{"name":"@coderone/bomberland-library","version":"2.0.0","license":"MIT","devDependencies":{"@types/jest":"^28.1.6","jest":"^28.1.3","typescript":"^4.7.4"},"scripts":{"build":"tsc --build tsconfig.json","start":"tsc --build tsconfig.json --watch","test":"jest"},"main":"./lib/index.js","types":"./lib/index.d.ts","dependencies":{"websocket":"1.0.34"},"directories":{"lib":"lib"},"author":"","description":"```bash yarn install @coderone/bomberland-library ```","gitHead":"06dfec97bd644cf457bd2eb4a309381d209022bd","_id":"@coderone/bomberland-library@2.0.0","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-7YDUwWKB9KFxEko9JPCXkqPBjG/1NatqhqfFe12X5M6VUIB8a6MCX2Z+ZRkVSDaS4VQC1K9qkAZy6AhyFoKEPw==","shasum":"aca887c20afde7b0a0f02d8dab142e7d5101ecd8","tarball":"https://registry.npmjs.org/@coderone/bomberland-library/-/bomberland-library-2.0.0.tgz","fileCount":74,"unpackedSize":80301,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGPzdw+m5ENRaH6+Idjuk+H4LRIQjzUa8mte0lMcuWmoAiAHvlNaeJARROmhkvWQcxda/WyHVKPtEGINVNsH2wZ5Cw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3PXJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpnSRAAmLhgpXPIr89D6aOdCq8fztqyvucMcScMb/fI32wGKka4hW/0\r\nhLBr1U+VkOOsOmHbNl/9DDp3iqbXLrBsMH0Zj1K8dGNHfYpQXo9jAmeAI0WQ\r\ncmwPpfJHuZa6ymuctmWshvGIs6JOdf1t5SHXGDYKexfmmktCubcl5V6B1Qak\r\nD9LeoSFpmxX9PnOR609OvjqXX4vL3+3AKfwjofF+l4xJHEr/vx+mDQ6Ky9Du\r\n4VjrVkGCp0lT2LOv7SQ6xulByaYDL3s40iWpYrHFqTmAtZ8po9euOFCl11+F\r\nrMGvS7jjzFlcaAIcl+aqqAb04VWZFs90v5N7InnEBQYemiktup7FJZQrQudu\r\n33PaZ20GuHQSAuf55x0jyspRHXpZa47htl4qHqWePmdvr7iP4uQeQ4MIV4y4\r\nPPqnuI7UKLYNT86t1uCpi9zOC6yBPd/O46DdgPcWV8b4eXjmHXC0DhuL+PML\r\nI7xm0Y7UJcOncB5MHvSW029pdVe71T6bmlZzX1tYf/ZtHk5VmHBiFNpYzHH1\r\nKyppETN9dwfWjFR81RzWXw672c/kJv0ViWdPyx0+/KDUa4KWwe5Iw0Wg5LjY\r\nJHntjHkzSssjnSR31wU8e1cYvzVjv+D+OXy6yjdHkHukyOAPNpOb2cMiFaXa\r\nym4/pY0hjhi5gwhbb9IM09DjmrrZ3jXU4V4=\r\n=X/IL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"thegalah","email":"thegalah@gmail.com"},"maintainers":[{"name":"thegalah","email":"thegalah@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bomberland-library_2.0.0_1658648009351_0.5983144030366161"},"_hasShrinkwrap":false},"4.0.0":{"name":"@coderone/bomberland-library","version":"4.0.0","license":"MIT","devDependencies":{"@types/jest":"^28.1.6","jest":"^28.1.3","typescript":"^4.7.4"},"scripts":{"build":"tsc --build tsconfig.json","start":"tsc --build tsconfig.json --watch","test":"jest"},"main":"./lib/index.js","types":"./lib/index.d.ts","dependencies":{"websocket":"1.0.34"},"directories":{"lib":"lib"},"author":"","description":"```bash yarn install @coderone/bomberland-library ```","gitHead":"4a9d57bd1ea6877e81289daa4b6167bbddb58ea4","_id":"@coderone/bomberland-library@4.0.0","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-zYupoDw0AjhFC8Z6UTe1g36UnoWci1HcuajaXSUkA8qwufSf9NQJ5dK/xhOnzmu3OBzavJZGUTqZDwstKO+9eA==","shasum":"1856fbb6e543da51a6990f4028e9cc7758060c52","tarball":"https://registry.npmjs.org/@coderone/bomberland-library/-/bomberland-library-4.0.0.tgz","fileCount":74,"unpackedSize":80301,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzoBL+WRuZtR4WbHfIT0noV7EIbTj7CKQAkQJrcqJgQAIgHK4lsCupvX7WQr0EbeNoQ1pM4cMCtWGRoMrLCEyhSo4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3P8SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrzRg//YNTwrxb8yLVi1XGky9+YxnaKybtJlUwvtY3hzxxRvTB0SkKU\r\n44pAPxOWSxNIHjwpwaJ7UJiFvZwOHGCvJ5tB4NzeeBQ/PtGo5pykJLEsLALf\r\nkX2pu/mfYuJzy3LI+VHNNAKfsJkJ39DEWId1RwkRtWNTGtigmUaS9zXe9vSJ\r\n8GvcT3Jh9GiNzCku6mD5wOoWWkJewP4+M6iSD7PlPjfAh6fROTL7KhQu//Kb\r\naYr1BeWIjvVIUpMp8uHEnAYB40iDm3uLGP0X6+LSoTnMlkJHRd1PmsryMN7e\r\nmBDDv8qJSkJELmwEy++IPi2UUbpQw/QaFa32OmeiLgHYjs5Ll+TXExor1nxN\r\nU0tHM8169xCykv7SAfCVHaW0SFZFZIOrYE9HVzEAlH2erO4lUImZnlmKQM0O\r\n13DMdQG0HI5fAPE2ol7ZoRVSUh1u4JApgRIiWVmhoSzb8lWk6u0+UqAzeGbS\r\n7663ciqMlYmJgp7p5bYEVl6Qdimi8kW33btYUiKqlX0G0IGQQ8txbcHvf0VP\r\nYJRWUqBPFb+9pSW2tJWfMAxzm7gB5n63CucdzbO/5HHH1yfUACwjVcaR5eaZ\r\n0W4QOdoTw8FtNXsnjlzWzq4kIOnCbKIsx9geqI8HHs+uAx8NHtSpTL0NMbg4\r\n+6Tw35X2OEZ+zfCkEti2ijSnhRfdZhEL3RQ=\r\n=1OC7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"thegalah","email":"thegalah@gmail.com"},"maintainers":[{"name":"thegalah","email":"thegalah@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bomberland-library_4.0.0_1658650386472_0.6953072565751364"},"_hasShrinkwrap":false}},"time":{"created":"2022-06-04T18:41:51.167Z","1.0.5":"2022-06-04T18:41:51.450Z","modified":"2022-07-24T08:13:06.711Z","2.0.0":"2022-07-24T07:33:29.536Z","4.0.0":"2022-07-24T08:13:06.611Z"},"maintainers":[{"name":"thegalah","email":"thegalah@gmail.com"}],"description":"```bash yarn install @coderone/bomberland-library ```","license":"MIT","readme":"# Installation\n\n```bash\nyarn install @coderone/bomberland-library\n```\n\n# Example\n\n```typescript\nimport { AgentMove, EntityType, GameStateClient, IGameState } from \"@coderone/bomberland-library\";\n\nconst gameConnectionString = process.env[\"GAME_CONNECTION_STRING\"] || \"ws://127.0.0.1:3000/?role=agent&agentId=agentIdA&name=RandomAgent\";\n\nenum Action {\n    Up = \"up\",\n    Down = \"down\",\n    Left = \"left\",\n    Right = \"right\",\n    Bomb = \"bomb\",\n    Detonate = \"detonate\",\n}\n\nconst actionMoveMap = new Map<Action, AgentMove>([\n    [Action.Up, AgentMove.Up],\n    [Action.Down, AgentMove.Down],\n    [Action.Left, AgentMove.Left],\n    [Action.Right, AgentMove.Right],\n]);\n\nconst actionList = Object.values(Action);\n\nclass Agent {\n    private readonly client = new GameStateClient(gameConnectionString);\n    public constructor() {\n        this.client.SetGameTickCallback(this.onGameTick);\n    }\n\n    private onGameTick = async (gameState: Omit<IGameState, \"connection\"> | undefined) => {\n        if (gameState) {\n            const action = await this.generateAction();\n            if (action) {\n                const mappedMove = actionMoveMap.get(action);\n                if (mappedMove !== undefined) {\n                    this.client.SendMove(mappedMove);\n                } else if (action === Action.Bomb) {\n                    this.client.SendPlaceBomb();\n                } else if (action === Action.Detonate) {\n                    const bombCoordinates = this.getBombToDetonate(gameState);\n                    if (bombCoordinates !== undefined) {\n                        this.client.SendDetonateBomb(bombCoordinates);\n                    }\n                }\n            }\n        }\n    };\n\n    private generateAction = (): Action | undefined => {\n        const allActions = actionList.length;\n        const rand = Math.round(Math.random() * allActions);\n        if (rand !== allActions) {\n            return actionList[rand];\n        }\n    };\n\n    private getBombToDetonate = (gameState: Omit<IGameState, \"connection\">): [number, number] | undefined => {\n        const currentAgent = this.client.Connection?.agent_number;\n        const bomb = gameState.entities.find((entity) => {\n            const isBomb = entity.type === EntityType.Bomb;\n            const isOwner = currentAgent !== undefined ? entity.owner === currentAgent : false;\n            return isBomb === true && isOwner === true;\n        });\n\n        if (bomb?.x !== undefined && bomb.y !== undefined) {\n            return [bomb.x, bomb.y];\n        }\n    };\n}\n\nnew Agent();\n```\n","readmeFilename":"README.md"}