|
|
@ -159,10 +159,13 @@ function EditorView({
|
|
|
|
|
|
|
|
|
|
|
|
const onBallDrop = (ref : HTMLDivElement) => {
|
|
|
|
const onBallDrop = (ref : HTMLDivElement) => {
|
|
|
|
const ballBounds = ref.getBoundingClientRect()
|
|
|
|
const ballBounds = ref.getBoundingClientRect()
|
|
|
|
let showBall = true
|
|
|
|
let ballAssigned = false
|
|
|
|
|
|
|
|
|
|
|
|
setContent(content => {
|
|
|
|
setContent(content => {
|
|
|
|
const players = content.players.map(player => {
|
|
|
|
const players = content.players.map(player => {
|
|
|
|
|
|
|
|
if(ballAssigned) {
|
|
|
|
|
|
|
|
return {...player, hasBall: false}
|
|
|
|
|
|
|
|
}
|
|
|
|
const playerBounds = document.getElementById(player.id)!.getBoundingClientRect()
|
|
|
|
const playerBounds = document.getElementById(player.id)!.getBoundingClientRect()
|
|
|
|
const doesOverlap = !(
|
|
|
|
const doesOverlap = !(
|
|
|
|
ballBounds.top > playerBounds.bottom ||
|
|
|
|
ballBounds.top > playerBounds.bottom ||
|
|
|
@ -171,13 +174,11 @@ function EditorView({
|
|
|
|
ballBounds.left > playerBounds.right
|
|
|
|
ballBounds.left > playerBounds.right
|
|
|
|
)
|
|
|
|
)
|
|
|
|
if(doesOverlap) {
|
|
|
|
if(doesOverlap) {
|
|
|
|
showBall = false
|
|
|
|
ballAssigned = true
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return {...player, hasBall: doesOverlap}
|
|
|
|
return {...player, hasBall: doesOverlap}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
setShowBall(showBall)
|
|
|
|
setShowBall(!ballAssigned)
|
|
|
|
return {players: players}
|
|
|
|
return {players: players}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -259,6 +260,9 @@ function EditorView({
|
|
|
|
case Team.Allies:
|
|
|
|
case Team.Allies:
|
|
|
|
setter = setAllies
|
|
|
|
setter = setAllies
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(player.hasBall) {
|
|
|
|
|
|
|
|
setShowBall(true)
|
|
|
|
|
|
|
|
}
|
|
|
|
setter((players) => [
|
|
|
|
setter((players) => [
|
|
|
|
...players,
|
|
|
|
...players,
|
|
|
|
{
|
|
|
|
{
|
|
|
|