fix first level spell ordering
This commit is contained in:
@@ -1 +1,2 @@
|
|||||||
nodejs 20.15.1
|
nodejs 20.15.1
|
||||||
|
yarn 1.22.22
|
||||||
@@ -3,11 +3,11 @@ import {KarakterVarazslat, Varazslat} from "../domain-models/varazslat";
|
|||||||
import {getClassLevels} from "../domain-models/szintlepes";
|
import {getClassLevels} from "../domain-models/szintlepes";
|
||||||
import {useDispatch, useSelector} from "react-redux";
|
import {useDispatch, useSelector} from "react-redux";
|
||||||
import {AppDispatch, RootState} from "../../store";
|
import {AppDispatch, RootState} from "../../store";
|
||||||
import {addVarazslat, characterSelector, setVarazslatok} from "../domain-models/characterSlice";
|
import {addVarazslat, characterSelector, setVarazslat} from "../domain-models/characterSlice";
|
||||||
import {Osztaly2E} from "../domain-models/osztaly2E";
|
import {Osztaly2E} from "../domain-models/osztaly2E";
|
||||||
import spells from "../data/spells.json";
|
import spells from "../data/spells.json";
|
||||||
import VarazslatSelector from "../display-components/VarazslatSelector";
|
import VarazslatSelector from "../display-components/VarazslatSelector";
|
||||||
import {arraySetN} from "../../util";
|
|
||||||
//
|
//
|
||||||
// function VarazslatSzint(props: {
|
// function VarazslatSzint(props: {
|
||||||
// szint: number,
|
// szint: number,
|
||||||
@@ -44,8 +44,8 @@ import {arraySetN} from "../../util";
|
|||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
|
|
||||||
function Varazskonyv(props: {osztaly: Osztaly2E, varazsloSzint: number, varazslatok: KarakterVarazslat[] }) {
|
function Varazskonyv(props: {osztaly: Osztaly2E, varazslatok: KarakterVarazslat[] }) {
|
||||||
const {osztaly, varazsloSzint, varazslatok } = props;
|
const {osztaly, varazslatok } = props;
|
||||||
|
|
||||||
const dispatch = useDispatch.withTypes<AppDispatch>()()
|
const dispatch = useDispatch.withTypes<AppDispatch>()()
|
||||||
|
|
||||||
@@ -71,29 +71,26 @@ function Varazskonyv(props: {osztaly: Osztaly2E, varazsloSzint: number, varazsla
|
|||||||
}
|
}
|
||||||
|
|
||||||
const firstLevel = classSpells.filter(v => v.szint === 1)
|
const firstLevel = classSpells.filter(v => v.szint === 1)
|
||||||
const firstLevelSelected = firstLevel.filter(v => varazslatok.some(x => x.id === v.id))
|
const firstLevelSelected = varazslatok.map(v => {
|
||||||
|
return firstLevel.find(x => x.id === v.id)
|
||||||
|
}).filter(x => !!x)
|
||||||
const firstLevelAvailable = firstLevel.filter(v => varazslatok.every(x => x.id !== v.id))
|
const firstLevelAvailable = firstLevel.filter(v => varazslatok.every(x => x.id !== v.id))
|
||||||
|
|
||||||
const createOnChange = (idx: number, allSelected: string[]) => (selected: string) => {
|
|
||||||
const nextVarazslatok: KarakterVarazslat[] = arraySetN(allSelected, idx, selected).map(x => ({
|
|
||||||
id: x,
|
|
||||||
bekeszitve: false,
|
|
||||||
}))
|
|
||||||
dispatch(setVarazslatok(nextVarazslatok))
|
|
||||||
}
|
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<h3>Varazsloi Varazskonyv</h3>
|
<h3>Varázslói Varázskönyv</h3>
|
||||||
<h5>1. Szintu varazslatok</h5>
|
<h5>1. Szintű varázslatok</h5>
|
||||||
{firstLevelSelected.map((v, i) => (
|
{firstLevelSelected.map((v, i) => (
|
||||||
<VarazslatSelector
|
<VarazslatSelector
|
||||||
|
key={`${i}VarazslatSelector`}
|
||||||
selected={v.id}
|
selected={v.id}
|
||||||
available={[v, ...firstLevelAvailable]}
|
available={[v, ...firstLevelAvailable]}
|
||||||
dataTestId={`varazskonyv_varazslo_1_${v.id}`}
|
dataTestId={`varazskonyv_varazslo_1_${v.id}`}
|
||||||
onChange={createOnChange(i, varazslatok.map(x => x.id))}
|
onChange={(nextId) => dispatch(setVarazslat({prev: v.id, next: nextId}))}
|
||||||
/>))}
|
/>))}
|
||||||
{firstLevelSelected.length < varazsloSzint &&
|
<button className='btn btn-outline-dark'
|
||||||
<button className='btn btn-outline-dark' onClick={() => dispatch(addVarazslat({id: firstLevelAvailable[0].id, bekeszitve: false}))} >Uj varazslat hozzadasa</button>}
|
onClick={() => dispatch(addVarazslat(firstLevelAvailable[0].id))}>
|
||||||
|
Új varázslat hozzáadása
|
||||||
|
</button>
|
||||||
</>;
|
</>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +100,7 @@ function Varazslatok() {
|
|||||||
|
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
{classLevels[Osztaly2E.Varazslo] > 0 && <Varazskonyv osztaly={Osztaly2E.Varazslo} varazsloSzint={classLevels[Osztaly2E.Varazslo]} varazslatok={karakter.varazslatok} />}
|
{classLevels[Osztaly2E.Varazslo] > 0 && <Varazskonyv osztaly={Osztaly2E.Varazslo} varazslatok={karakter.varazslatok} />}
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import {
|
|||||||
} from "./kepzettsegek2E.data"
|
} from "./kepzettsegek2E.data"
|
||||||
import {BaseHP} from "./masodlagos_ertekek";
|
import {BaseHP} from "./masodlagos_ertekek";
|
||||||
import {KarakterFelszereles} from "./felszereles";
|
import {KarakterFelszereles} from "./felszereles";
|
||||||
import {KarakterVarazslat} from "./varazslat";
|
|
||||||
|
|
||||||
export const characterSlice = createSlice({
|
export const characterSlice = createSlice({
|
||||||
name: "character2E",
|
name: "character2E",
|
||||||
@@ -97,11 +96,14 @@ export const characterSlice = createSlice({
|
|||||||
setFelszereles: (state, action: {payload: KarakterFelszereles}) => {
|
setFelszereles: (state, action: {payload: KarakterFelszereles}) => {
|
||||||
state.felszereles = action.payload;
|
state.felszereles = action.payload;
|
||||||
},
|
},
|
||||||
setVarazslatok: (state, action: {payload: KarakterVarazslat[]}) => {
|
setVarazslat: (state, action: {payload: {prev: string, next: string}}) => {
|
||||||
state.varazslatok = action.payload;
|
let spell = state.varazslatok.find(x => x.id === action.payload.prev)
|
||||||
|
if (spell !== undefined) {
|
||||||
|
spell.id = action.payload.next
|
||||||
|
}
|
||||||
},
|
},
|
||||||
addVarazslat: (state, action: {payload: KarakterVarazslat}) => {
|
addVarazslat: (state, action: {payload: string}) => {
|
||||||
state.varazslatok = [...state.varazslatok, action.payload];
|
state.varazslatok = [...state.varazslatok, {id: action.payload, bekeszitve: false}];
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -157,7 +159,7 @@ export const {
|
|||||||
setKepzettsegek,
|
setKepzettsegek,
|
||||||
setTolvajKepzettsegek,
|
setTolvajKepzettsegek,
|
||||||
setFelszereles,
|
setFelszereles,
|
||||||
setVarazslatok,
|
setVarazslat,
|
||||||
addVarazslat,
|
addVarazslat,
|
||||||
} = characterSlice.actions
|
} = characterSlice.actions
|
||||||
|
|
||||||
|
|||||||
@@ -37,18 +37,11 @@ export interface OsztalySzintVarazslat extends MagasabbSzintuVarazslat {
|
|||||||
|
|
||||||
export type OsztalyVarazslat = OsztalyCantrip | OsztalySzintVarazslat;
|
export type OsztalyVarazslat = OsztalyCantrip | OsztalySzintVarazslat;
|
||||||
|
|
||||||
export interface KarakterCantrip {
|
export interface KarakterVarazslat {
|
||||||
id: string
|
id: string
|
||||||
bekeszitve: boolean
|
bekeszitve: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface KarakterSzintVarazslat {
|
|
||||||
id: string
|
|
||||||
bekeszitve: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
export type KarakterVarazslat = KarakterCantrip | KarakterSzintVarazslat
|
|
||||||
|
|
||||||
export function GetCantrips(osztaly: Osztaly2E): Cantrip[] {
|
export function GetCantrips(osztaly: Osztaly2E): Cantrip[] {
|
||||||
switch (osztaly) {
|
switch (osztaly) {
|
||||||
case Osztaly2E.Pap:
|
case Osztaly2E.Pap:
|
||||||
|
|||||||
Reference in New Issue
Block a user