feat: 2e Varazskonyv/tanult varazslatok
This commit is contained in:
@@ -3,6 +3,22 @@ import {ClassSpells, KarakterVarazslat} from "../domain-models/varazslat";
|
|||||||
import VarazskonyvSzint from "./VarazskonyvSzint";
|
import VarazskonyvSzint from "./VarazskonyvSzint";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
|
function getTitle(osztaly: Osztaly2E) : string {
|
||||||
|
if (osztaly === Osztaly2E.Varazslo) {
|
||||||
|
return "Varázslói Varázskönyv";
|
||||||
|
}
|
||||||
|
if (osztaly === Osztaly2E.Illuzionista) {
|
||||||
|
return "Illúzionista Varázskönyv";
|
||||||
|
}
|
||||||
|
if (osztaly === Osztaly2E.Dalnok) {
|
||||||
|
return "Dalnok tanult varázslatok";
|
||||||
|
}
|
||||||
|
if (osztaly === Osztaly2E.Vandor) {
|
||||||
|
return "Vándor tanult varázslatok";
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
function Varazskonyv(props: { osztaly: Osztaly2E, varazslatok: KarakterVarazslat[] }) {
|
function Varazskonyv(props: { osztaly: Osztaly2E, varazslatok: KarakterVarazslat[] }) {
|
||||||
const {osztaly, varazslatok} = props;
|
const {osztaly, varazslatok} = props;
|
||||||
|
|
||||||
@@ -11,7 +27,7 @@ function Varazskonyv(props: { osztaly: Osztaly2E, varazslatok: KarakterVarazslat
|
|||||||
|
|
||||||
return <>
|
return <>
|
||||||
<div className='row my-2'>
|
<div className='row my-2'>
|
||||||
<h4 className='col align-self-center'>{osztaly === Osztaly2E.Varazslo ? "Varázslói" : "Illúzionista"} Varázskönyv</h4>
|
<h4 className='col align-self-center'>{getTitle(osztaly)}</h4>
|
||||||
</div>
|
</div>
|
||||||
<VarazskonyvSzint osztaly={osztaly} level={0} varazslatok={varazslatok}/>
|
<VarazskonyvSzint osztaly={osztaly} level={0} varazslatok={varazslatok}/>
|
||||||
{spells.some(v => v.szint === 0) && <VarazskonyvSzint osztaly={osztaly} level={1} varazslatok={varazslatok}/>}
|
{spells.some(v => v.szint === 0) && <VarazskonyvSzint osztaly={osztaly} level={1} varazslatok={varazslatok}/>}
|
||||||
@@ -22,4 +38,4 @@ function Varazskonyv(props: { osztaly: Osztaly2E, varazslatok: KarakterVarazslat
|
|||||||
</>;
|
</>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Varazskonyv
|
export default Varazskonyv
|
||||||
|
|||||||
@@ -28,13 +28,13 @@ function VarazskonyvSzint(props: { osztaly: Osztaly2E, level: number, varazslato
|
|||||||
selected={v.id}
|
selected={v.id}
|
||||||
available={[v, ...availableSpells]}
|
available={[v, ...availableSpells]}
|
||||||
dataTestId={`varazskonyv_varazslo_1_${v.id}`}
|
dataTestId={`varazskonyv_varazslo_1_${v.id}`}
|
||||||
onChange={(nextId) => dispatch(setVarazslat({prev: v.id, next: nextId}))}
|
onChange={(next_id) => dispatch(setVarazslat({prev: {id: v.id, osztaly }, next_id: next_id}))}
|
||||||
/>
|
/>
|
||||||
<div className="col-lg-2 col-md-3 col-sm-4">
|
<div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
<button
|
<button
|
||||||
className='btn btn-outline-dark w-100'
|
className='btn btn-outline-dark w-100'
|
||||||
type='button'
|
type='button'
|
||||||
onClick={() => dispatch(removeVarazslat(v.id))}>Elvesz
|
onClick={() => dispatch(removeVarazslat({id: v.id, osztaly} ))}>Elvesz
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,7 +46,7 @@ function VarazskonyvSzint(props: { osztaly: Osztaly2E, level: number, varazslato
|
|||||||
</div>
|
</div>
|
||||||
</React.Fragment>))}
|
</React.Fragment>))}
|
||||||
{availableSpells.length > 0 && <button className='btn btn-outline-dark ms-2'
|
{availableSpells.length > 0 && <button className='btn btn-outline-dark ms-2'
|
||||||
onClick={() => dispatch(addVarazslat(availableSpells[0].id))}>
|
onClick={() => dispatch(addVarazslat({id: availableSpells[0].id, osztaly}))}>
|
||||||
Új varázslat hozzáadása
|
Új varázslat hozzáadása
|
||||||
</button>}
|
</button>}
|
||||||
</>;
|
</>;
|
||||||
|
|||||||
@@ -11,8 +11,10 @@ function Varazslatok() {
|
|||||||
const classLevels = getClassLevels(karakter.szintlepesek)
|
const classLevels = getClassLevels(karakter.szintlepesek)
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
{classLevels[Osztaly2E.Varazslo] > 0 && <Varazskonyv osztaly={Osztaly2E.Varazslo} varazslatok={karakter.varazslatok} />}
|
{classLevels[Osztaly2E.Varazslo] > 0 && <Varazskonyv osztaly={Osztaly2E.Varazslo} varazslatok={karakter.varazslatok.filter(x => x.osztaly === Osztaly2E.Varazslo)} />}
|
||||||
{classLevels[Osztaly2E.Illuzionista] > 0 && <Varazskonyv osztaly={Osztaly2E.Illuzionista} varazslatok={karakter.varazslatok} />}
|
{classLevels[Osztaly2E.Illuzionista] > 0 && <Varazskonyv osztaly={Osztaly2E.Illuzionista} varazslatok={karakter.varazslatok.filter(x => x.osztaly === Osztaly2E.Illuzionista)} />}
|
||||||
|
{classLevels[Osztaly2E.Vandor] > 0 && <Varazskonyv osztaly={Osztaly2E.Vandor} varazslatok={karakter.varazslatok.filter(x => x.osztaly === Osztaly2E.Vandor)} />}
|
||||||
|
{classLevels[Osztaly2E.Dalnok] > 0 && <Varazskonyv osztaly={Osztaly2E.Dalnok} varazslatok={karakter.varazslatok.filter(x => x.osztaly === Osztaly2E.Dalnok)} />}
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,17 +96,20 @@ export const characterSlice = createSlice({
|
|||||||
setFelszereles: (state, action: {payload: KarakterFelszereles}) => {
|
setFelszereles: (state, action: {payload: KarakterFelszereles}) => {
|
||||||
state.felszereles = action.payload;
|
state.felszereles = action.payload;
|
||||||
},
|
},
|
||||||
addVarazslat: (state, action: {payload: string}) => {
|
addVarazslat: (state, action: {payload: {id: string, osztaly: Osztaly2E}}) => {
|
||||||
state.varazslatok = [...state.varazslatok, {id: action.payload, bekeszitve: false}];
|
state.varazslatok = [...state.varazslatok, {id: action.payload.id, osztaly: action.payload.osztaly, bekeszitve: false}];
|
||||||
},
|
},
|
||||||
setVarazslat: (state, action: {payload: {prev: string, next: string}}) => {
|
setVarazslat: (state, action: {payload: {prev: {id: string, osztaly: Osztaly2E}, next_id: string}}) => {
|
||||||
let spell = state.varazslatok.find(x => x.id === action.payload.prev)
|
let spell = state.varazslatok.find(x =>
|
||||||
|
x.id === action.payload.prev.id
|
||||||
|
&& x.osztaly === action.payload.prev.osztaly)
|
||||||
if (spell !== undefined) {
|
if (spell !== undefined) {
|
||||||
spell.id = action.payload.next
|
spell.id = action.payload.next_id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
removeVarazslat: (state, action: {payload: string}) => {
|
removeVarazslat: (state, action: {payload: {id: string, osztaly: Osztaly2E}}) => {
|
||||||
state.varazslatok = [...state.varazslatok.filter(x => x.id !== action.payload)];
|
state.varazslatok = [...state.varazslatok.filter(x =>
|
||||||
|
x.id !== action.payload.id && x.osztaly !== action.payload.osztaly)];
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ export type OsztalyVarazslat = OsztalyCantrip | OsztalySzintVarazslat;
|
|||||||
export interface KarakterVarazslat {
|
export interface KarakterVarazslat {
|
||||||
id: string
|
id: string
|
||||||
bekeszitve: boolean
|
bekeszitve: boolean
|
||||||
|
osztaly: Osztaly2E
|
||||||
}
|
}
|
||||||
|
|
||||||
export function GetCantrips(osztaly: Osztaly2E): Cantrip[] {
|
export function GetCantrips(osztaly: Osztaly2E): Cantrip[] {
|
||||||
|
|||||||
Reference in New Issue
Block a user