feature/MAPG-235-basic-challenge-mode #48
@ -19,6 +19,7 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
guessMarker: null,
|
guessMarker: null,
|
||||||
adaptGuess: false,
|
adaptGuess: false,
|
||||||
googleLink: null,
|
googleLink: null,
|
||||||
|
history: [],
|
||||||
|
|
||||||
readyToContinue: true,
|
readyToContinue: true,
|
||||||
timeoutEnd: null,
|
timeoutEnd: null,
|
||||||
@ -294,12 +295,23 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Game.history = this.response.history;
|
||||||
|
|
||||||
for (var i = 0; i < this.response.history.length; ++i) {
|
for (var i = 0; i < this.response.history.length; ++i) {
|
||||||
var round = this.response.history[i];
|
var round = this.response.history[i];
|
||||||
Game.rounds.push({ position: round.position, guessPosition: round.result.guessPosition, realMarker: null, guessMarkers: [] });
|
Game.rounds.push({ position: round.position, guessPosition: round.result.guessPosition, realMarker: null, guessMarkers: [] });
|
||||||
Game.addPositionToResultMap(true);
|
Game.addPositionToResultMap(true);
|
||||||
Game.addGuessPositionToResultMap(round.result.guessPosition, null, true);
|
if (round.result.guessPosition) {
|
||||||
|
Game.addGuessPositionToResultMap(round.result.guessPosition, null, true);
|
||||||
|
}
|
||||||
Game.scoreSum += round.result.score;
|
Game.scoreSum += round.result.score;
|
||||||
|
|
||||||
|
for (var j = 0; j < round.allResults.length; ++j) {
|
||||||
|
var result = round.allResults[j];
|
||||||
|
if (result.guessPosition) {
|
||||||
|
Game.addGuessPositionToResultMap(result.guessPosition, result, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.response.finished) {
|
if (this.response.finished) {
|
||||||
@ -598,12 +610,57 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Game.history = this.response.history;
|
||||||
|
|
||||||
Game.receiveResult(this.response.position, guessPosition, this.response.result, this.response.allResults);
|
Game.receiveResult(this.response.position, guessPosition, this.response.result, this.response.allResults);
|
||||||
|
|
||||||
if (this.response.place) {
|
if (this.response.place) {
|
||||||
Game.panoId = this.response.place.panoId;
|
Game.panoId = this.response.place.panoId;
|
||||||
Game.pov = this.response.place.pov;
|
Game.pov = this.response.place.pov;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if(this.response.history) {
|
||||||
|
|
||||||
|
// // game finished
|
||||||
|
// // delete everything but the last round
|
||||||
|
// for (var i = 0; i < Game.rounds.length -1; ++i) {
|
||||||
|
// var round = Game.rounds[i];
|
||||||
|
|
||||||
|
// if (round.realMarker) {
|
||||||
|
// round.realMarker.setMap(null);
|
||||||
|
// }
|
||||||
|
// for (var j = 0; j < round.guessMarkers.length; ++j) {
|
||||||
|
// var guessMarker = round.guessMarkers[j];
|
||||||
|
// guessMarker.marker.setMap(null);
|
||||||
|
// guessMarker.line.setMap(null);
|
||||||
|
// if (guessMarker.info) {
|
||||||
|
// guessMarker.info.close();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Game.rounds = [];
|
||||||
|
|
||||||
|
// for (var i = 0; i < this.response.history.length; ++i) {
|
||||||
|
// var round = this.response.history[i];
|
||||||
|
// Game.rounds[i] = { position: round.position, guessPosition: round.result.guessPosition, realMarker: null, guessMarkers: [] };
|
||||||
|
// Game.addPositionToResultMap(true);
|
||||||
|
// if (round.result.guessPosition) {
|
||||||
|
// Game.addGuessPositionToResultMap(round.result.guessPosition, null, true);
|
||||||
|
// }
|
||||||
|
// Game.scoreSum += round.result.score;
|
||||||
|
|
||||||
|
// for (var j = 0; j < round.allResults.length; ++j) {
|
||||||
|
// var result = round.allResults[j];
|
||||||
|
// if (result.guessPosition) {
|
||||||
|
// Game.addGuessPositionToResultMap(result.guessPosition, result, true);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
}, data);
|
}, data);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -717,6 +774,41 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
},
|
},
|
||||||
|
|
||||||
showSummary: function () {
|
showSummary: function () {
|
||||||
|
for (var i = 0; i < Game.rounds.length; ++i) {
|
||||||
|
var round = Game.rounds[i];
|
||||||
|
|
||||||
|
if (round.realMarker) {
|
||||||
|
round.realMarker.setMap(null);
|
||||||
|
}
|
||||||
|
for (var j = 0; j < round.guessMarkers.length; ++j) {
|
||||||
|
var guessMarker = round.guessMarkers[j];
|
||||||
|
guessMarker.marker.setMap(null);
|
||||||
|
guessMarker.line.setMap(null);
|
||||||
|
if (guessMarker.info) {
|
||||||
|
guessMarker.info.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Game.rounds = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < Game.history.length; ++i) {
|
||||||
|
var round = Game.history[i];
|
||||||
|
Game.rounds.push({ position: round.position, guessPosition: round.result.guessPosition, realMarker: null, guessMarkers: [] });
|
||||||
|
Game.addPositionToResultMap(true);
|
||||||
|
if (round.result.guessPosition) {
|
||||||
|
Game.addGuessPositionToResultMap(round.result.guessPosition, null, true);
|
||||||
|
}
|
||||||
|
Game.scoreSum += round.result.score;
|
||||||
|
|
||||||
|
for (var j = 0; j < round.allResults.length; ++j) {
|
||||||
|
var result = round.allResults[j];
|
||||||
|
if (result.guessPosition) {
|
||||||
|
Game.addGuessPositionToResultMap(result.guessPosition, result, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var distanceInfo = document.getElementById('distanceInfo');
|
var distanceInfo = document.getElementById('distanceInfo');
|
||||||
distanceInfo.children[0].style.display = 'none';
|
distanceInfo.children[0].style.display = 'none';
|
||||||
distanceInfo.children[1].style.display = 'none';
|
distanceInfo.children[1].style.display = 'none';
|
||||||
|
@ -160,19 +160,34 @@ class GameFlowController
|
|||||||
|
|
||||||
$response['history'] = [];
|
$response['history'] = [];
|
||||||
|
|
||||||
$guesses = iterator_to_array($this->guessRepository->getAllInChallengeByUser($userId, $challenge));
|
$guessesByUser = iterator_to_array($this->guessRepository->getAllInChallengeByUser($userId, $challenge));
|
||||||
$places = iterator_to_array($this->placeRepository->getAllInChallenge($challenge));
|
$places = iterator_to_array($this->placeRepository->getAllInChallenge($challenge));
|
||||||
|
|
||||||
|
|
||||||
|
for($i = 0; $i < $currentRound; ++$i) {
|
||||||
|
|
||||||
for($i = 0; $i < $currentRound; ++$i)
|
|
||||||
{
|
|
||||||
$response['history'][] = [
|
$response['history'][] = [
|
||||||
'position' => $places[$i]->getPosition()->toArray(),
|
'position' => $places[$i]->getPosition()->toArray(),
|
||||||
'result' => [
|
'result' => [
|
||||||
'guessPosition' => $guesses[$i]->getPosition()->toArray(),
|
'guessPosition' => $guessesByUser[$i]->getPosition()->toArray(),
|
||||||
'distance' => $guesses[$i]->getDistance(),
|
'distance' => $guessesByUser[$i]->getDistance(),
|
||||||
'score' => $guesses[$i]->getScore()
|
'score' => $guessesByUser[$i]->getScore()
|
||||||
]
|
],
|
||||||
|
'allResults' => []
|
||||||
];
|
];
|
||||||
|
|
||||||
|
foreach($this->guessRepository->getAllInChallengeByRound($i, $challenge) as $guess) {
|
||||||
|
if($guess->getUserId() != $userId) {
|
||||||
|
$user = $this->userRepository->getByGuess($guess);
|
||||||
|
|
||||||
|
$response['history'][$i]['allResults'][] = [
|
||||||
|
'userName' => $user->getDisplayName(),
|
||||||
|
'guessPosition' => $guess->getPosition()->toArray(),
|
||||||
|
'distance' => $guess->getDistance(),
|
||||||
|
'score' => $guess->getScore()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isset($currentPlace)) { // game finished
|
if(!isset($currentPlace)) { // game finished
|
||||||
@ -347,11 +362,40 @@ class GameFlowController
|
|||||||
'panoId' => $nextPlace->getPanoIdCached(),
|
'panoId' => $nextPlace->getPanoIdCached(),
|
||||||
'pov' => $nextPlace->getPov()->toArray()
|
'pov' => $nextPlace->getPov()->toArray()
|
||||||
];
|
];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$guessesByUser = iterator_to_array($this->guessRepository->getAllInChallengeByUser($userId, $challenge));
|
||||||
|
$places = iterator_to_array($this->placeRepository->getAllInChallenge($challenge));
|
||||||
|
|
||||||
|
for($i = 0; $i < $nextRound; ++$i) {
|
||||||
|
|
||||||
|
$response['history'][] = [
|
||||||
|
'position' => $places[$i]->getPosition()->toArray(),
|
||||||
|
'result' => [
|
||||||
|
'guessPosition' => $guessesByUser[$i]->getPosition()->toArray(),
|
||||||
|
'distance' => $guessesByUser[$i]->getDistance(),
|
||||||
|
'score' => $guessesByUser[$i]->getScore()
|
||||||
|
],
|
||||||
|
'allResults' => []
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach($this->guessRepository->getAllInChallengeByRound($i, $challenge) as $guess) {
|
||||||
|
// if($guess->getUserId() != $userId) {
|
||||||
|
$user = $this->userRepository->getByGuess($guess);
|
||||||
|
|
||||||
|
$response['history'][$i]['allResults'][] = [
|
||||||
|
'userName' => $user->getDisplayName(),
|
||||||
|
'guessPosition' => $guess->getPosition()->toArray(),
|
||||||
|
'distance' => $guess->getDistance(),
|
||||||
|
'score' => $guess->getScore()
|
||||||
|
];
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$this->saveVisit($currentPlace->getId());
|
$this->saveVisit($currentPlace->getId());
|
||||||
|
|
||||||
return new JsonContent($response);
|
return new JsonContent($response);
|
||||||
|
@ -55,6 +55,7 @@ class GuessRepository
|
|||||||
$select = new Select(\Container::$dbConnection);
|
$select = new Select(\Container::$dbConnection);
|
||||||
$select->innerJoin('place_in_challenge', ['guesses', 'place_in_challenge_id'], '=', ['place_in_challenge', 'id']);
|
$select->innerJoin('place_in_challenge', ['guesses', 'place_in_challenge_id'], '=', ['place_in_challenge', 'id']);
|
||||||
$select->where('challenge_id', '=', $challenge->getId());
|
$select->where('challenge_id', '=', $challenge->getId());
|
||||||
|
$select->orderBy('order');
|
||||||
|
|
||||||
yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
|
yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user