Пример #1
0
/**
 * Adjusts deviating cave's effects
 *
 * @param dbgame
 *          the link to the game DB
 * @return  all caveIDs
 */
function adjust_adjustCave($db, $caveID)
{
    global $effectTypeList, $terrainList, $checkOnly;
    // get cave
    $cave = getCaveByID($caveID);
    // get artefact effects
    $artefactEffects = artefact_recalculateEffects($caveID);
    // get wonder effects
    $wonderEffects = wonder_recalc($caveID, $db);
    // check each effect
    $adjustments = array();
    foreach ($effectTypeList as $effectID => $effect) {
        // get actual value
        $actual = $cave[$effect->dbFieldName];
        // get nominal value
        $nominal = $artefactEffects[$effectID] + $wonderEffects[$effectID];
        $nominal += (double) $terrainList[$cave['terrain']]['effects'][$effectID];
        // check for deviation
        if ($actual != $nominal) {
            // log difference
            adjust_log('%4d:  %-30s  nominal:%f  actual:%f', $caveID, $effect->dbFieldName, $nominal, $actual);
            // collect adjustments
            $adjustments[] = sprintf('%s = %f', $effect->dbFieldName, $nominal);
        }
    }
    // prepare query
    $query = sprintf('UPDATE Cave SET %s WHERE caveID = %d', implode(", ", $adjustments), $caveID);
    // adjust cave
    if (0 != sizeof($adjustments) && !$checkOnly) {
        adjust_log('Adjusting cave %d (%s)', $caveID, $cave['name']);
        // send query
        if (!$db->query($query)) {
            adjust_log('Error! "%s": %s', $query, mysql_error());
        }
    }
}
Пример #2
0
/**
 * Adjusts deviating cave's effects
 *
 * @param dbgame
 *          the link to the game DB
 * @return  all caveIDs
 */
function adjust_adjustCave($db, $caveID)
{
    global $checkOnly;
    // get cave
    $cave = getCaveByID($caveID);
    // get artefact effects
    $artefactEffects = artefact_recalculateEffects($caveID);
    // get wonder effects
    $wonderEffects = wonder_recalc($caveID, $db);
    // check each effect
    $adjustments = array();
    foreach ($GLOBALS['effectTypeList'] as $effectID => $effect) {
        // get actual value
        $actual = $cave[$effect->dbFieldName];
        // get nominal value
        $nominal = $artefactEffects[$effectID] + $wonderEffects[$effectID];
        $nominal += (double) $GLOBALS['terrainList'][$cave['terrain']]['effects'][$effectID];
        // check for deviation
        if ($actual != $nominal) {
            // log difference
            adjust_log('%4d:  %-30s  nominal:%f  actual:%f', $caveID, $effect->dbFieldName, $nominal, $actual);
            // collect adjustments
            $adjustments[] = sprintf('%s = %f', $effect->dbFieldName, $nominal);
        }
    }
    // prepare query
    $set = implode(", ", $adjustments);
    $sql = $db->prepare("UPDATE " . CAVE_TABLE . " SET {$set} WHERE caveID = :caveID");
    $sql->bindValue('caveID', $caveID, pdo::PARAM_INT);
    // adjust cave
    if (0 != sizeof($adjustments) && !$checkOnly) {
        adjust_log('Adjusting cave %d (%s)', $caveID, $cave['name']);
        // send query
        if (!$sql->execute()) {
            adjust_log('Error! "%s": %s', $query, $sql->errorInfo());
        }
    }
}