XAKVBFNCOTJQDRXBAP7ATSPIWYTEROYW3DCJYIGTYFVVLET2RU6QC
UZZYGXBFK5ZYVBMM6PO4EIHWHNGUUIVCFCL6HM5ODICHEFGCV4RQC
OPI6W7BO4V3R5WGEVN4USOHVPUV5PVWGKYBMCRU4VQOI7F7RCF5QC
JGGVCPUZDY2ZU6EZ72YHJSQKBIOYZPLGWHAJIMSH5ZN3WBWDKJWQC
HTIL7GWVKJ6WRRRQEEFGMQL6GWTFW2TP7FI34DLXI4DK4QS4HXSAC
MYLF7NEGFT6YYO6OEK22FLAS6Y2V3YGU4CQIMBE6APOLGLTOFNRQC
D5XJXJK472U7GYOBKYYGEMO5B3QM2OBDM5NWMYRNCZ2A7Z2HNFVAC
ZXBDOUETFSXTFY6J5LIMXBCNMDW6NTUTZ7HZZ6ND7BNUKISR74FAC
GM4D5JXIKKI7N3HG5NFHPKQ2BRSXCV2XFENRCAT2YZZMRUYQ7KZQC
EZYBNJFUNOS3LIU6ILXN7MFKLVW4SDXW6K5T4YFKFZ2R4UWSFUXAC
JPHC6PBQJCGZ3B4LKX7C3XZOYP6UTHWV5PU5EXZ27TTXYZY3AG4AC
5I4UCQOTFNIXNO3IEJBPOHAHI63WOS7ZCOGHWJ47IK6MDJ6CBW6AC
ISWDRBPZCEGJSXNXHML7D7XDW4N3Z7MXOF4OS7UHC6U2GVXFHYZQC
V5OW3Q4IOFG5YIRAWE7J3HDTEBOX2EW7AHVHKFH2XG7I2XXH6SMAC
J6J74CCDLZIY2SBU6O7DCX7QUO7LVNBFOZJ7F3VW4OPRPHKQ62OAC
.locslot .cube20:nth-of-type(1) { bottom:0; z-index:200; }
.locslot .cube20:nth-of-type(2) { bottom:0; left:17px; z-index:200; }
.locslot .cube20:nth-of-type(3) { bottom:13px; z-index:201; }
.locslot .cube20:nth-of-type(4) { bottom:13px; left:17px; z-index:201; }
.locslot .cube20:nth-of-type(5) { bottom:26px; z-index:203; }
/*
Cubes and disc on a tile:
Closest to the middle looks best, so we start there.
------------
| d |
| 4 3 ddd |
| 2 1 d |
| 6 5 |
------------
*/
.locslot .cube20:nth-of-type(1) { bottom:13px; left:17px; z-index:201; }
.locslot .cube20:nth-of-type(2) { bottom:13px; left: 0px; z-index:201; }
.locslot .cube20:nth-of-type(3) { bottom:26px; left:17px; z-index:203; }
.locslot .cube20:nth-of-type(4) { bottom:26px; left:0px; z-index:203; }
.locslot .cube20:nth-of-type(5) { bottom:0; left:17px; z-index:200; }
.locslot .cube20:nth-of-type(6) { bottom:0; left: 0px; z-index:200; }
bottom:-1px;
right:-2px;
}
.investigator > div:nth-of-type(1) { left: -5px; bottom:-2px; z-index:200; }
.investigator > div:nth-of-type(2) { right: -5px; bottom:-2px; left:17px; z-index:200; }
.investigator > div:nth-of-type(3) { left: -5px; bottom:13px; z-index:201; }
bottom:-4px;
}
.investigator > div:nth-of-type(1) { left:-3px; z-index:200; }
.investigator > div:nth-of-type(2) { left:8px;z-index:201; }
.investigator > div:nth-of-type(3) { left:19px; z-index:202; }
/* Correct the rotation of the location containers for the tokens.
The tokens look better when they are not rotated.
*/
#loccont_1 div:not(.token) > .token {
transform:rotate(-0deg);
}
#loccont_2 div:not(.token) > .token {
transform:rotate(-2.5deg);
}
#loccont_3 div:not(.token) > .token {
transform:rotate(-2.0deg);
}
#loccont_4 div:not(.token) > .token {
transform:rotate(-0deg);
}
#loccont_5 div:not(.token) > .token {
transform:rotate(-1.3deg);
}
#loccont_6 div:not(.token) > .token {
transform:rotate(-0deg);
}
#loccont_7 div:not(.token) > .token {
transform:rotate(-1.15deg);
}
#loccont_8 div:not(.token) > .token {
transform:rotate(-0deg);
}
#loccont_9 div:not(.token) > .token {
transform:rotate(-1.7deg);
}
#loccont_10 div:not(.token) > .token {
transform:rotate(1.5deg);
}
#loccont_11 div:not(.token) > .token {
transform:rotate(-0deg);
}
#loccont_12 div:not(.token) > .token {
transform:rotate(-0deg);
}
#loccont_13 div:not(.token) > .token {
transform:rotate(-1.5deg);
}
#loccont_14 div:not(.token) > .token {
transform:rotate(-0deg);
}
$current_player_id = self::getCurrentPlayerId(); // !! We must only return informations visible by this player !!
$minigame = self::getGameStateValue("minigame");
// Get information about players
$sql = "
SELECT
player_id as id,
player_score as score,
player_solved_in_round as solved_in_round,
player_no = $minigame as is_startplayer
FROM player
";
$result['players'] = self::getCollectionFromDb($sql);
// Gather all information about current game situation (visible by player $current_player_id).
$minigame = self::getGameStateValue("minigame");
// Get information about players
$sql = "
SELECT
player_id as id,
player_color as color,
player_score as score,
player_solved_in_round as solved_in_round,
player_no = $minigame as is_startplayer
FROM player
";
$players = self::getCollectionFromDb($sql);
foreach ($players as $idx => $player) {
$players[$idx]['colorname'] = $this->constants['HEX2COLORNAME'][$player['color']];
}
dojo.fx.wipeIn({node: $('carddisplay')}).play();
// "bug fix": if window was resized during this cards are in wrong
// positions; reset.
this.evidenceDisplay.resetItemsPosition();
this.evidenceDiscard.resetItemsPosition();
// dojo.fx.wipeIn({node: $('carddisplay')}).play();
// // "bug fix": if window was resized during this cards are in wrong
// // positions; reset.
// this.evidenceDisplay.resetItemsPosition();
// this.evidenceDiscard.resetItemsPosition();
if (!target_id) {
// No target id given. Then derive it from the type by some easy rules.
// TODO: explain rules
target_id = token.location;
if (ttype == 'cube' && target_id.startsWith('locslot_')) {
target_id += '_' + ttype + 's'; // "locslot_xxx_(cube|disc)s"
}
}
// If no explicit target given; use the location from the DB.
target_id = target_id || token.location;
this.slideToObject(key, target_id).play();
// HACK
var html = $(key).outerHTML;
var duration = 500;
delay = delay || 500;
this.slideToObjectAndDestroy(key, target_id, duration, delay);
window.setTimeout(dojo.hitch(this, function () {
dojo.place(html, target_id);
}), delay + duration);
var jstpl_player_board = '<div class="cp_board"><span class="sp_marker" id="sp_marker_${id}">➊</span></div>';
var jstpl_player_board = '<div class="cp_board">' +
'<div class="sp_marker" id="sp_marker_${id}"></div>' +
'<div class="investigator investigator_${colorname}"></div>x99' +
'<div class="cube_supply" id="cubes_${id}"></div>' +
'<div class="disc_supply" id="discs_${id}"></div>' +
'</div>';