From 3bbd3f1e8a8054ee60109b85f56262951cd1d361 Mon Sep 17 00:00:00 2001 From: GitG0r0 <145980798+GitG0r0@users.noreply.github.com> Date: Thu, 23 Oct 2025 00:31:33 +0200 Subject: [PATCH] =?UTF-8?q?Feature:=20Consequence=20rendszer=20implement?= =?UTF-8?q?=C3=A1l=C3=A1sa=20minden=20k=C3=A1rtya=20t=C3=ADpushoz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TaskCardEditor: Consequence és wrongConsequence kezelés hozzáadva - JokerCardEditor: Teljesítés és nem teljesítés consequence-ek - LuckCardEditor: Szerencse kártyák consequence kezelése - CardEditor: Alapértelmezett consequence értékek az új kártyákhoz - DeckCreator: Consequence mezők biztosítása mentéskor - CardsList: Következmény típusok megjelenítése - UI javítás: Mind a három editor külön szekciókba rendezve (info, szöveg, következmények) - Egységes struktúra és design az összes kártya szerkesztőnél --- .../src/components/DeckCreator/CardEditor.jsx | 9 +- .../src/components/DeckCreator/CardsList.jsx | 8 - .../DeckCreator/JokerCardEditor.jsx | 201 +++++++++++++++--- .../components/DeckCreator/LuckCardEditor.jsx | 138 +++++++++--- .../components/DeckCreator/TaskCardEditor.jsx | 122 +++++++++++ .../src/pages/DeckCreator/DeckCreator.jsx | 33 ++- 6 files changed, 427 insertions(+), 84 deletions(-) diff --git a/SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx b/SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx index ff6e2293..2fc5cbe3 100644 --- a/SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx +++ b/SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx @@ -20,7 +20,8 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance id: null, type: type, points: 10, - timeLimit: 30 + timeLimit: 30, + consequence: { type: 0, value: 1 } } switch (type) { @@ -31,7 +32,8 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance question: '', options: ['', '', '', ''], correctAnswer: 0, - explanation: '' + explanation: '', + wrongConsequence: { type: 1, value: 1 } } case 'JOKER': return { @@ -40,7 +42,8 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance description: '', effect: '', actionType: 'skip', - usage: 'once' + usage: 'once', + wrongConsequence: { type: 1, value: 1 } } case 'LUCK': return { diff --git a/SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx b/SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx index b391b5cc..30ea9d16 100644 --- a/SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx +++ b/SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx @@ -263,14 +263,6 @@ export default function CardsList({
📊 Összesen: {cards.length} kártya
- - {cards.length > 0 && ( -
- 📋 {cards.filter(c => c.type === 'QUESTION').length} - 🃏 {cards.filter(c => c.type === 'JOKER').length} - 🎲 {cards.filter(c => c.type === 'LUCK').length} -
- )} diff --git a/SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx b/SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx index 3d23a1af..5f8118e6 100644 --- a/SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx +++ b/SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx @@ -4,17 +4,29 @@ import React, { useState, useEffect } from 'react' import { FaTheaterMasks, FaInfoCircle, FaUsers } from 'react-icons/fa' +const consequenceTypes = [ + { value: 0, label: '⬆️ Előre lépés', description: 'A játékos előre lép X mezőt' }, + { value: 1, label: '⬇️ Hátra lépés', description: 'A játékos hátra lép X mezőt' }, + { value: 2, label: '⏸️ Kör kihagyás', description: 'A játékos kihagy egy kört' }, + { value: 3, label: '⏩ Extra kör', description: 'A játékos kap egy extra kört' }, + { value: 5, label: '🏁 Vissza a starthoz', description: 'A játékos visszakerül a starthoz' } +] + export default function JokerCardEditor({ card, onChange }) { const [cardData, setCardData] = useState({ type: 'JOKER', - text: '' + text: '', + consequence: { type: 0, value: 1 }, + wrongConsequence: { type: 1, value: 1 } }) useEffect(() => { if (card) { setCardData({ type: 'JOKER', - text: card.text || '' + text: card.text || '', + consequence: card.consequence || { type: 0, value: 1 }, + wrongConsequence: card.wrongConsequence || { type: 1, value: 1 } }) } }, [card]) @@ -31,6 +43,36 @@ export default function JokerCardEditor({ card, onChange }) { } } + const updateConsequence = (field, value) => { + const newCardData = { + ...cardData, + consequence: { + ...cardData.consequence, + [field]: value + } + } + setCardData(newCardData) + + if (onChange) { + onChange(newCardData) + } + } + + const updateWrongConsequence = (field, value) => { + const newCardData = { + ...cardData, + wrongConsequence: { + ...cardData.wrongConsequence, + [field]: value + } + } + setCardData(newCardData) + + if (onChange) { + onChange(newCardData) + } + } + // Példa joker kártyák const exampleCards = [ "Felelsz vagy mersz? (Az előző játékos kérdez)", @@ -57,18 +99,10 @@ export default function JokerCardEditor({ card, onChange }) { } return ( -
+
+ {/* Info box */}
- {/* Header */} -
- -

- Joker Kártya Szerkesztő -

-
- - {/* Info box */} -
+
@@ -86,28 +120,33 @@ export default function JokerCardEditor({ card, onChange }) {
+
- {/* Card text input */} -
-
- -