Example #1
0
function wonders_getContent()
{
    global $template;
    // open template
    $template->setFile('wonder.tmpl');
    $id = request_var('wondersID', 0);
    if (!isset($GLOBALS['wonderTypeList'][$id]) || $GLOBALS['wonderTypeList'][$id]->nodocumentation || $GLOBALS['wonderTypeList'][$id]->isTribeCaveWonder) {
        $wonder = $GLOBALS['wonderTypeList'][0];
    } else {
        $wonder = $GLOBALS['wonderTypeList'][$id];
    }
    $uaWonderTargetText = WonderTarget::getWonderTargets();
    $resourceCost = array();
    foreach ($wonder->resourceProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($resourceCost, array('dbFieldName' => $GLOBALS['resourceTypeList'][$key]->dbFieldName, 'name' => $GLOBALS['resourceTypeList'][$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $unitCost = array();
    foreach ($wonder->unitProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($unitCost, array('dbFieldName' => $GLOBALS['unitTypeList'][$key]->dbFieldName, 'name' => $GLOBALS['unitTypeList'][$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $moreCost = array_merge($unitCost);
    $template->addVars(array('name' => $wonder->name, 'offensiveness' => $wonder->offensiveness, 'description' => $wonder->description, 'chance' => round(eval('return ' . formula_parseBasic($wonder->chance) . ';'), 3), 'target' => $uaWonderTargetText[$wonder->target], 'resource_cost' => $resourceCost, 'dependencies' => rules_checkDependencies($wonder), 'more_cost' => sizeof($moreCost) ? $moreCost : false));
}
Example #2
0
function formula_parseToReadable($formula)
{
    global $FORMULA_SYMBOLS, $FORMULA_READABLE;
    foreach ($FORMULA_READABLE as $key => $value) {
        $formula = str_replace($key, $value, $formula);
    }
    $sql = '';
    // parse symbols
    for ($i = 0; $i < strlen($formula); $i++) {
        // opening brace
        if ($formula[$i] == '[') {
            $symbol = $formula[++$i];
            $index = 0;
            while ($formula[++$i] != '.') {
                $index = $index * 10 + ($formula[$i] + 0);
            }
            $field = substr($formula, ++$i, 3);
            // 'ACT]' or 'MAX]'
            $i += 3;
            if (strncasecmp($field, "ACT", 3) == 0) {
                $sql .= $FORMULA_SYMBOLS[$symbol][$index]->name;
            } else {
                if (strncasecmp($field, "MAX", 3) == 0) {
                    $sql .= formula_parseToReadable($FORMULA_SYMBOLS[$symbol][$index]->maxLevel);
                }
            }
        } else {
            $sql .= $formula[$i];
        }
    }
    return $sql;
}
Example #3
0
function resources_getContent()
{
    global $template;
    // open template
    $template->setFile('resource.tmpl');
    $id = request_var('resourcesID', 0);
    if (!isset($GLOBALS['resourceTypeList'][$id]) || $GLOBALS['resourceTypeList'][$id]->nodocumentation) {
        $resource = $GLOBALS['resourceTypeList'][0];
    } else {
        $resource = $GLOBALS['resourceTypeList'][$id];
    }
    $template->addVars(array('name' => $resource->name, 'description' => '', 'production' => formula_parseToReadable($resource->resProdFunction), 'max_storage' => formula_parseToReadable($resource->maxLevel), 'dbFieldName' => $resource->dbFieldName, 'DEPENDENCIES' => rules_checkDependencies($resource)));
}
Example #4
0
function defenses_getContent()
{
    global $template;
    $defenseSystemTypeList = $GLOBALS['defenseSystemTypeList'];
    $resourceTypeList = $GLOBALS['resourceTypeList'];
    $unitTypeList = $GLOBALS['unitTypeList'];
    // open template
    $template->setFile('defenseSystem.tmpl');
    $id = request_var('defensesID', 0);
    if (!isset($defenseSystemTypeList[$id]) || $defenseSystemTypeList[$id]->nodocumentation) {
        $defenseSystem = $defenseSystemTypeList[0];
    } else {
        $defenseSystem = $defenseSystemTypeList[$id];
    }
    $resourceCost = array();
    foreach ($defenseSystem->resourceProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($resourceCost, array('dbFieldName' => $resourceTypeList[$key]->dbFieldName, 'name' => $resourceTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $unitCost = array();
    foreach ($defenseSystem->unitProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($unitCost, array('dbFieldName' => $unitTypeList[$key]->dbFieldName, 'name' => $unitTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $defenseCost = array();
    foreach ($defenseSystem->defenseProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($defenseCost, array('dbFieldName' => $defenseSystemTypeList[$key]->dbFieldName, 'name' => $defenseSystemTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $buildingCost = array();
    foreach ($defenseSystem->buildingProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($externalCost, array('dbFieldName' => $buildingTypeList[$key]->dbFieldName, 'name' => $buildingTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $moreCost = array_merge($unitCost, $defenseCost, $buildingCost);
    $template->addVars(array('name' => $defenseSystem->name, 'description' => $defenseSystem->description, 'maximum' => formula_parseToReadable($defenseSystem->maxLevel), 'productionTime' => "(" . formula_parseToReadable($defenseSystem->productionTimeFunction) . ")*" . DEFENSESYSTEM_TIME_BASE_FACTOR . " (in Sekunden)", 'rangeAttack' => $defenseSystem->attackRange, 'attackRate' => $defenseSystem->attackRate, 'defenseRate' => $defenseSystem->defenseRate, 'size' => $defenseSystem->hitPoints, 'antiSpyChance' => $defenseSystem->antiSpyChance, 'dbFieldName' => $defenseSystem->dbFieldName, 'warpoints' => $defenseSystem->warPoints, 'resource_cost' => $resourceCost, 'dependencies' => rules_checkDependencies($defenseSystem), 'more_cost' => sizeof($moreCost) ? $moreCost : false));
}
Example #5
0
function buildings_getContent()
{
    global $template;
    $buildingTypeList = $GLOBALS['buildingTypeList'];
    $resourceTypeList = $GLOBALS['resourceTypeList'];
    $unitTypeList = $GLOBALS['unitTypeList'];
    // open template
    $template->setFile('building.tmpl');
    $id = request_var('buildingsID', 0);
    if (!isset($buildingTypeList[$id]) || $buildingTypeList[$id]->nodocumentation) {
        $building = $buildingTypeList[0];
    } else {
        $building = $buildingTypeList[$id];
    }
    $resourceCost = array();
    foreach ($building->resourceProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($resourceCost, array('dbFieldName' => $resourceTypeList[$key]->dbFieldName, 'name' => $resourceTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $unitCost = array();
    foreach ($building->unitProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($unitCost, array('dbFieldName' => $unitTypeList[$key]->dbFieldName, 'name' => $unitTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $defenseCost = array();
    foreach ($building->defenseProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($defenseCost, array('dbFieldName' => $defenseSystemTypeList[$key]->dbFieldName, 'name' => $defenseSystemTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $buildingCost = array();
    foreach ($building->buildingProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($buildingCost, array('dbFieldName' => $buildingTypeList[$key]->dbFieldName, 'name' => $buildingTypeList[$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $moreCost = array_merge($unitCost, $defenseCost, $buildingCost);
    $template->addVars(array('name' => $building->name, 'description' => $building->description, 'maximum' => formula_parseToReadable($building->maxLevel), 'productionTime' => "(" . formula_parseToReadable($building->productionTimeFunction) . ")*" . BUILDING_TIME_BASE_FACTOR . " (in Sekunden)", 'dbFieldName' => $building->dbFieldName, 'resource_cost' => $resourceCost, 'dependencies' => rules_checkDependencies($building), 'more_cost' => sizeof($moreCost) ? $moreCost : false));
}
Example #6
0
function units_getContent()
{
    global $template;
    // open template
    $template->setFile('unit.tmpl');
    $id = request_var('unitsID', 0);
    if (!isset($GLOBALS['unitTypeList'][$id]) || $GLOBALS['unitTypeList'][$id]->nodocumentation) {
        $unit = $GLOBALS['unitTypeList'][0];
    } else {
        $unit = $GLOBALS['unitTypeList'][$id];
    }
    $resourceCost = array();
    foreach ($unit->resourceProductionCost as $key => $value) {
        if ($value != "" && $value != 0) {
            array_push($resourceCost, array('dbFieldName' => $GLOBALS['resourceTypeList'][$key]->dbFieldName, 'name' => $GLOBALS['resourceTypeList'][$key]->name, 'amount' => $value));
        }
    }
    $unitCost = array();
    foreach ($unit->unitProductionCost as $key => $value) {
        if ($value != "" && $value != 0) {
            array_push($unitCost, array('dbFieldName' => $GLOBALS['unitTypeList'][$key]->dbFieldName, 'name' => $GLOBALS['unitTypeList'][$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $defenseCost = array();
    foreach ($unit->defenseProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($defenseCost, array('dbFieldName' => $GLOBALS['defenseSystemTypeList'][$key]->dbFieldName, 'name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $buildingCost = array();
    foreach ($unit->buildingProductionCost as $key => $value) {
        if ($value != "" && $value != "0") {
            array_push($externalCost, array('dbFieldName' => $GLOBALS['buildingTypeList'][$key]->dbFieldName, 'name' => $GLOBALS['buildingTypeList'][$key]->name, 'amount' => formula_parseToReadable($value)));
        }
    }
    $moreCost = array_merge($unitCost, $defenseCost, $buildingCost);
    $template->addVars(array('name' => $unit->name, 'description' => $unit->description, 'productionTime' => "(" . formula_parseToReadable($unit->productionTimeFunction) . ")*" . BUILDING_TIME_BASE_FACTOR . " (in Sekunden)", 'rangeAttack' => $unit->attackRange, 'arealAttack' => $unit->attackAreal, 'attackRate' => $unit->attackRate, 'meleeDefenseRate' => $unit->defenseRate, 'rangedDefenseRate' => $unit->rangedDamageResistance, 'size' => $unit->hitPoints, 'warpoints' => $unit->warpoints, 'antiSpyChance' => $unit->antiSpyChance, 'spyChance' => $unit->spyChance, 'spyValue' => $unit->spyValue, 'spyQuality' => $unit->spyQuality, 'dbFieldName' => $unit->dbFieldName, 'movement_speed' => $unit->wayCost, 'movement_cost' => $unit->foodCost, 'normalDamageProbabilit' => 100 * (1 - ($unit->heavyDamageProbability + $unit->criticalDamageProbability)), 'heavyDamageProbability' => 100 * $unit->heavyDamageProbability, 'criticalDamageProbability' => 100 * $unit->criticalDamageProbability, 'resource_cost' => $resourceCost, 'dependencies' => rules_checkDependencies($unit), 'more_cost' => sizeof($moreCost) ? $moreCost : false));
}
Example #7
0
function defense_showProperties($defenseID, $cave, $method)
{
    global $template;
    // open template
    if ($method == 'ajax') {
        $shortVersion = true;
        $template->setFile('defenseDetailAjax.tmpl');
    } else {
        $shortVersion = false;
        $template->setFile('defenseDetail.tmpl');
    }
    // first check whether that unit should be displayed...
    if (!isset($GLOBALS['defenseSystemTypeList'][$defenseID])) {
        $template->addVar('status_msg', array('type' => 'error', 'message' => _('Die Verteidigung wurde nicht gefunden oder ist derzeit nicht baubar.')));
        return;
    }
    $defense = $GLOBALS['defenseSystemTypeList'][$defenseID];
    $maxLevel = round(eval('return ' . formula_parseToPHP("{$defense->maxLevel};", '$cave')));
    $maxLevel = $maxLevel < 0 ? 0 : $maxLevel;
    $maxReadable = formula_parseToReadable($defense->maxLevel);
    if ($defense->nodocumentation && !$cave[$defense->dbFieldName] && rules_checkDependencies($defense, $cave) !== true) {
        $template->addVar('status_msg', array('type' => 'error', 'message' => _('Die Erweiterung wurde nicht gefunden oder ist derzeit nicht baubar.')));
        return;
    }
    $currentlevel = $cave[$defense->dbFieldName];
    $levels = $costTimeLvl = array();
    for ($level = $cave[$defense->dbFieldName], $count = 0; $level < $maxLevel && $count < ($shortVersion ? 3 : 10); ++$count, ++$level, ++$cave[$defense->dbFieldName]) {
        $duration = time_formatDuration(eval('return ' . formula_parseToPHP($defense->productionTimeFunction . ";", '$cave')) * DEFENSESYSTEM_TIME_BASE_FACTOR);
        // iterate ressourcecosts
        $resourceCost = array();
        foreach ($defense->resourceProductionCost as $resourceID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$cave')));
            if ($cost) {
                array_push($resourceCost, array('name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'dbFieldName' => $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate unitcosts
        $unitCost = array();
        foreach ($defense->unitProductionCost as $unitID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$cave')));
            if ($cost) {
                array_push($unitCost, array('name' => $GLOBALS['unitTypeList'][$unitID]->name, 'dbFieldName' => $GLOBALS['unitTypeList'][$unitID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate buildingCost
        $buildingCost = array();
        foreach ($defense->buildingProductionCost as $buildingID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($buildingCost, array('name' => $GLOBALS['buildingTypeList'][$buildingID]->name, 'dbFieldName' => $GLOBALS['buildingTypeList'][$buildingID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate defenseCost
        $defenseCost = array();
        foreach ($defense->defenseProductionCost as $defenseID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($defenseCost, array('name' => $GLOBALS['defenseSystemTypeList'][$defenseID]->name, 'dbFieldName' => $GLOBALS['defenseSystemTypeList'][$defenseID]->dbFieldName, 'value' => $cost));
            }
        }
        if (rules_checkDependencies($defense, $cave) === true) {
            $levels[$count] = array('level' => $level + 1, 'time' => $duration, 'resource_cost' => $resourceCost, 'unit_cost' => $unitCost, 'building_cost' => $buildingCost, 'defense_cost' => $defenseCost);
        }
    }
    if (sizeof($levels)) {
        $costTimeLvl = array('population' => $cave['population'], 'item' => $levels);
    }
    $dependencies = array();
    $buildingdep = array();
    $defensesystemdep = array();
    $resourcedep = array();
    $sciencedep = array();
    $unitdep = array();
    foreach ($defense->buildingDepList as $key => $level) {
        if ($level) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->defenseSystemDepList as $key => $level) {
        if ($level) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->resourceDepList as $key => $level) {
        if ($level) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->scienceDepList as $key => $level) {
        if ($level) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->unitDepList as $key => $level) {
        if ($level) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->maxBuildingDepList as $key => $level) {
        if ($level != -1) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxDefenseSystemDepList as $key => $level) {
        if ($level != -1) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxResourceDepList as $key => $level) {
        if ($level != -1) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxScienceDepList as $key => $level) {
        if ($level != -1) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxUnitDepList as $key => $level) {
        if ($level != -1) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    if (sizeof($buildingdep)) {
        array_push($dependencies, array('name' => _('Erweiterungen'), 'dep' => $buildingdep));
    }
    if (sizeof($defensesystemdep)) {
        array_push($dependencies, array('name' => _('Verteidigungsanlagen'), 'dep' => $defensesystemdep));
    }
    if (sizeof($resourcedep)) {
        array_push($dependencies, array('name' => _('Rohstoffe'), 'dep' => $resourcedep));
    }
    if (sizeof($sciencedep)) {
        array_push($dependencies, array('name' => _('Forschungen'), 'dep' => $sciencedep));
    }
    if (sizeof($unitdep)) {
        array_push($dependencies, array('name' => _('Einheiten'), 'dep' => $unitdep));
    }
    $template->addVars(array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'description' => $defense->description, 'maxlevel' => $maxLevel, 'maxReadable' => $maxReadable, 'currentlevel' => $currentlevel, 'rangeAttack' => $defense->attackRange, 'attackRate' => $defense->attackRate, 'defenseRate' => $defense->defenseRate, 'size' => $defense->hitPoints, 'antiSpyChance' => $defense->antiSpyChance, 'warPoints' => $defense->warPoints, 'cost_time_lvl' => $costTimeLvl, 'dependencies' => $dependencies, 'rules_path' => RULES_PATH));
}
Example #8
0
function improvement_getBuildingDetails($buildingID, $caveData, $method)
{
    global $template;
    // first check whether that building should be displayed...
    $building = $GLOBALS['buildingTypeList'][$buildingID];
    $maxLevel = round(eval('return ' . formula_parseToPHP("{$building->maxLevel};", '$caveData')));
    $maxLevel = $maxLevel < 0 ? 0 : $maxLevel;
    $maxReadable = formula_parseToReadable($building->maxLevel);
    if (!$building || $building->nodocumentation && !$caveData[$building->dbFieldName] && rules_checkDependencies($building, $caveData) !== TRUE) {
        $building = current($GLOBALS['buildingTypeList']);
    }
    // open template
    if ($method == 'ajax') {
        $shortVersion = true;
        $template->setFile('improvementDetailAjax.tmpl');
    } else {
        $shortVersion = false;
        $template->setFile('improvementDetail.tmpl');
        $template->setShowRresource(false);
    }
    $currentlevel = $caveData[$building->dbFieldName];
    $levels = $costTimeLvl = array();
    for ($level = $caveData[$building->dbFieldName], $count = 0; $level < $maxLevel && $count < ($shortVersion ? 3 : 10); ++$count, ++$level, ++$caveData[$building->dbFieldName]) {
        $duration = time_formatDuration(eval('return ' . formula_parseToPHP($GLOBALS['buildingTypeList'][$buildingID]->productionTimeFunction . ";", '$caveData')) * BUILDING_TIME_BASE_FACTOR);
        // iterate ressourcecosts
        $resourceCost = array();
        foreach ($building->resourceProductionCost as $resourceID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($resourceCost, array('name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'dbFieldName' => $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate unitcosts
        $unitCost = array();
        foreach ($building->unitProductionCost as $unitID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($unitCost, array('name' => $GLOBALS['unitTypeList'][$unitID]->name, 'dbFieldName' => $GLOBALS['unitTypeList'][$unitID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate buildingCost
        $buildingCost = array();
        foreach ($building->buildingProductionCost as $buildingID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($buildingCost, array('name' => $GLOBALS['buildingTypeList'][$buildingID]->name, 'dbFieldName' => $GLOBALS['buildingTypeList'][$buildingID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate defenseCost
        $defenseCost = array();
        foreach ($building->defenseProductionCost as $defenseID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($defenseCost, array('name' => $GLOBALS['defenseSystemTypeList'][$defenseID]->name, 'dbFieldName' => $GLOBALS['defenseSystemTypeList'][$defenseID]->dbFieldName, 'value' => $cost));
            }
        }
        $levels[$count] = array('level' => $level + 1, 'time' => $duration, 'resource_cost' => $resourceCost, 'unit_cost' => $unitCost, 'building_cost' => $buildingCost, 'defense_cost' => $defenseCost);
    }
    if (sizeof($levels)) {
        $costTimeLvl = array('population' => $caveData['population'], 'item' => $levels);
    }
    $dependencies = array();
    $buildingdep = array();
    $defensesystemdep = array();
    $resourcedep = array();
    $sciencedep = array();
    $unitdep = array();
    foreach ($building->buildingDepList as $key => $level) {
        if ($level) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->defenseSystemDepList as $key => $level) {
        if ($level) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->resourceDepList as $key => $level) {
        if ($level) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->scienceDepList as $key => $level) {
        if ($level) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->unitDepList as $key => $level) {
        if ($level) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->maxBuildingDepList as $key => $level) {
        if ($level != -1) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxDefenseSystemDepList as $key => $level) {
        if ($level != -1) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxResourceDepList as $key => $level) {
        if ($level != -1) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxScienceDepList as $key => $level) {
        if ($level != -1) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxUnitDepList as $key => $level) {
        if ($level != -1) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    if (sizeof($buildingdep)) {
        array_push($dependencies, array('name' => _('Erweiterungen'), 'dep' => $buildingdep));
    }
    if (sizeof($defensesystemdep)) {
        array_push($dependencies, array('name' => _('Verteidigungsanlagen'), 'dep' => $defensesystemdep));
    }
    if (sizeof($resourcedep)) {
        array_push($dependencies, array('name' => _('Rohstoffe'), 'dep' => $resourcedep));
    }
    if (sizeof($sciencedep)) {
        array_push($dependencies, array('name' => _('Forschungen'), 'dep' => $sciencedep));
    }
    if (sizeof($unitdep)) {
        array_push($dependencies, array('name' => _('Einheiten'), 'dep' => $unitdep));
    }
    $template->addVars(array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'description' => $building->description, 'maxlevel' => $maxLevel, 'maxReadable' => $maxReadable, 'currentlevel' => $currentlevel, 'cost_time_lvl' => $costTimeLvl, 'dependencies' => $dependencies, 'rules_path' => RULES_PATH));
}
Example #9
0
function unit_getUnitDetail($caveID, &$details)
{
    global $template;
    // open template
    $template->setFile('unitBuilder.tmpl');
    // messages
    $messageText = array(0 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Auftrag wurde erteilt')), 4 => array('type' => 'info', 'message' => sprintf(_('Bitte korrekte Anzahl der Einheiten Angeben (1 ... %d)'), MAX_SIMULTAN_BUILDED_UNITS)), 5 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.')));
    // get this cave's queue
    $queue = unit_getQueue($_SESSION['player']->playerID, $caveID);
    $action = Request::getVar('action', '');
    switch ($action) {
        /****************************************************************************************************
        *
        * Einheiten bauen
        *
        ****************************************************************************************************/
        case 'build':
            $unitID = Request::getVar('unitID', -1);
            $quantity = Request::getVar('quantity', 0);
            if ($unitID == -1) {
                $messageID = 2;
                break;
            }
            // check queue exist
            if (sizeof($queue)) {
                $messageID = 5;
                break;
            }
            $messageID = unit_processOrder($unitID, $quantity, $caveID, $details);
            $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            $queue = unit_getQueue($_SESSION['player']->playerID, $caveID);
            break;
            /****************************************************************************************************
            *
            * Ausbau der Einheiten abbrechen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Ausbau der Einheiten abbrechen
        *
        ****************************************************************************************************/
        case 'cancelOrder':
            $eventID = Request::getVar('id', 0);
            if ($eventID == 0) {
                $messageID = 1;
                break;
            }
            // check queue exist
            if (!sizeof($queue) || $queue['event_unitID'] != $eventID) {
                $messageID = 1;
                break;
            }
            if (Request::isPost('postConfirm')) {
                $messageID = unit_cancelOrder($eventID, $caveID);
                if ($messageID == 0) {
                    $queue = null;
                }
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => UNIT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['unitTypeList'][$queue['unitID']]->name)));
            }
            break;
    }
    $units = $unitsUnqualified = array();
    foreach ($GLOBALS['unitTypeList'] as $id => $unit) {
        $result = rules_checkDependencies($unit, $details);
        /****************************************************************************************************
        *
        * Einheiten die gebaut werden können.
        *
        ****************************************************************************************************/
        if ($result === TRUE) {
            $units[$unit->unitCategory]['items'][$unit->unitID] = array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unit_id' => $unit->unitID, 'unitCategory' => $unit->unitCategory, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'stock' => "0" + $details[$unit->dbFieldName], 'description' => $unit->description, 'duration_formula' => formula_parseToReadable($unit->productionTimeFunction), 'visible' => $unit->visible, 'range_attack' => $unit->attackRange, 'areal_attack' => $unit->attackAreal, 'attack_rate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defense_rate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spy_value' => $unit->spyValue, 'spy_chance' => $unit->spyChance, 'spy_quality' => $unit->spyQuality, 'anti_spy_chance' => $unit->antiSpyChance, 'fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->dbFieldName, 'fuel_factor' => $unit->foodCost, 'way_cost' => $unit->wayCost, 'normal_damage_probabilit' => 100 * (1 - ($unit->heavyDamageProbability + $unit->criticalDamageProbability)), 'heavy_damage_probability' => 100 * $unit->heavyDamageProbability, 'critical_damage_probability' => 100 * $unit->criticalDamageProbability);
            $units[$unit->unitCategory]['items'][$unit->unitID] = array_merge($units[$unit->unitCategory]['items'][$unit->unitID], parseCost($unit, $details));
            // show the building link ?!
            if (sizeof($queue)) {
                $units[$unit->unitCategory]['items'][$unit->unitID]['no_build_msg'] = _('Ausbau im Gange');
            } else {
                if ($units[$unit->unitCategory]['items'][$unit->unitID]['notenough']) {
                    $units[$unit->unitCategory]['items'][$unit->unitID]['no_build_msg'] = _('Zu wenig Rohstoffe');
                } else {
                    $units[$unit->unitCategory]['items'][$unit->unitID]['build_link'] = true;
                }
            }
            /****************************************************************************************************
            *
            * Einheiten die nicht gebaut werden können.
            *
            ****************************************************************************************************/
        } else {
            if ($result !== FALSE && !$unit->nodocumentation) {
                $unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID] = array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unit_id' => $unit->unitID, 'unitCategory' => $unit->unitCategory, 'cave_id' => $caveID, 'dependencies' => $result, 'description' => $unit->description, 'duration_formula' => formula_parseToReadable($unit->productionTimeFunction), 'visible' => $unit->visible, 'range_attack' => $unit->attackRange, 'areal_attack' => $unit->attackAreal, 'attack_rate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defense_rate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spy_value' => $unit->spyValue, 'spy_chance' => $unit->spyChance, 'spy_quality' => $unit->spyQuality, 'anti_spy_chance' => $unit->antiSpyChance, 'fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->dbFieldName, 'fuel_factor' => $unit->foodCost, 'way_cost' => $unit->wayCost, 'normal_damage_probabilit' => 100 * (1 - ($unit->heavyDamageProbability + $unit->criticalDamageProbability)), 'heavy_damage_probability' => 100 * $unit->heavyDamageProbability, 'critical_damage_probability' => 100 * $unit->criticalDamageProbability);
                $unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID] = array_merge($unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID], parseCost($unit, $details));
            }
        }
    }
    /****************************************************************************************************
    *
    * Namen zu den Kategorien hinzufügen & sortieren
    *
    ****************************************************************************************************/
    $tmpUnits = $tmpUnitsUnqualified = array();
    foreach ($GLOBALS['unitCategoryTypeList'] as $unitsCategory) {
        if (isset($units[$unitsCategory->id])) {
            $tmpUnits[$unitsCategory->sortID] = array('id' => $unitsCategory->id, 'name' => $unitsCategory->name, 'items' => $units[$unitsCategory->id]['items']);
            unset($units[$unitsCategory->id]);
        }
        if (isset($unitsUnqualified[$unitsCategory->id])) {
            $tmpUnitsUnqualified[$unitsCategory->sortID] = array('id' => $unitsCategory->id, 'name' => $unitsCategory->name, 'items' => $unitsUnqualified[$unitsCategory->id]['items']);
            unset($unitsUnqualified[$unitsCategory->id]);
        }
    }
    $units = $tmpUnits;
    $unitsUnqualified = $tmpUnitsUnqualified;
    unset($tmpUnits, $tmpUnitsUnqualified);
    ksort($units);
    ksort($unitsUnqualified);
    /****************************************************************************************************
    *
    * Irgendwas im Ausbau?
    *
    ****************************************************************************************************/
    if (sizeof($queue)) {
        $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['unitTypeList'][$queue['unitID']]->name, 'quene_quantity' => $queue['quantity'], 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => UNIT_BUILDER, 'quene_event_id' => $queue['event_unitID']));
    }
    /****************************************************************************************************
    *
    * Übergeben ans Template
    *
    ****************************************************************************************************/
    $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'units' => $units, 'units_unqualified' => $unitsUnqualified, 'max_build_units' => MAX_SIMULTAN_BUILDED_UNITS));
}
Example #10
0
function science_getScienceDetail($caveID, &$details)
{
    global $template;
    // open template
    $template->setFile('scienceBuilder.tmpl');
    // messages
    $messageText = array(0 => array('type' => 'success', 'message' => _('Der Forschungsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Forschungsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Auftrag wurde erteilt')), 4 => array('type' => 'info', 'message' => _('Dieses Wissen wird schon in einer anderen Höhle erforscht.')), 5 => array('type' => 'info', 'message' => _('Es wird gerade in einer anderen Höhle Wissen erforscht, das dieses Wissen ausschließt.')));
    // get this cave's queue
    $queue = science_getQueue($_SESSION['player']->playerID, $caveID);
    $action = Request::getVar('action', '');
    switch ($action) {
        /****************************************************************************************************
        *
        * Forschung starten
        *
        ****************************************************************************************************/
        case 'build':
            $scienceID = Request::getVar('scienceID', -1);
            if ($scienceID == -1) {
                $messageID = 2;
                break;
            }
            // check queue exist
            if (sizeof($queue)) {
                $messageID = 2;
                break;
            }
            $messageID = science_processOrder($scienceID, $caveID, $details);
            $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            $queue = science_getQueue($_SESSION['player']->playerID, $caveID);
            break;
            /****************************************************************************************************
            *
            * Forschung abbrechen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Forschung abbrechen
        *
        ****************************************************************************************************/
        case 'cancelOrder':
            $eventID = Request::getVar('id', 0);
            if ($eventID == 0) {
                $messageID = 2;
                break;
            }
            // check queue exist
            if (!sizeof($queue) || $queue['event_scienceID'] != $eventID) {
                $messageID = 2;
                break;
            }
            if (Request::isPost('cancelOrderConfirm')) {
                $messageID = science_cancelOrder($eventID, $caveID);
                if ($messageID == 0) {
                    $queue = null;
                }
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => SCIENCE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest die Forschung von <span class="bold">%s</span> abbrechen?'), $GLOBALS['scienceTypeList'][$queue['scienceID']]->name)));
            }
            break;
    }
    $sciences = $sciencesUnqualified = array();
    foreach ($GLOBALS['scienceTypeList'] as $id => $science) {
        $maxLevel = round(eval('return ' . formula_parseToPHP("{$science->maxLevel};", '$details')));
        $notenough = FALSE;
        $result = rules_checkDependencies($science, $details);
        /****************************************************************************************************
        *
        *  Forschungen die man forschen kann.
        *
        ****************************************************************************************************/
        if ($result === TRUE) {
            $sciences[$science->scienceID] = array('name' => $science->name, 'dbFieldName' => $science->dbFieldName, 'science_id' => $science->scienceID, 'modus' => SCIENCE_BUILDER, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($science->productionTimeFunction . ";", '$details')) * SCIENCE_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$science->dbFieldName], 'description' => $science->description, 'duration_formula' => formula_parseToReadable($science->productionTimeFunction));
            $sciences[$science->scienceID] = array_merge($sciences[$science->scienceID], parseCost($science, $details));
            // show the building link ?!
            if (sizeof($queue)) {
                $sciences[$science->scienceID]['no_build_msg'] = _('Erforschung im Gange');
            } else {
                if ($sciences[$science->scienceID]['notenough'] && $maxLevel > $details[$science->dbFieldName]) {
                    $sciences[$science->scienceID]['no_build_msg'] = _('Zu wenig Rohstoffe');
                } else {
                    if ($maxLevel > $details[$science->dbFieldName]) {
                        $sciences[$science->scienceID]['build_link'] = true;
                    } else {
                        $sciences[$science->scienceID]['no_build_msg'] = _('Max. Stufe');
                    }
                }
            }
            /****************************************************************************************************
            *
            * Forschungen die noch nicht geforscht werden können.
            *
            ****************************************************************************************************/
        } else {
            if ($result !== FALSE && !$science->nodocumentation) {
                $sciencesUnqualified[$science->scienceID] = array('name' => $science->name, 'dbFieldName' => $science->dbFieldName, 'science_id' => $science->scienceID, 'modus' => SCIENCE_DETAIL, 'caveID' => $caveID, 'dependencies' => $result, 'description' => $science->description, 'duration_formula' => formula_parseToReadable($science->productionTimeFunction));
            }
        }
    }
    /****************************************************************************************************
    *
    * Irgendwas im Ausbau?
    *
    ****************************************************************************************************/
    if (sizeof($queue)) {
        $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['scienceTypeList'][$queue['scienceID']]->name, 'quene_nextlevel' => $details[$GLOBALS['scienceTypeList'][$queue['scienceID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => SCIENCE_BUILDER, 'quene_event_id' => $queue['event_scienceID']));
    }
    /****************************************************************************************************
    *
    * Übergeben ans Template
    *
    ****************************************************************************************************/
    $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'science' => $sciences, 'science_unqualified' => $sciencesUnqualified));
}