From 291bb48bd534bb12a9a68bccb3698fc684c6bbb2 Mon Sep 17 00:00:00 2001 From: AxelAFV Date: Wed, 25 Feb 2026 18:49:14 +0000 Subject: [PATCH 01/18] creacion develop --- package-lock.json | 155 ---------------------------------------------- 1 file changed, 155 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d43d98ab7..398b3c017c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -877,19 +877,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -997,14 +984,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@types/prop-types": { "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", @@ -1307,14 +1286,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -3915,29 +3886,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/string.prototype.matchall": { "version": "4.0.12", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", @@ -4074,35 +4022,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terser": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.38.1.tgz", - "integrity": "sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4944,18 +4863,6 @@ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true }, - "@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, "@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -5044,14 +4951,6 @@ "@babel/types": "^7.20.7" } }, - "@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true, - "optional": true, - "peer": true - }, "@types/prop-types": { "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", @@ -5252,14 +5151,6 @@ "update-browserslist-db": "^1.1.1" } }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "optional": true, - "peer": true - }, "call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -6982,28 +6873,6 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "string.prototype.matchall": { "version": "4.0.12", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", @@ -7094,30 +6963,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "terser": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.38.1.tgz", - "integrity": "sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", From 2f8bdc47b98d9e1ed19ebbb06028125490405153 Mon Sep 17 00:00:00 2001 From: AxelAFV Date: Wed, 25 Feb 2026 18:52:55 +0000 Subject: [PATCH 02/18] creacion incruste migrations in .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 80704f4378..e66294da88 100755 --- a/.gitignore +++ b/.gitignore @@ -80,3 +80,4 @@ database.database database.db diagram.png __pycache__/ +migrations From b330811b7386ede811eb49437ab6fc4c1efa90b5 Mon Sep 17 00:00:00 2001 From: AxelAFV Date: Wed, 25 Feb 2026 18:57:49 +0000 Subject: [PATCH 03/18] instalar phaser por npm --- package-lock.json | 29 +++++++++++++++++++++++++++++ package.json | 29 +++++++++++++++-------------- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 398b3c017c..56b4036ead 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.1", "license": "ISC", "dependencies": { + "phaser": "^3.90.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -2183,6 +2184,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3356,6 +3363,15 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/phaser": { + "version": "3.90.0", + "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.90.0.tgz", + "integrity": "sha512-/cziz/5ZIn02uDkC9RzN8VF9x3Gs3XdFFf9nkiMEQT3p7hQlWuyjy4QWosU802qqno2YSLn2BfqwOKLv/sSVfQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5771,6 +5787,11 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6538,6 +6559,14 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "phaser": { + "version": "3.90.0", + "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.90.0.tgz", + "integrity": "sha512-/cziz/5ZIn02uDkC9RzN8VF9x3Gs3XdFFf9nkiMEQT3p7hQlWuyjy4QWosU802qqno2YSLn2BfqwOKLv/sSVfQ==", + "requires": { + "eventemitter3": "^5.0.1" + } + }, "picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", diff --git a/package.json b/package.json index 0caab10749..da70fb7cb6 100755 --- a/package.json +++ b/package.json @@ -8,10 +8,10 @@ "main": "index.js", "scripts": { "dev": "vite", - "start": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "start": "vite", + "build": "vite build", + "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" }, "author": { "name": "Alejandro Sanchez", @@ -30,13 +30,13 @@ "license": "ISC", "devDependencies": { "@types/react": "^18.2.18", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.4", - "eslint": "^8.46.0", - "eslint-plugin-react": "^7.33.1", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "vite": "^4.4.8" + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.4", + "eslint": "^8.46.0", + "eslint-plugin-react": "^7.33.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.3", + "vite": "^4.4.8" }, "babel": { "presets": [ @@ -54,9 +54,10 @@ ] }, "dependencies": { + "phaser": "^3.90.0", "prop-types": "^15.8.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.18.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.18.0" } } From 91f21d50c5c1c5859003f958aae018ea1b71de7c Mon Sep 17 00:00:00 2001 From: AgustinMGauto Date: Wed, 25 Feb 2026 19:38:21 +0000 Subject: [PATCH 04/18] configuracionPhaser --- .gitignore | 1 + package-lock.json | 29 ++++++++++++++ package.json | 29 +++++++------- src/front/Game/.gitkeep | 0 src/front/Game/Controles/Controles.js | 5 +++ src/front/Game/scenes/MainScene.js | 20 ++++++++++ src/front/components/PhaserGame.jsx | 54 +++++++++++++++++++++++++++ src/front/pages/Home.jsx | 19 ++-------- 8 files changed, 128 insertions(+), 29 deletions(-) create mode 100644 src/front/Game/.gitkeep create mode 100644 src/front/Game/Controles/Controles.js create mode 100644 src/front/Game/scenes/MainScene.js create mode 100644 src/front/components/PhaserGame.jsx diff --git a/.gitignore b/.gitignore index 80704f4378..e66294da88 100755 --- a/.gitignore +++ b/.gitignore @@ -80,3 +80,4 @@ database.database database.db diagram.png __pycache__/ +migrations diff --git a/package-lock.json b/package-lock.json index 398b3c017c..56b4036ead 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.1", "license": "ISC", "dependencies": { + "phaser": "^3.90.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -2183,6 +2184,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3356,6 +3363,15 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/phaser": { + "version": "3.90.0", + "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.90.0.tgz", + "integrity": "sha512-/cziz/5ZIn02uDkC9RzN8VF9x3Gs3XdFFf9nkiMEQT3p7hQlWuyjy4QWosU802qqno2YSLn2BfqwOKLv/sSVfQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5771,6 +5787,11 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6538,6 +6559,14 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "phaser": { + "version": "3.90.0", + "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.90.0.tgz", + "integrity": "sha512-/cziz/5ZIn02uDkC9RzN8VF9x3Gs3XdFFf9nkiMEQT3p7hQlWuyjy4QWosU802qqno2YSLn2BfqwOKLv/sSVfQ==", + "requires": { + "eventemitter3": "^5.0.1" + } + }, "picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", diff --git a/package.json b/package.json index 0caab10749..da70fb7cb6 100755 --- a/package.json +++ b/package.json @@ -8,10 +8,10 @@ "main": "index.js", "scripts": { "dev": "vite", - "start": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "start": "vite", + "build": "vite build", + "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" }, "author": { "name": "Alejandro Sanchez", @@ -30,13 +30,13 @@ "license": "ISC", "devDependencies": { "@types/react": "^18.2.18", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.4", - "eslint": "^8.46.0", - "eslint-plugin-react": "^7.33.1", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "vite": "^4.4.8" + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.4", + "eslint": "^8.46.0", + "eslint-plugin-react": "^7.33.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.3", + "vite": "^4.4.8" }, "babel": { "presets": [ @@ -54,9 +54,10 @@ ] }, "dependencies": { + "phaser": "^3.90.0", "prop-types": "^15.8.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.18.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.18.0" } } diff --git a/src/front/Game/.gitkeep b/src/front/Game/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/front/Game/Controles/Controles.js b/src/front/Game/Controles/Controles.js new file mode 100644 index 0000000000..34c39b78eb --- /dev/null +++ b/src/front/Game/Controles/Controles.js @@ -0,0 +1,5 @@ + + +export function Controles(){ + +} \ No newline at end of file diff --git a/src/front/Game/scenes/MainScene.js b/src/front/Game/scenes/MainScene.js new file mode 100644 index 0000000000..20dda00acf --- /dev/null +++ b/src/front/Game/scenes/MainScene.js @@ -0,0 +1,20 @@ +import Phaser from "phaser"; + + +export default class MainScene extends Phaser.Scene { + constructor() { + super("MainScene"); + } + + preload() { + } + + create() { + } + + update() { + } + + } + + diff --git a/src/front/components/PhaserGame.jsx b/src/front/components/PhaserGame.jsx new file mode 100644 index 0000000000..ff5116a63a --- /dev/null +++ b/src/front/components/PhaserGame.jsx @@ -0,0 +1,54 @@ +import { useEffect, useRef } from "react"; +import Phaser from "phaser"; + +import MainScene from "../Game/scenes/MainScene"; + +export default function PhaserGame() { + const gameRef = useRef(null); + const containerRef = useRef(null); + + useEffect(() => { + // Si ya hay una instancia, no crear otra (evita duplicados al hot-reload) + if (gameRef.current) return; + + // Configuración básica de Phaser. Aquí definimos el render, tamaño, + // sistema de físicas y las escenas que usaremos. + const config = { + // Phaser.AUTO: elige WebGL si está disponible, si no, usa Canvas + type: Phaser.AUTO, + // `parent` es el elemento DOM donde Phaser insertará el canvas + parent: containerRef.current, + width: 800, + height: 530, + backgroundColor: "#1d1d1d", + // escala automatica para las ditintas pantallas + scale: { + mode: Phaser.Scale.FIT}, + physics: { + // Usamos el sistema 'arcade' por ser sencillo para prototipos + default: "arcade", + arcade: { + gravity: { y: 500 }, + debug: false, + }, + }, + // Lista de escenas; aquí pasamos la clase que implementa la lógica + scene: [MainScene], + }; + + // Crear la instancia del juego con la configuración + gameRef.current = new Phaser.Game(config); + + // Cleanup: cuando el componente React se desmonta, destruye el juego + return () => { + gameRef.current?.destroy(true); + gameRef.current = null; + }; + }, []); + + return ( +
+
+
+ ); +} \ No newline at end of file diff --git a/src/front/pages/Home.jsx b/src/front/pages/Home.jsx index 341ed21768..38b670d4fe 100644 --- a/src/front/pages/Home.jsx +++ b/src/front/pages/Home.jsx @@ -1,6 +1,7 @@ import React, { useEffect } from "react" import rigoImageUrl from "../assets/img/rigo-baby.jpg"; import useGlobalReducer from "../hooks/useGlobalReducer.jsx"; +import PhaserGame from "../components/PhaserGame.jsx"; export const Home = () => { @@ -33,20 +34,8 @@ export const Home = () => { }, []) return ( -
-

Hello Rigo!!

-

- Rigo Baby -

-
- {store.message ? ( - {store.message} - ) : ( - - Loading message from the backend (make sure your python 🐍 backend is running)... - - )} -
-
+ <> + + ); }; \ No newline at end of file From b4c69bc124ed9d31cb691ada32a09880a8f3e4ab Mon Sep 17 00:00:00 2001 From: Camila Gabriele Date: Wed, 25 Feb 2026 20:19:10 +0000 Subject: [PATCH 05/18] creacion de modelos de datos --- src/api/models.py | 105 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 96 insertions(+), 9 deletions(-) diff --git a/src/api/models.py b/src/api/models.py index da515f6a1a..a3bca452c9 100644 --- a/src/api/models.py +++ b/src/api/models.py @@ -1,19 +1,106 @@ from flask_sqlalchemy import SQLAlchemy -from sqlalchemy import String, Boolean -from sqlalchemy.orm import Mapped, mapped_column +from sqlalchemy import String, Boolean, Integer, ForeignKey, DateTime +from sqlalchemy.orm import Mapped, mapped_column, relationship +from datetime import datetime db = SQLAlchemy() -class User(db.Model): - id: Mapped[int] = mapped_column(primary_key=True) - email: Mapped[str] = mapped_column(String(120), unique=True, nullable=False) - password: Mapped[str] = mapped_column(nullable=False) - is_active: Mapped[bool] = mapped_column(Boolean(), nullable=False) +class User (db.Model): + __tablename__ = "user" + id: Mapped[int] = mapped_column(Integer, primary_key=True) + email: Mapped[str] = mapped_column(String(100), unique=True, nullable=False) + password_hash: Mapped[str] = mapped_column(String(100), nullable=False) + fecha_registro: Mapped[datetime] = mapped_column(DateTime, default=datetime.now) + + michis: Mapped["Michi"] = relationship("Michi", back_populates="user") def serialize(self): return { "id": self.id, "email": self.email, - # do not serialize the password, its a security breach - } \ No newline at end of file + "fecha_registro": self.fecha_registro + } + + +class Michi (db.Model): + __tablename__ = "michi" + id: Mapped[int] = mapped_column(Integer, primary_key=True) + user_id: Mapped[int] = mapped_column(ForeignKey("user.id"), nullable=False) + michi_name: Mapped[str] = mapped_column(String(50), nullable=False) + color: Mapped[str] = mapped_column(String(20)) + pescados_totales: Mapped[int] = mapped_column(Integer, default=0) + + user: Mapped["User"] = relationship("User", back_populates="michis") + partidas: Mapped[list["Partida"]] = relationship( + "Partida", back_populates="michis") + michi_inventario: Mapped[list["MichiInventario"]] = relationship( + "MichiInventario", back_populates="michi") + + def serialize(self): + return { + "id": self.id, + "user_id": self.user_id, + "michi_name": self.michi_name, + "color": self.color, + "pescados_totales": self.pescados_totales + } + + +class Accesorios(db.Model): + __tablename__ = "accesorios" + id: Mapped[int] = mapped_column(Integer, primary_key=True) + accesorios_name: Mapped[str] = mapped_column(String(50), nullable=False) + tipo_de_accesorios: Mapped[str] = mapped_column(String(30)) + precio_pescado: Mapped[int] = mapped_column(Integer, nullable=False) + + michi_inventario: Mapped[list["MichiInventario"]] = relationship( + "MichiInventario", back_populates="accesorios") + + def serialize(self): + return { + "id": self.id, + "accesorios_name": self.accesorios_name, + "tipo_de_accesorios": self.tipo_de_accesorios, + "precio_pescado": self.precio_pescado + } + + +class MichiInventario (db.Model): + __tablename__ = "michi_inventario" + id: Mapped[int] = mapped_column(Integer, primary_key=True) + michi_id: Mapped[int] = mapped_column( + ForeignKey("michi.id"), nullable=False) + accesorios_id: Mapped[int] = mapped_column( + ForeignKey("accesorios.id"), nullable=False) + esta_equipado: Mapped[bool] = mapped_column(Boolean, default=False) + + michi: Mapped["Michi"] = relationship( + "Michi", back_populates="michi_inventario") + accesorios: Mapped["Accesorios"] = relationship( + "Accesorios", back_populates="michi_inventario") + + def serialize(self): + return { + "id": self.id, + "michi_id": self.michi_id, + "accesorios_id": self.accesorios_id, + "esta_equipado": self.esta_equipado + } + + +class Partida(db.Model): + __tablename__ = "partida" + id: Mapped[int] = mapped_column(Integer, primary_key=True) + michi_id: Mapped[int] = mapped_column( + ForeignKey("michi.id"), nullable=False) + score: Mapped[int] = mapped_column(Integer, nullable=False) + + michis: Mapped["Michi"] = relationship("Michi", back_populates="partidas") + + def serialize(self): + return { + "id": self.id, + "michi_id": self.michi_id, + "score": self.score + } From d18993641e6fb1c724a0996796dd81f25065b45a Mon Sep 17 00:00:00 2001 From: Camila Gabriele Date: Thu, 26 Feb 2026 12:30:23 +0000 Subject: [PATCH 06/18] Creacion de componente Navbar, ruta y css del navbar --- src/front/components/Navbar.jsx | 19 ----- src/front/components/Navbar/Navbar.jsx | 24 ++++++ src/front/components/Navbar/index.css | 111 +++++++++++++++++++++++++ src/front/pages/Layout.jsx | 4 +- src/front/routes.jsx | 2 + 5 files changed, 139 insertions(+), 21 deletions(-) delete mode 100644 src/front/components/Navbar.jsx create mode 100644 src/front/components/Navbar/Navbar.jsx create mode 100644 src/front/components/Navbar/index.css diff --git a/src/front/components/Navbar.jsx b/src/front/components/Navbar.jsx deleted file mode 100644 index 30d43a2636..0000000000 --- a/src/front/components/Navbar.jsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Link } from "react-router-dom"; - -export const Navbar = () => { - - return ( - - ); -}; \ No newline at end of file diff --git a/src/front/components/Navbar/Navbar.jsx b/src/front/components/Navbar/Navbar.jsx new file mode 100644 index 0000000000..a060d10050 --- /dev/null +++ b/src/front/components/Navbar/Navbar.jsx @@ -0,0 +1,24 @@ +import { Link } from "react-router-dom"; +import "./index.css"; +export const Navbar = () => { + + return ( + <> + + + ); +}; + + diff --git a/src/front/components/Navbar/index.css b/src/front/components/Navbar/index.css new file mode 100644 index 0000000000..fab3c0ffdb --- /dev/null +++ b/src/front/components/Navbar/index.css @@ -0,0 +1,111 @@ +:root { + --sky-light: #8ECAE6; + --teal: #219EBC; + --deep-teal: #126782; + --cyan: #4adfe3; + --navy: #023047; + --dark: #0d1b2a; + --card: #0e2a45; + --gold: #FFB703; + --amber: #FD9E02; + --orange: #FB8500; + --gold-dim: #c07d10; + --border: #f5a623; + --text: #e8d9a0; + --pixel: 'Press Start 2P', monospace; +} + +nav{ + position: relative; + z-index: 10; + width: 100%; + background: var(--navy); + border-bottom: 4px solid var(--gold); + background-image: repeating-linear-gradient(0deg, + transparent, + transparent 3px, + rgba(0, 0, 0, .12) 3px, + rgba(0, 0, 0, .12) 4px); + box-shadow: 0 4px 0 var(--orange), 0 8px 0 var(--amber); +} + +.nav-home { + max-width: 1200px; + margin: 0 auto; + padding: 0 24px; + height: 72px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; +} + +.logo { + display: flex; + align-items: center; + gap: 12px; + text-decoration: none; +} + +.logo-text { + font-family: var(--pixel); + font-size: 13px; + line-height: 1.5; + letter-spacing: 1px; +} + +.logo-text .principal { + color: var(--gold); + display: block; + font-size: 25px; + text-shadow: 2px 2px 0 var(--orange); + animation: glow 2.5s ease-in-out infinite alternate; +} + +.nav-button { + display: flex; + align-items: center; + gap: 12px; +} +.btn { + font-family: var(--pixel); + font-size: 9px; + padding: 10px 16px; + cursor: pointer; + border: none; + text-transform: uppercase; + letter-spacing: 1px; + position: relative; + transition: transform .1s, box-shadow .1s; + text-decoration: none; + display: inline-block; + line-height: 1; +} + +.btn:active { + transform: translate(2px, 2px); +} + +.btn-signin { + background: transparent; + color: var(--gold); + border: 2px solid var(--gold); + box-shadow: 3px 3px 0 var(--orange); +} + +.btn-signin:hover { + background: var(--gold); + color: var(--navy); + box-shadow: 3px 3px 0 var(--orange), inset 0 0 0 2px var(--amber); +} + +.btn-signup { + background: var(--gold); + color: var(--navy); + box-shadow: 3px 3px 0 var(--orange); +} + +.btn-signup:hover { + background: var(--amber); + box-shadow: 3px 3px 0 var(--orange), 0 0 12px var(--gold); +} \ No newline at end of file diff --git a/src/front/pages/Layout.jsx b/src/front/pages/Layout.jsx index 9bfa31325c..ac29d844da 100644 --- a/src/front/pages/Layout.jsx +++ b/src/front/pages/Layout.jsx @@ -1,13 +1,13 @@ import { Outlet } from "react-router-dom/dist" import ScrollToTop from "../components/ScrollToTop" -import { Navbar } from "../components/Navbar" import { Footer } from "../components/Footer" +import { Navbar } from "../components/Navbar/Navbar" // Base component that maintains the navbar and footer throughout the page and the scroll to top functionality. export const Layout = () => { return ( - +