Add Character support
This commit is contained in:
parent
f8172bd157
commit
0617601ff4
3 changed files with 50 additions and 7 deletions
|
|
@ -24,6 +24,7 @@ interface Props {
|
||||||
mainWeapon?: Weapon
|
mainWeapon?: Weapon
|
||||||
mainSummon?: Summon
|
mainSummon?: Summon
|
||||||
friendSummon?: Summon
|
friendSummon?: Summon
|
||||||
|
characters?: GridArray<Character>
|
||||||
weapons?: GridArray<Weapon>
|
weapons?: GridArray<Weapon>
|
||||||
summons?: GridArray<Summon>
|
summons?: GridArray<Summon>
|
||||||
editable: boolean
|
editable: boolean
|
||||||
|
|
@ -41,6 +42,7 @@ const Party = (props: Props) => {
|
||||||
} : {}
|
} : {}
|
||||||
|
|
||||||
// Grid data
|
// Grid data
|
||||||
|
const [characters, setCharacters] = useState<GridArray<Character>>({})
|
||||||
const [weapons, setWeapons] = useState<GridArray<Weapon>>({})
|
const [weapons, setWeapons] = useState<GridArray<Weapon>>({})
|
||||||
const [summons, setSummons] = useState<GridArray<Summon>>({})
|
const [summons, setSummons] = useState<GridArray<Summon>>({})
|
||||||
|
|
||||||
|
|
@ -52,9 +54,10 @@ const Party = (props: Props) => {
|
||||||
setMainWeapon(props.mainWeapon)
|
setMainWeapon(props.mainWeapon)
|
||||||
setMainSummon(props.mainSummon)
|
setMainSummon(props.mainSummon)
|
||||||
setFriendSummon(props.friendSummon)
|
setFriendSummon(props.friendSummon)
|
||||||
|
setCharacters(props.characters || {})
|
||||||
setWeapons(props.weapons || {})
|
setWeapons(props.weapons || {})
|
||||||
setSummons(props.summons || {})
|
setSummons(props.summons || {})
|
||||||
}, [props.mainWeapon, props.mainSummon, props.friendSummon, props.weapons, props.summons])
|
}, [props.mainWeapon, props.mainSummon, props.friendSummon, props.characters, props.weapons, props.summons])
|
||||||
|
|
||||||
const weaponGrid = (
|
const weaponGrid = (
|
||||||
<WeaponGrid
|
<WeaponGrid
|
||||||
|
|
@ -81,6 +84,8 @@ const Party = (props: Props) => {
|
||||||
|
|
||||||
const characterGrid = (
|
const characterGrid = (
|
||||||
<CharacterGrid
|
<CharacterGrid
|
||||||
|
userId={cookies.user ? cookies.user.userId : ''}
|
||||||
|
grid={characters}
|
||||||
editable={props.editable}
|
editable={props.editable}
|
||||||
exists={props.exists}
|
exists={props.exists}
|
||||||
onSelect={itemSelected}
|
onSelect={itemSelected}
|
||||||
|
|
@ -144,7 +149,11 @@ const Party = (props: Props) => {
|
||||||
saveClass()
|
saveClass()
|
||||||
break
|
break
|
||||||
case GridType.Character:
|
case GridType.Character:
|
||||||
saveCharacter(item as Character, position, partyId)
|
const character = item as Character
|
||||||
|
saveCharacter(character, position, partyId)
|
||||||
|
.then(() => {
|
||||||
|
storeCharacter(character, position)
|
||||||
|
})
|
||||||
break
|
break
|
||||||
case GridType.Weapon:
|
case GridType.Weapon:
|
||||||
const weapon = item as Weapon
|
const weapon = item as Weapon
|
||||||
|
|
@ -213,8 +222,21 @@ const Party = (props: Props) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Character
|
// Character
|
||||||
function saveCharacter(character: Character, position: number, party: string) {
|
function storeCharacter(character: Character, position: number) {
|
||||||
// TODO: Implement this
|
// Store the grid unit character at the correct position
|
||||||
|
let newCharacters = Object.assign({}, characters)
|
||||||
|
newCharacters[position] = character
|
||||||
|
setCharacters(newCharacters)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function saveCharacter(character: Character, position: number, party: string) {
|
||||||
|
await api.endpoints.characters.create({
|
||||||
|
'character': {
|
||||||
|
'party_id': party,
|
||||||
|
'character_id': character.id,
|
||||||
|
'position': position
|
||||||
|
}
|
||||||
|
}, headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Class
|
// Class
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import api from '~utils/api'
|
||||||
|
|
||||||
import Modal from '~components/Modal'
|
import Modal from '~components/Modal'
|
||||||
import Overlay from '~components/Overlay'
|
import Overlay from '~components/Overlay'
|
||||||
|
import CharacterResult from '~components/CharacterResult'
|
||||||
import WeaponResult from '~components/WeaponResult'
|
import WeaponResult from '~components/WeaponResult'
|
||||||
import SummonResult from '~components/SummonResult'
|
import SummonResult from '~components/SummonResult'
|
||||||
|
|
||||||
|
|
@ -11,7 +12,7 @@ import './index.css'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
close: () => void
|
close: () => void
|
||||||
send: (object: Weapon | Summon, position: number) => any
|
send: (object: Character | Weapon | Summon, position: number) => any
|
||||||
placeholderText: string
|
placeholderText: string
|
||||||
fromPosition: number
|
fromPosition: number
|
||||||
object: 'weapons' | 'characters' | 'summons'
|
object: 'weapons' | 'characters' | 'summons'
|
||||||
|
|
@ -75,7 +76,7 @@ class SearchModal extends React.Component<Props, State> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sendData = (result: Weapon | Summon) => {
|
sendData = (result: Character | Weapon | Summon) => {
|
||||||
this.props.send(result, this.props.fromPosition)
|
this.props.send(result, this.props.fromPosition)
|
||||||
this.props.close()
|
this.props.close()
|
||||||
}
|
}
|
||||||
|
|
@ -91,7 +92,7 @@ class SearchModal extends React.Component<Props, State> {
|
||||||
return this.renderSummonSearchResults(results)
|
return this.renderSummonSearchResults(results)
|
||||||
|
|
||||||
case 'characters':
|
case 'characters':
|
||||||
return (<div />)
|
return this.renderCharacterSearchResults(results)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,6 +116,16 @@ class SearchModal extends React.Component<Props, State> {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderCharacterSearchResults = (results: { [key: string]: any }) => {
|
||||||
|
return (
|
||||||
|
<ul id="results_container">
|
||||||
|
{ results.map( (result: Character) => {
|
||||||
|
return <CharacterResult key={result.id} data={result} onClick={() => { this.sendData(result) }} />
|
||||||
|
})}
|
||||||
|
</ul>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
renderEmptyState = () => {
|
renderEmptyState = () => {
|
||||||
let string = ''
|
let string = ''
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ const PartyRoute: React.FC<PartyProps> = ({ match }) => {
|
||||||
const [loading, setLoading] = useState(true)
|
const [loading, setLoading] = useState(true)
|
||||||
const [editable, setEditable] = useState(false)
|
const [editable, setEditable] = useState(false)
|
||||||
|
|
||||||
|
const [characters, setCharacters] = useState<GridArray<Character>>({})
|
||||||
const [weapons, setWeapons] = useState<GridArray<Weapon>>({})
|
const [weapons, setWeapons] = useState<GridArray<Weapon>>({})
|
||||||
const [summons, setSummons] = useState<GridArray<Summon>>({})
|
const [summons, setSummons] = useState<GridArray<Summon>>({})
|
||||||
|
|
||||||
|
|
@ -43,8 +44,15 @@ const PartyRoute: React.FC<PartyProps> = ({ match }) => {
|
||||||
if (partyUser != undefined && loggedInUser != undefined && partyUser === loggedInUser)
|
if (partyUser != undefined && loggedInUser != undefined && partyUser === loggedInUser)
|
||||||
setEditable(true)
|
setEditable(true)
|
||||||
|
|
||||||
|
let characters: GridArray<Character> = {}
|
||||||
let weapons: GridArray<Weapon> = {}
|
let weapons: GridArray<Weapon> = {}
|
||||||
let summons: GridArray<Summon> = {}
|
let summons: GridArray<Summon> = {}
|
||||||
|
|
||||||
|
party.characters.forEach((gridCharacter: GridCharacter) => {
|
||||||
|
if (gridCharacter.position != null)
|
||||||
|
characters[gridCharacter.position] = gridCharacter.character
|
||||||
|
})
|
||||||
|
|
||||||
party.weapons.forEach((gridWeapon: GridWeapon) => {
|
party.weapons.forEach((gridWeapon: GridWeapon) => {
|
||||||
if (gridWeapon.mainhand)
|
if (gridWeapon.mainhand)
|
||||||
setMainWeapon(gridWeapon.weapon)
|
setMainWeapon(gridWeapon.weapon)
|
||||||
|
|
@ -63,6 +71,7 @@ const PartyRoute: React.FC<PartyProps> = ({ match }) => {
|
||||||
|
|
||||||
setFound(true)
|
setFound(true)
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
|
setCharacters(characters)
|
||||||
setWeapons(weapons)
|
setWeapons(weapons)
|
||||||
setSummons(summons)
|
setSummons(summons)
|
||||||
setPartyId(party.id)
|
setPartyId(party.id)
|
||||||
|
|
@ -86,6 +95,7 @@ const PartyRoute: React.FC<PartyProps> = ({ match }) => {
|
||||||
mainWeapon={mainWeapon}
|
mainWeapon={mainWeapon}
|
||||||
mainSummon={mainSummon}
|
mainSummon={mainSummon}
|
||||||
friendSummon={friendSummon}
|
friendSummon={friendSummon}
|
||||||
|
characters={characters}
|
||||||
weapons={weapons}
|
weapons={weapons}
|
||||||
summons={summons}
|
summons={summons}
|
||||||
editable={editable}
|
editable={editable}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue