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)); }
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))); }
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)); }
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)); }
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)); }
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' => ">= " . $level)); } } foreach ($defense->defenseSystemDepList as $key => $level) { if ($level) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->resourceDepList as $key => $level) { if ($level) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->scienceDepList as $key => $level) { if ($level) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->unitDepList as $key => $level) { if ($level) { array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->maxBuildingDepList as $key => $level) { if ($level != -1) { array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxDefenseSystemDepList as $key => $level) { if ($level != -1) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxResourceDepList as $key => $level) { if ($level != -1) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxScienceDepList as $key => $level) { if ($level != -1) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxUnitDepList as $key => $level) { if ($level != -1) { array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "<= " . $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)); }
function wonder_getWonderDetailContent($wonderID, $caveData, $method) { global $config, $template; // get wonder target text $uaWonderTargetText = WonderTarget::getWonderTargets(); // first check whether that wonder should be displayed... $wonder = $GLOBALS['wonderTypeList'][$wonderID]; if (!$wonder || $wonder->nodocumentation && rules_checkDependencies($wonder, $caveData) !== TRUE) { $wonder = current($GLOBALS['wonderTypeList']); } // open template if ($method == 'ajax') { $shortVersion = true; $template->setFile('wonderDetailAjax.tmpl'); } else { $shortVersion = false; $template->setFile('wonderDetail.tmpl'); $template->setShowRresource(false); } // iterate ressourcecosts $resourceCost = array(); foreach ($wonder->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 ($wonder->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)); } } $dependencies = array(); $buildingdep = array(); $defensesystemdep = array(); $resourcedep = array(); $sciencedep = array(); $unitdep = array(); foreach ($wonder->buildingDepList as $key => $level) { if ($level) { array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->defenseSystemDepList as $key => $level) { if ($level) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->resourceDepList as $key => $level) { if ($level) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->scienceDepList as $key => $level) { if ($level) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->unitDepList as $key => $level) { if ($level) { array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->maxBuildingDepList as $key => $level) { if ($level != -1) { array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxDefenseSystemDepList as $key => $level) { if ($level != -1) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxResourceDepList as $key => $level) { if ($level != -1) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxScienceDepList as $key => $level) { if ($level != -1) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxUnitDepList as $key => $level) { if ($level != -1) { array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "<= " . $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)); } $targetsPossible = array(); foreach ($wonder->targetsPossible as $target) { if (sizeof($target['relation']) == 0) { if ($target['target'] == 'own') { $tmpMsg[] = _('Das wundern auf den eigenen Stamm ist immer erlaubt'); } else { if ($target['target'] == 'other') { $tmpMsg[] = _('Das wundern auf einen fremden Stamm ist immer erlaubt'); } } } else { $tmpMsg = array(); foreach ($target['relation'] as $relation) { if ($relation['negate']) { switch ($relation['type']) { case 'own2other': $tmpMsg[] = sprintf(_('Dein Stamm darf die Beziehung %s gegenüber den Zielstamm nicht haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'own2any': $tmpMsg[] = sprintf(_('Dein Stamm darf die Beziehung %s gegenüber irgendeinem Stamm nicht haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'other2own': $tmpMsg[] = sprintf(_('Der Zielstamm darf die Beziehung %s gegenüber deinem Stamm nicht haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'other2any': $tmpMsg[] = sprintf(_('Der Zielstamm darf die Beziehung %s gegenüber eines anderen Stammes nicht haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'any2own': $tmpMsg[] = sprintf(_('Irgendein Stammdarf die Beziehung %s gegenüber deinem Stamm nicht haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'any2other': $tmpMsg[] = sprintf(_('Irgendein Stamm darf die Beziehung %s gegenüber dem Zielstamm nicht haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; } } else { switch ($relation['type']) { case 'own2other': $tmpMsg[] = sprintf(_('Dein Stamm muß die Beziehung %s gegenüber den Zielstamm haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'own2any': $tmpMsg[] = sprintf(_('Dein Stamm muß die Beziehung %s gegenüber irgendeinem Stamm haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'other2own': $tmpMsg[] = sprintf(_('Der Zielstamm muß die Beziehung %s gegenüber deinem Stamm haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'other2any': $tmpMsg[] = sprintf(_('Der Zielstamm muß die Beziehung %s gegenüber eines anderen Stammes haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'any2own': $tmpMsg[] = sprintf(_('Irgendein Stamm muß die Beziehung %s gegenüber deinem Stamm haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; case 'any2other': $tmpMsg[] = sprintf(_('Irgendein Stamm muß die Beziehung %s gegenüber dem Zielstamm haben.'), $GLOBALS['relationList'][$relation['relationID']]['name']); break; } } } } $targetsPossible[] = array('type' => $target['target'], 'msg' => $tmpMsg); } $template->addVars(array('name' => $wonder->name, 'wonder_id' => $wonder->wonderID, 'chance' => eval('return ' . formula_parseToPHP($wonder->chance . ';', '$caveData')), 'offensiveness' => $wonder->offensiveness, 'target' => $uaWonderTargetText[$wonder->target], 'description' => $wonder->description, 'resource_cost' => $resourceCost, 'unit_cost' => $unitcost, 'dependencies' => $dependencies, 'tribe_wonder' => $wonder->isTribeWonder, 'targets_possible' => $targetsPossible, 'delay' => $wonder->secondsBetween ? date("H:i:s", $wonder->secondsBetween) : '')); }
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)); }
function wonder_getWonderContent($caveID, &$details) { global $template; // open template $template->setFile('wonder.tmpl'); // messages $messageText = array(-3 => array('type' => 'error', 'message' => _('Die angegebene Zielhöhle wurde nicht gefunden.')), -2 => array('type' => 'error', 'message' => _('Das Wunder kann nicht auf die angegbene Zielhöhle erwirkt werden.')), -1 => array('type' => 'error', 'message' => _('Es ist ein Fehler bei der Verarbeitung Ihrer Anfrage aufgetreten. Bitte wenden Sie sich an die Administratoren')), 0 => array('type' => 'error', 'message' => _('Das Wunder kann nicht erwirkt werden. Es fehlen die notwendigen Voraussetzungen')), 1 => array('type' => 'success', 'message' => _('Das Erflehen des Wunders scheint Erfolg zu haben.')), 2 => array('type' => 'info', 'message' => _('Die Götter haben Ihr Flehen nicht erhört! Die eingesetzten Opfergaben sind natürlich dennoch verloren. Mehr Glück beim nächsten Mal!'))); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * "wundern" xD * ****************************************************************************************************/ case 'wonder': $wonderID = Request::getVar('wonderID', -1); $caveName = Request::getVar('CaveName', ''); $xCoord = Request::getVar('xCoord', 0); $yCoord = Request::getVar('yCoord', 0); if ($wonderID != -1) { if (!empty($caveName)) { $caveData = getCaveByName($caveName); $xCoord = $caveData['xCoord']; $yCoord = $caveData['yCoord']; } else { if ($xCoord == 0 && $yCoord == 0) { $messageID = -3; break; } } } else { $messageID = -1; break; } $messageID = wonder_processOrder($_SESSION['player']->playerID, $wonderID, $caveID, $xCoord, $yCoord, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); if ($messageID == 1 || $messageID == 2) { wonder_addStatistic($wonderID, $messageID); } break; } // Show the wonder table $wonders = $wondersUnqualified = array(); foreach ($GLOBALS['wonderTypeList'] as $id => $wonder) { // exclude tribeWonders if ($wonder->isTribeWonder) { continue; } $result = rules_checkDependencies($wonder, $details); /**************************************************************************************************** * * Wunder die gebetet werden können. * ****************************************************************************************************/ if ($result === TRUE && !$wonder->nodocumentation) { $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID] = array('dbFieldName' => $wonder->wonderID, 'name' => $wonder->name, 'wonder_id' => $wonder->wonderID, 'wonderCategory' => $wonder->wonderCategory, 'description' => $wonder->description, 'same' => $wonder->target == 'same' ? true : false); $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID] = array_merge($wonders[$wonder->wonderCategory]['items'][$wonder->wonderID], parseCost($wonder, $details)); // show the building link ?! if ($wonders[$wonder->wonderCategory]['items'][$wonder->wonderID]['notenough']) { $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID]['build_link'] = true; } /**************************************************************************************************** * * Wunder die nicht gewundert werden können. * ****************************************************************************************************/ } else { if ($result !== FALSE && !$wonder->nodocumentation) { $wondersUnqualified[$wonder->wonderCategory]['items'][$wonder->wonderID] = array('name' => $wonder->name, 'wonder_id' => $wonder->wonderID, 'wonderCategory' => $wonder->wonderCategory, 'description' => $wonder->description, 'dependencies' => $result); } } } /**************************************************************************************************** * * Namen zu den Kategorien hinzufügen & sortieren * ****************************************************************************************************/ $tmpWonders = $tmpWondersUnqualified = array(); foreach ($GLOBALS['wonderCategoryTypeList'] as $wonderCategory) { if (isset($wonders[$wonderCategory->id])) { $tmpWonders[$wonderCategory->sortID] = array('name' => $wonderCategory->name, 'items' => $wonders[$wonderCategory->id]['items']); unset($wonders[$wonderCategory->id]); } if (isset($wondersUnqualified[$wonderCategory->id])) { $tmpWondersUnqualified[$wonderCategory->sortID] = array('name' => $wonderCategory->name, 'items' => $wondersUnqualified[$wonderCategory->id]['items']); unset($wondersUnqualified[$wonderCategory->id]); } } $wonders = $tmpWonders; $wondersUnqualified = $tmpWondersUnqualified; unset($tmpWonders, $tmpWondersUnqualified); ksort($wonders); ksort($wondersUnqualified); /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'wonders' => $wonders, 'wonders_unqualified' => $wondersUnqualified)); }
function unit_getUnitDetail($caveID, &$details) { global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $config, $params, $db, $MAX_RESOURCE; // messages $messageText = array(0 => "Der Arbeitsauftrag wurde erfolgreich gestoppt.", 1 => "Es konnte kein Arbeitsauftrag gestoppt werden.", 2 => "Der Auftrag konnte nicht erteilt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 3 => "Der Auftrag wurde erteilt", 4 => "Bitte korrekte Anzahl der Einheiten Angeben (1 ... " . MAX_SIMULTAN_BUILDED_UNITS . ")"); // proccess a cancel-order request if (isset($params->POST->eventID)) { $messageID = unit_processOrderCancel($params->POST->eventID, $caveID, $db); } // proccess a new order request if (isset($params->POST->unitID)) { $messageID = unit_processOrder($params->POST->unitID, intval($params->POST->quantity), $caveID, $db, $details); $r = getCaveSecure($caveID, $params->SESSION->user['playerID']); if ($r->isEmpty()) { page_dberror(); } $details = $r->nextRow(); } $queue = unit_getUnitQueueForCave($params->SESSION->user['playerID'], $caveID); $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/unitbuild.ihtml"); // Show a special message if (isset($messageID)) { tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]); } // Show the unit table for ($i = 0; $i < sizeof($unitTypeList); $i++) { $notenough = FALSE; $unit = $unitTypeList[$i]; // the current unit $result = rules_checkDependencies($unit, $details); if ($result === TRUE) { tmpl_iterate($template, '/UNIT'); tmpl_set($template, "UNIT/alternate", $count++ % 2 ? "alternate" : ""); tmpl_set($template, 'UNIT', array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unitID' => $i, 'modus' => UNIT_PROPERTIES, 'caveID' => $caveID, 'size' => "0" + $details[$unit->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR))); // iterate ressourcecosts foreach ($unit->resourceProductionCost as $resourceID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "UNIT/RESSOURCECOST"); if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) { tmpl_set($template, "UNIT/RESSOURCECOST/ENOUGH/value", $cost); } else { tmpl_set($template, "UNIT/RESSOURCECOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "UNIT/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName); tmpl_set($template, "UNIT/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name); } } // iterate unitcosts foreach ($unit->unitProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "UNIT/UNITCOST"); if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) { tmpl_set($template, "UNIT/UNITCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "UNIT/UNITCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "UNIT/UNITCOST/name", $unitTypeList[$unitID]->name); } } // iterate buildingcosts foreach ($unit->buildingProductionCost as $buildingID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST"); if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name); } } // iterate externalcosts foreach ($unit->externalProductionCost as $externalID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST"); if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name); } } // show the improvement link ?! if ($queue) { tmpl_set($template, "UNIT/UNIT_LINK_NO/message", "Ausbildung im Gange"); } else { if ($notenough) { tmpl_set($template, "UNIT/UNIT_LINK_NO/message", ""); } else { $formParams = array(array('name' => 'modus', 'value' => UNIT_BUILDER), array('name' => 'caveID', 'value' => $caveID), array('name' => 'unitID', 'value' => $unit->unitID)); tmpl_set($template, "UNIT/UNIT_LINK/PARAMS", $formParams); } } } else { if ($params->SESSION->user['show_unqualified'] && $result !== FALSE && !$unit->nodocumentation) { tmpl_iterate($template, '/UNQUALIFIEDUNITS/UNIT'); tmpl_set($template, '/UNQUALIFIEDUNITS/UNIT', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => UNIT_PROPERTIES, 'unitID' => $i, 'caveID' => $caveID, 'dbFieldName' => $unit->dbFieldName, 'name' => $unit->name, 'dependencies' => $result)); } } } // Show the building queue if ($queue) { // display the unit building queue $row = $queue->nextRow(); tmpl_set($template, 'UNIT_QUEUE', array('name' => $unitTypeList[$row[unitID]]->name, 'quantity' => $row['quantity'], 'finish' => date("d.m.Y H:i:s", time_timestampToTime($row[event_end])), 'action' => UNIT_BUILDER, 'eventID' => $row['event_unitID'], 'caveID' => $caveID)); } return tmpl_parse($template); }
function wonder_getWonderContent($playerID, $caveID, &$details) { global $buildingTypeList, $resourceTypeList, $wonderTypeList, $unitTypeList, $config, $params, $db; // messages $messageText = array(-4 => "Die Zielsiedlung steht unter Schutz. Der Zauber kann nicht erwirkt werden.", -3 => "Die angegebene Zielsiedlung wurde nicht gefunden.", -2 => "Der Zauber kann nicht auf die angegbene Zielsiedlung erwirkt " . "werden.", -1 => "Es ist ein Fehler bei der Verarbeitung Ihrer Anfrage aufgetreten. " . "Bitte wenden Sie sich an die Administratoren.", 0 => "Der Zauber kann nicht erwirkt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 1 => "Das Erwirken des Zaubers scheint Erfolg zu haben.", 2 => "Die Götter haben Ihr Flehen nicht erhört! Die " . "eingesetzten Opfergaben sind natürlich dennoch verloren. " . "Mehr Glück beim nächsten Mal!"); // ADDED by chris--- for cavebook ----------------------- if ($params->POST->targetCaveID != -1) { $targetCave = getCaveByID($params->POST->targetCaveID); $x = $targetCave[xCoord]; $y = $targetCave[yCoord]; } else { $x = $params->POST->xCoord; $y = $params->POST->yCoord; } // ------------------------------------------------------ // and changed $params->POST->xCoord to $x etc if (isset($params->POST->wonderID)) { $messageID = wonder_processOrder($playerID, $params->POST->wonderID, $caveID, $x, $y, $details, $db); $reload = 1; } if ($reload) { // this isn't that elegant... $r = getCaveSecure($caveID, $params->SESSION->user['playerID']); if ($r->isEmpty()) { page_dberror(); } $details = $r->nextRow(); } $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/wonder.ihtml"); // Show a special message if (isset($messageID)) { tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]); } // ADDED by chris--- for cavebook --------------------------------- // Getting entries $cavelist = cavebook_getEntries($params->SESSION->user['playerID']); // Show the cave table $cavebook = array(); for ($ix = 0; $ix < sizeof($cavelist[id]); $ix++) { $cavebook[$ix][cavebook_entry] = $cavelist[name][$ix]; $cavebook[$ix][cavebook_id] = $cavelist[id][$ix]; $cavebook[$ix][cavebook_x] = $cavelist[x][$ix]; $cavebook[$ix][cavebook_y] = $cavelist[y][$ix]; } // -------------------------------------------------------------- // Show the wonder table for ($i = 0; $i < sizeof($wonderTypeList); $i++) { $wonder = $wonderTypeList[$i]; // the current building $result = rules_checkDependencies($wonder, $details); if ($result === TRUE) { tmpl_iterate($template, 'WONDER'); tmpl_set($template, "WONDER/alternate", $count++ % 2 ? "alternate" : ""); tmpl_set($template, 'WONDER', array('name' => $wonder->name, 'wonderID' => $i, 'modus' => WONDER_DETAIL, 'caveID' => $caveID)); // iterate ressourcecosts foreach ($wonder->resourceProductionCost as $resourceID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "WONDER/RESSOURCECOST"); if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) { tmpl_set($template, "WONDER/RESSOURCECOST/ENOUGH/value", $cost); } else { tmpl_set($template, "WONDER/RESSOURCECOST/LESS/value", $cost); } tmpl_set($template, "WONDER/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName); tmpl_set($template, "WONDER/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name); } } // iterate unitcosts foreach ($wonder->unitProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "WONDER/UNITCOST"); if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) { tmpl_set($template, "WONDER/UNITCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "WONDER/UNITCOST/LESS/value", $cost); } tmpl_set($template, "WONDER/UNITCOST/name", $unitTypeList[$unitID]->name); } } // show the wonder link tmpl_set($template, 'WONDER/BUILD_LINK', array('action' => WONDER, 'wonderID' => $wonder->wonderID, 'cave_book_link' => CAVE_BOOK, 'BOOKENTRY' => $cavebook, 'caveID' => $caveID)); } else { if ($params->SESSION->user['show_unqualified'] && $result !== FALSE && !$wonder->nodocumentation) { tmpl_iterate($template, '/UNQUALIFIEDWONDERS/WONDER'); tmpl_set($template, '/UNQUALIFIEDWONDERS/WONDER', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => WONDER_DETAIL, 'wonderID' => $i, 'caveID' => $caveID, 'name' => $wonder->name, 'dependencies' => $result)); } } } return tmpl_parse($template); }
function unit_showUnitProperties($unitID, $caveData) { global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $scienceTypeList, $unitTypeList, $no_resource_flag, $config, $params; $no_resource_flag = 1; // first check whether that unit should be displayed... $unit = $unitTypeList[$unitID]; if (!$unit || $unit->nodocumentation && !$caveData[$unit->dbFieldName] && rules_checkDependencies($unit, $caveData) !== TRUE) { $unit = current($unitTypeList); } $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'unit_properties.ihtml'); $resourceCost = array(); foreach ($unit->resourceProductionCost as $key => $value) { if ($value != "" && $value != 0) { array_push($resourceCost, array('dbFieldName' => $resourceTypeList[$key]->dbFieldName, 'name' => $resourceTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->resourceProductionCost[$key] . ';', '$details'))))); } } $unitCost = array(); foreach ($unit->unitProductionCost as $key => $value) { if ($value != "" && $value != 0) { array_push($unitCost, array('dbFieldName' => $unitTypeList[$key]->dbFieldName, 'name' => $unitTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->unitProductionCost[$key] . ';', '$details'))))); } } $buildingCost = array(); foreach ($unit->buildingProductionCost as $key => $value) { if ($value != "" && $value != 0) { array_push($buildingCost, array('dbFieldName' => $buildingTypeList[$key]->dbFieldName, 'name' => $buildingTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->buildingProductionCost[$key] . ';', '$details'))))); } } $externalCost = array(); foreach ($unit->externalProductionCost as $key => $value) { if ($value != "" && $value != 0) { array_push($externalCost, array('dbFieldName' => $defenseSystemTypeList[$key]->dbFieldName, 'name' => $defenseSystemTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->externalProductionCost[$key] . ';', '$details'))))); } } $dependencies = array(); $buildingdep = array(); foreach ($unit->buildingDepList as $key => $level) { if ($level) { array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => ">= " . $level)); } } $defensesystemdep = array(); foreach ($unit->defenseSystemDepList as $key => $level) { if ($level) { array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => ">= " . $level)); } } $resourcedep = array(); foreach ($unit->resourceDepList as $key => $level) { if ($level) { array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => ">= " . $level)); } } $sciencedep = array(); foreach ($unit->scienceDepList as $key => $level) { if ($level) { array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => ">= " . $level)); } } $unitdep = array(); foreach ($unit->unitDepList as $key => $level) { if ($level) { array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($unit->maxBuildingDepList as $key => $level) { if ($level != -1) { array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($unit->maxDefenseSystemDepList as $key => $level) { if ($level != -1) { array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($unit->maxResourceDepList as $key => $level) { if ($level != -1) { array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($unit->maxScienceDepList as $key => $level) { if ($level != -1) { array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($unit->maxUnitDepList as $key => $level) { if ($level != -1) { array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => "<= " . $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)); } if ($unit->visible != 1) { tmpl_set($template, '/INVISIBLE', array('text' => _('unsichtbar'))); } tmpl_set($template, '/', array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'description' => $unit->description, 'RESSOURCECOST' => $resourceCost, 'UNITCOST' => $unitCost, 'BUILDINGCOST' => $buildingCost, 'EXTERNALCOST' => $externalCost, 'rangeAttack' => $unit->attackRange, 'arealAttack' => $unit->attackAreal, 'attackRate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defenseRate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spyValue' => $unit->spyValue, 'spyChance' => $unit->spyChance, 'spyQuality' => $unit->spyQuality, 'antiSpyChance' => $unit->antiSpyChance, 'fuelName' => $resourceTypeList[1]->dbFieldName, 'fuelFactor' => $unit->foodCost, 'wayCost' => $unit->wayCost, 'DEPGROUP' => $dependencies, 'duration' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'rules_path' => RULES_PATH)); return tmpl_parse($template); }
function unit_getUnitDetails($unitID, $caveData, $method) { global $template; global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $scienceTypeList, $unitTypeList; $details = $caveData; // first check whether that unit should be displayed... $unit = $unitTypeList[$unitID]; if (!$unit || $unit->nodocumentation && !$caveData[$unit->dbFieldName] && rules_checkDependencies($unit, $caveData) !== TRUE) { $unit = current($unitTypeList); } // open template if ($method == 'ajax') { $shortVersion = true; $template->setFile('unitDetailAjax.tmpl'); } else { $shortVersion = false; $template->setFile('unitDetail.tmpl'); $template->setShowRresource(false); } // iterate ressourcecosts $resourceCost = array(); foreach ($unit->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 ($unit->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 ($unit->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 ($unit->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)); } } $dependencies = array(); $buildingdep = array(); $defensesystemdep = array(); $resourcedep = array(); $sciencedep = array(); $unitdep = array(); foreach ($unit->buildingDepList as $key => $level) { if ($level) { array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($unit->defenseSystemDepList as $key => $level) { if ($level) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($unit->resourceDepList as $key => $level) { if ($level) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($unit->scienceDepList as $key => $level) { if ($level) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($unit->unitDepList as $key => $level) { if ($level) { array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($unit->maxBuildingDepList as $key => $level) { if ($level != -1) { array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($unit->maxDefenseSystemDepList as $key => $level) { if ($level != -1) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($unit->maxResourceDepList as $key => $level) { if ($level != -1) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($unit->maxScienceDepList as $key => $level) { if ($level != -1) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "<= " . $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)); } if ($unit->visible != 1) { $template->addVar('INVISIBLE', array('text' => _('unsichtbar'))); } $template->addVars(array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'description' => $unit->description, 'resouce_cost' => $resourceCost, 'unit_cost' => $unitCost, 'buiding_cost' => $buildingCost, 'defense_cost' => $defenseCost, 'rangeAttack' => $unit->attackRange, 'arealAttack' => $unit->attackAreal, 'attackRate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defenseRate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spyValue' => $unit->spyValue, 'spyChance' => $unit->spyChance, 'spyQuality' => $unit->spyQuality, 'antiSpyChance' => $unit->antiSpyChance, 'fuelName' => $resourceTypeList[1]->dbFieldName, 'fuelFactor' => $unit->foodCost, 'wayCost' => $unit->wayCost, 'dependencies' => $dependencies, 'duration' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'rules_path' => RULES_PATH)); }
function science_getScienceDetail($caveID, &$details) { global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $scienceTypeList, $config, $params, $db; // messages $messageText = array(0 => _('Der Forschungsauftrag wurde erfolgreich gestoppt.'), 1 => _('Es konnte kein Forschungsauftrag gestoppt werden.'), 2 => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.'), 3 => _('Der Auftrag wurde erteilt'), 4 => _('Dieses Wissen wird schon in einer anderen Höhle erforscht.'), 5 => _('Es wird gerade in einer anderen Höhle Wissen erforscht, dass dieses Wissen ausschließt.')); // proccess a cancel-order request if (isset($params->POST->eventID)) { $messageID = science_processOrderCancel($params->POST->eventID, $caveID, $db); } if (isset($params->POST->scienceID)) { $messageID = science_processOrder($params->POST->scienceID, $caveID, $params->SESSION->player->playerID, $details, $db); $r = getCaveSecure($caveID, $params->SESSION->player->playerID); if ($r->isEmpty()) { page_dberror(); } $details = $r->nextRow(); } $queue = science_getScienceQueueForCave($params->SESSION->player->playerID, $caveID); $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'science.ihtml'); // Show a special message if (isset($messageID)) { tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]); } // Show the science table for ($i = 0; $i < sizeof($scienceTypeList); $i++) { $science = $scienceTypeList[$i]; // the current science $maxLevel = round(eval('return ' . formula_parseToPHP("{$science->maxLevel};", '$details'))); $notenough = FALSE; $result = rules_checkDependencies($science, $details); if ($result === TRUE) { tmpl_iterate($template, 'SCIENCE'); tmpl_set($template, "SCIENCE/alternate", $count++ % 2 ? "alternate" : ""); tmpl_set($template, 'SCIENCE', array('dbFieldName' => $science->dbFieldName, 'name' => $science->name, 'scienceID' => $i, 'modus' => SCIENCE_DETAIL, 'caveID' => $caveID, 'size' => "0" + $details[$science->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($science->productionTimeFunction . ";", '$details')) * SCIENCE_TIME_BASE_FACTOR))); // iterate ressourcecosts foreach ($science->resourceProductionCost as $resourceID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "SCIENCE/RESSOURCECOST"); if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) { tmpl_set($template, "SCIENCE/RESSOURCECOST/ENOUGH/value", $cost); } else { tmpl_set($template, "SCIENCE/RESSOURCECOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "SCIENCE/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName); tmpl_set($template, "SCIENCE/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name); } } // iterate unitcosts foreach ($science->unitProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "SCIENCE/UNITCOST"); if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) { tmpl_set($template, "SCIENCE/UNITCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "SCIENCE/UNITCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "SCIENCE/UNITCOST/name", $unitTypeList[$unitID]->name); } } // iterate buildingcosts foreach ($science->buildingProductionCost as $buildingID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST"); if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name); } } // iterate externalcosts foreach ($science->externalProductionCost as $externalID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST"); if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name); } } // show the science link ?! if ($queue) { tmpl_set($template, 'SCIENCE/RESEARCH_LINK_NO/message', _('Erforschung im Gange')); } else { if ($notenough && $maxLevel > $details[$science->dbFieldName]) { tmpl_set($template, 'SCIENCE/RESEARCH_LINK_NO/message', _('Zu wenig Rohstoffe')); } else { if ($maxLevel > $details[$science->dbFieldName]) { tmpl_set($template, 'SCIENCE/RESEARCH_LINK', array('action' => SCIENCE, 'scienceID' => $science->scienceID, 'caveID' => $caveID)); } else { tmpl_set($template, '/SCIENCE/RESEARCH_LINK_NO/message', _('Max. Stufe')); } } } } else { if ($result !== FALSE && !$science->nodocumentation) { tmpl_iterate($template, '/UNQUALIFIEDSCIENCES/SCIENCE'); tmpl_set($template, '/UNQUALIFIEDSCIENCES/SCIENCE', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => SCIENCE_DETAIL, 'scienceID' => $science->scienceID, 'caveID' => $caveID, 'dbFieldName' => $science->dbFieldName, 'name' => $science->name, 'dependencies' => $result)); } } } // Show the science queue if ($queue) { // display the science queue $row = $queue->nextRow(); tmpl_set($template, 'SCIENCE_QUEUE', array('name' => $scienceTypeList[$row['scienceID']]->name, 'size' => $details[$scienceTypeList[$row['scienceID']]->dbFieldName] + 1, 'finish' => time_formatDatetime($row['end']), 'action' => SCIENCE, 'eventID' => $row['event_scienceID'], 'caveID' => $caveID)); } tmpl_set($template, "rules_path", RULES_PATH); return tmpl_parse($template); }
function wonder_getWonderContent($playerID, $caveID, &$details) { global $buildingTypeList, $resourceTypeList, $wonderTypeList, $unitTypeList, $config, $params, $db; // messages $messageText = array(-3 => "Die angegebene Zielhöhle wurde nicht gefunden.", -2 => "Das Wunder kann nicht auf die angegbene Zielhöhle erwirkt " . "werden.", -1 => "Es ist ein Fehler bei der Verarbeitung Ihrer Anfrage aufgetreten. " . "Bitte wenden Sie sich an die Administratoren.", 0 => "Das Wunder kann nicht erwirkt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 1 => "Das Erflehen des Wunders scheint Erfolg zu haben.", 2 => "Die Götter haben Ihr Flehen nicht erhört! Die " . "eingesetzten Opfergaben sind natürlich dennoch verloren. " . "Mehr Glück beim nächsten Mal!"); if (isset($params->POST->wonderID)) { $messageID = wonder_processOrder($playerID, $params->POST->wonderID, $caveID, $params->POST->xCoord, $params->POST->yCoord, $details, $db); $reload = 1; } if ($reload) { // this isn't that elegant... $r = getCaveSecure($caveID, $params->SESSION->player->playerID); if ($r->isEmpty()) { page_dberror(); } $details = $r->nextRow(); } $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'wonder.ihtml'); // Show a special message if (isset($messageID)) { tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]); } // Show the wonder table for ($i = 0; $i < sizeof($wonderTypeList); $i++) { $wonder = $wonderTypeList[$i]; // the current wonder $result = rules_checkDependencies($wonder, $details); if ($result === TRUE && !$wonder->nodocumentation) { tmpl_iterate($template, 'WONDER'); tmpl_set($template, "WONDER/alternate", $count++ % 2 ? "alternate" : ""); tmpl_set($template, 'WONDER', array('name' => $wonder->name, 'wonderID' => $i, 'modus' => WONDER_DETAIL, 'caveID' => $caveID)); // iterate ressourcecosts foreach ($wonder->resourceProductionCost as $resourceID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "WONDER/RESSOURCECOST"); if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) { tmpl_set($template, "WONDER/RESSOURCECOST/ENOUGH/value", $cost); } else { tmpl_set($template, "WONDER/RESSOURCECOST/LESS/value", $cost); } tmpl_set($template, "WONDER/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName); tmpl_set($template, "WONDER/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name); } } // iterate unitcosts foreach ($wonder->unitProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "WONDER/UNITCOST"); if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) { tmpl_set($template, "WONDER/UNITCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "WONDER/UNITCOST/LESS/value", $cost); } tmpl_set($template, "WONDER/UNITCOST/name", $unitTypeList[$unitID]->name); } } foreach ($wonder->buildingProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "WONDER/UNITCOST"); if ($details[$buildingTypeList[$unitID]->dbFieldName] >= $cost) { tmpl_set($template, "WONDER/UNITCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "WONDER/UNITCOST/LESS/value", $cost); } tmpl_set($template, "WONDER/UNITCOST/name", $buildingTypeList[$unitID]->name); } } // show the wonder link tmpl_set($template, 'WONDER/BUILD_LINK', array('action' => WONDER, 'wonderID' => $wonder->wonderID, 'caveID' => $caveID)); if ($wonder->target != "same") { // show input field of target cave iff wonder may be cast on another cave tmpl_iterate($template, 'WONDER/BUILD_LINK/TARGET'); } } else { if ($result !== FALSE && !$wonder->nodocumentation) { tmpl_iterate($template, '/UNQUALIFIEDWONDERS/WONDER'); tmpl_set($template, '/UNQUALIFIEDWONDERS/WONDER', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => WONDER_DETAIL, 'wonderID' => $i, 'caveID' => $caveID, 'name' => $wonder->name, 'dependencies' => $result)); } } } tmpl_set($template, "rules_path", RULES_PATH); return tmpl_parse($template); }
function wonder_getWonderDetailContent($wonderID, $caveData) { global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $scienceTypeList, $unitTypeList, $wonderTypeList, $no_resource_flag, $config, $params; // get wonder target text $uaWonderTargetText = WonderTarget::getWonderTargets(); $no_resource_flag = 1; // first check whether that wonder should be displayed... $wonder = $wonderTypeList[$wonderID]; if (!$wonder || $wonder->nodocumentation && rules_checkDependencies($wonder, $caveData) !== TRUE) { $wonder = current($wonderTypeList); } $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'wonderDetail.ihtml'); // iterate ressourcecosts $resourcecost = array(); foreach ($wonder->resourceProductionCost as $resourceID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData'))); if ($cost) { array_push($resourcecost, array('name' => $resourceTypeList[$resourceID]->name, 'dbFieldName' => $resourceTypeList[$resourceID]->dbFieldName, 'value' => $cost)); } } // iterate unitcosts $unitcost = array(); foreach ($wonder->unitProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData'))); if ($cost) { array_push($unitcost, array('name' => $unitTypeList[$unitID]->name, 'dbFieldName' => $unitTypeList[$unitID]->dbFieldName, 'value' => $cost)); } } $dependencies = array(); $buildingdep = array(); $defensesystemdep = array(); $resourcedep = array(); $sciencedep = array(); $unitdep = array(); foreach ($wonder->buildingDepList as $key => $level) { if ($level) { array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->defenseSystemDepList as $key => $level) { if ($level) { array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->resourceDepList as $key => $level) { if ($level) { array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->scienceDepList as $key => $level) { if ($level) { array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->unitDepList as $key => $level) { if ($level) { array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($wonder->maxBuildingDepList as $key => $level) { if ($level != -1) { array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxDefenseSystemDepList as $key => $level) { if ($level != -1) { array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxResourceDepList as $key => $level) { if ($level != -1) { array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxScienceDepList as $key => $level) { if ($level != -1) { array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($wonder->maxUnitDepList as $key => $level) { if ($level != -1) { array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => "<= " . $level)); } } if (sizeof($wonderdep)) { array_push($dependencies, array('name' => _('Erweiterungen'), 'DEP' => $wonderdep)); } 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)); } $target = $uaWonderTargetText[$wonder->target]; $chance = eval('return ' . formula_parseToPHP($wonder->chance . ';', '$caveData')); tmpl_set($template, '/', array('name' => $wonder->name, 'dbFieldName' => $wonder->dbFieldName, 'chance' => $chance, 'offensiveness' => $wonder->offensiveness, 'target' => $target, 'description' => $wonder->description, 'maxlevel' => $wonder->maxLevel, 'currentlevel' => $currentlevel, 'RESOURCECOST' => $resourcecost, 'UNITCOST' => $unitcost, 'DEPGROUP' => $dependencies, 'rules_path' => RULES_PATH)); return tmpl_parse($template); }
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)); }
function improvement_getImprovementDetail($caveID, &$details) { global $template; // open template $template->setFile('improvementBuilder.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 Arbeitsauftrag wurde erfolgreich erteilt.')), 5 => array('type' => 'success', 'message' => _('Das Gebäude wurde erfolgreich abgerissen.')), 6 => array('type' => 'error', 'message' => _('Das Gebäude konnte nicht abgerissen werden.')), 7 => array('type' => 'error', 'message' => _('Sie haben von der Sorte gar keine Gebäude.')), 8 => array('type' => 'error', 'message' => sprintf(_('Sie können derzeit kein Gebäude oder Verteidigungen abreißen, weil erst vor Kurzem etwas in dieser Höhle abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von %d Minuten liegen.'), TORE_DOWN_TIMEOUT)), 9 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.'))); // get this cave's queue $queue = improvement_getQueue($_SESSION['player']->playerID, $caveID); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Erweiterung bauen * ****************************************************************************************************/ case 'build': $buildingID = Request::getVar('buildingID', -1); if ($buildingID == -1) { $messageID = 2; break; } // check queue exist if (sizeof($queue)) { $messageID = 9; break; } $messageID = improvement_processOrder($buildingID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); $queue = improvement_getQueue($_SESSION['player']->playerID, $caveID); break; /**************************************************************************************************** * * Ausbau der Erweiterung abbrechen * ****************************************************************************************************/ /**************************************************************************************************** * * Ausbau der Erweiterung abbrechen * ****************************************************************************************************/ case 'cancelOrder': $eventID = Request::getVar('id', 0); if ($eventID == 0) { $messageID = 1; break; } // check queue exist if (!sizeof($queue) || $queue['event_expansionID'] != $eventID) { $messageID = 1; break; } if (Request::isPost('cancelOrderConfirm')) { $messageID = improvement_cancelOrder($eventID, $caveID); if ($messageID == 0) { $queue = null; } } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => IMPROVEMENT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['buildingTypeList'][$queue['expansionID']]->name))); } break; /**************************************************************************************************** * * Erweiterung abreißen * ****************************************************************************************************/ /**************************************************************************************************** * * Erweiterung abreißen * ****************************************************************************************************/ case 'demolishing': $improvementID = Request::getVar('id', -1); if ($improvementID == -1) { $messageID = 4; break; } if (!isset($GLOBALS['buildingTypeList'][$improvementID])) { $messageID = 4; break; } if (Request::isPost('cancelOrderConfirm')) { $messageID = improvement_Demolishing($improvementID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'demolishing', 'confirm_id' => $improvementID, 'confirm_mode' => IMPROVEMENT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du <span class="bold">%s</span> einmal abreißen?'), $GLOBALS['buildingTypeList'][$improvementID]->name))); } break; } $improvement = $improvementRelict = $improvementUnqualified = array(); foreach ($GLOBALS['buildingTypeList'] as $id => $building) { $maxLevel = round(eval('return ' . formula_parseToPHP("{$building->maxLevel};", '$details'))); $notenough = FALSE; $result = rules_checkDependencies($building, $details); /**************************************************************************************************** * * Erweiterungen die gebaut werden können. * ****************************************************************************************************/ if ($result === TRUE) { $improvement[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($building->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$building->dbFieldName], 'breakdown_link' => $details[$building->dbFieldName] > 0 ? true : false); $improvement[$building->buildingID] = array_merge($improvement[$building->buildingID], parseCost($building, $details)); // show the building link ?! if (sizeof($queue)) { $improvement[$building->buildingID]['no_build_msg'] = _('Ausbau im Gange'); } else { if ($improvement[$building->buildingID]['notenough'] && $maxLevel > $details[$building->dbFieldName]) { $improvement[$building->buildingID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { if ($maxLevel > $details[$building->dbFieldName]) { $improvement[$building->buildingID]['build_link'] = true; } else { $improvement[$building->buildingID]['no_build_msg'] = _('Max. Stufe'); } } } /**************************************************************************************************** * * Erweiterungen die zwar nicht gebaut werden können aber schon in der Höhle sind (Relikt) * ****************************************************************************************************/ } else { if ($details[$building->dbFieldName]) { $improvementRelict[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'currentlevel' => "0" + $details[$building->dbFieldName], 'dependencies' => $result !== FALSE ? $result : false); /**************************************************************************************************** * * Erweiterungen die nicht gebaut werden können. * ****************************************************************************************************/ } else { if ($result !== FALSE && !$building->nodocumentation) { $improvementUnqualified[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'dependencies' => $result); } } } } /**************************************************************************************************** * * Irgendwas im Ausbau? * ****************************************************************************************************/ if (sizeof($queue)) { $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['buildingTypeList'][$queue['expansionID']]->name, 'quene_nextlevel' => $details[$GLOBALS['buildingTypeList'][$queue['expansionID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => IMPROVEMENT_BUILDER, 'quene_event_id' => $queue['event_expansionID'])); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'improvement' => $improvement, 'improvement_unqualified' => $improvementUnqualified, 'improvement_relict' => $improvementRelict)); }
/** * */ function defense_builder($caveID, &$details) { global $template; // open template $template->setFile('defenseBuilder.tmpl'); //messages $messageText = array(0 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 1 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 2 => array('type' => 'info', 'message' => sprintf(_('Du kannst derzeit kein Gebäude oder Verteidigungen abreissen, weil erst vor Kurzem etwas in dieser Höhle abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von %d Minuten liegen.'), TORE_DOWN_TIMEOUT)), 3 => array('type' => 'error', 'message' => _('Du hast von der Sorte gar keine Gebäude')), 4 => array('type' => 'error', 'message' => _('Das Gebäude konnte nicht abgerissen werden.')), 5 => array('type' => 'success', 'message' => _('Das Gebäude wurde erfolgreich abgerissen.')), 6 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 7 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erteilt.')), 8 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.'))); // get this cave's queue $queue = defense_getQueue($_SESSION['player']->playerID, $caveID); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Verteidigungsanlage bauen * ****************************************************************************************************/ case 'build': $defenseID = Request::getVar('defenseID', -1); if ($defenseID == -1 || !isset($GLOBALS['defenseSystemTypeList'][$defenseID])) { $messageID = 6; break; } // check queue exist if (sizeof($queue)) { $messageID = 8; break; } $messageID = defense_processOrder($defenseID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); $queue = defense_getQueue($_SESSION['player']->playerID, $caveID); break; /**************************************************************************************************** * * Ausbau der Verteidigungsanlage abbrechen * ****************************************************************************************************/ /**************************************************************************************************** * * Ausbau der Verteidigungsanlage abbrechen * ****************************************************************************************************/ case 'cancelOrder': $eventID = Request::getVar('id', 0); if ($eventID == 0) { $messageID = 0; break; } // check queue exist if (!sizeof($queue) || $queue['event_defenseSystemID'] != $eventID) { $messageID = 0; break; } if (Request::isPost('postConfirm')) { $messageID = defense_cancelOrder($eventID, $caveID); if ($messageID == 1) { $queue = null; } } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => DEFENSE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->name))); } break; /**************************************************************************************************** * * Verteidigungsanlage abreißen * ****************************************************************************************************/ /**************************************************************************************************** * * Verteidigungsanlage abreißen * ****************************************************************************************************/ case 'demolishing': $defenseID = Request::getVar('id', -1); if ($defenseID == -1) { $messageID = 4; break; } if (!isset($GLOBALS['defenseSystemTypeList'][$defenseID])) { $messageID = 4; break; } if (Request::isPost('postConfirm')) { $messageID = defense_Demolishing($defenseID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'demolishing', 'confirm_id' => $defenseID, 'confirm_mode' => DEFENSE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du <span class="bold">%s</span> einmal abreißen?'), $GLOBALS['defenseSystemTypeList'][$defenseID]->name))); } break; } $defenseSystem = $defenseSystemRelict = $defenseSystemUnqualified = array(); foreach ($GLOBALS['defenseSystemTypeList'] as $id => $defense) { $maxLevel = round(eval('return ' . formula_parseToPHP("{$defense->maxLevel};", '$details'))); $result = rules_checkDependencies($defense, $details); // if all requirements are met, but the maxLevel is 0, treat it like a non-buildable if ($maxLevel <= 0 && $result === TRUE) { $result = !$details[$defense->dbFieldName] ? _('Max. Stufe: 0') : false; } /**************************************************************************************************** * * Verteidigungsanlage die gebaut werden können. * ****************************************************************************************************/ if ($result === TRUE) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($defense->productionTimeFunction . ";", '$details')) * DEFENSESYSTEM_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$defense->dbFieldName], 'antiSpyChance' => $defense->antiSpyChance, 'breakdown_link' => $details[$defense->dbFieldName] > 0 ? true : false); $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array_merge($defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID], parseCost($defense, $details)); // show the building link ?! if (sizeof($queue)) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Ausbau im Gange'); } else { if ($defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['notenough'] && $maxLevel > $details[$defense->dbFieldName]) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { if ($maxLevel > $details[$defense->dbFieldName]) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['build_link'] = true; } else { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Max. Stufe'); } } } /**************************************************************************************************** * * Verteidigungsanlage die zwar nicht gebaut werden können aber schon in der Höhle sind (Relikt) * ****************************************************************************************************/ } else { if ($details[$defense->dbFieldName]) { $defenseSystemRelict[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'currentlevel' => "0" + $details[$defense->dbFieldName], 'dependencies' => $result !== false ? $result : false); /**************************************************************************************************** * * Verteidigungsanlage die nicht gebaut werden können. * ****************************************************************************************************/ } else { if ($result !== false && !$defense->nodocumentation) { $defenseSystemUnqualified[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'dependencies' => $result, 'antiSpyChance' => $defense->antiSpyChance); } } } } /**************************************************************************************************** * * Namen zu den Kategorien hinzufügen & sortieren * ****************************************************************************************************/ $tmpDefenseSystem = $tmpDefenseSystemRelict = $tmpDefenseSystemUnqualified = array(); foreach ($GLOBALS['defenseCategoryTypeList'] as $defenseCategory) { if (isset($defenseSystem[$defenseCategory->id])) { $tmpDefenseSystem[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystem[$defenseCategory->id]['items']); unset($defenseSystem[$defenseCategory->id]); } if (isset($defenseSystemRelict[$defenseCategory->id])) { $tmpDefenseSystemRelict[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystemRelict[$defenseCategory->id]['items']); unset($defenseSystemRelict[$defenseCategory->id]); } if (isset($defenseSystemUnqualified[$defenseCategory->id])) { $tmpDefenseSystemUnqualified[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystemUnqualified[$defenseCategory->id]['items']); unset($defenseSystemUnqualified[$defenseCategory->id]); } } $defenseSystem = $tmpDefenseSystem; $defenseSystemRelict = $tmpDefenseSystemRelict; $defenseSystemUnqualified = $tmpDefenseSystemUnqualified; unset($tmpDefenseSystem, $tmpDefenseSystemRelict, $tmpDefenseSystemUnqualified); ksort($defenseSystem); ksort($defenseSystemRelict); ksort($defenseSystemUnqualified); /**************************************************************************************************** * * Irgendwas im Ausbau? * ****************************************************************************************************/ if (sizeof($queue)) { $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->name, 'quene_nextlevel' => $details[$GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => DEFENSE_BUILDER, 'quene_event_id' => $queue['event_defenseSystemID'])); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'defense_system' => $defenseSystem, 'defense_system_unqualified' => $defenseSystemUnqualified, 'defense_system_relict' => $defenseSystemRelict)); }
function improvement_getImprovementDetail($caveID, &$details) { global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $config, $params, $db; // messages $messageText = array(0 => "Der Arbeitsauftrag wurde erfolgreich gestoppt.", 1 => "Es konnte kein Arbeitsauftrag gestoppt werden.", 2 => "Der Auftrag konnte nicht erteilt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 3 => "Der Auftrag wurde erteilt", 5 => "Das Gebäude wurde erfolgreich abgerissen", 6 => "Das Gebäude konnte nicht abgerissen werden", 7 => "Sie haben von der Sorte gar keine Gebäude", 8 => "Sie können derzeit kein Gebäude abreissen, weil erst vor Kurzem etwas in dieser Siedlung abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von " . TORE_DOWN_TIMEOUT . " Minuten liegen."); // proccess a cancel-order request if (isset($params->POST->eventID)) { $messageID = improvement_processOrderCancel($params->POST->eventID, $caveID, $db); } // proccess a tore down or new order request if (isset($params->POST->breakDownConfirm)) { $messageID = improvement_breakDown($params->POST->buildingID, $caveID, $details, $db); $reload = 1; } else { if (isset($params->POST->buildingID)) { $messageID = improvement_processOrder($params->POST->buildingID, $caveID, $details, $db); $reload = 1; } } if ($reload) { // this isn't that elegant... $r = getCaveSecure($caveID, $params->SESSION->user['playerID']); if ($r->isEmpty()) { page_dberror(); } $details = $r->nextRow(); } $queue = improvement_getImprovementQueueForCave($params->SESSION->user['playerID'], $caveID); $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/improvement.ihtml"); // Show a special message if (isset($messageID)) { tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]); } // Show the improvement table for ($i = 0; $i < sizeof($buildingTypeList); $i++) { $notenough = FALSE; $building = $buildingTypeList[$i]; // the current building $maxLevel = round(eval('return ' . formula_parseToPHP("{$building->maxLevel};", '$details'))); $result = rules_checkDependencies($building, $details); if ($result === TRUE) { tmpl_iterate($template, 'IMPROVEMENT'); tmpl_set($template, "IMPROVEMENT/alternate", $count++ % 2 ? "alternate" : ""); tmpl_set($template, 'IMPROVEMENT', array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'buildingID' => $i, 'modus' => IMPROVEMENT_BUILDING_DETAIL, 'caveID' => $caveID, 'maxlevel' => $maxLevel, 'size' => "0" + $details[$building->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($building->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR))); // iterate ressourcecosts foreach ($building->resourceProductionCost as $resourceID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "IMPROVEMENT/RESSOURCECOST"); if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) { tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/ENOUGH/value", $cost); } else { tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName); tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name); } } // iterate unitcosts foreach ($building->unitProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "IMPROVEMENT/UNITCOST"); if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) { tmpl_set($template, "IMPROVEMENT/UNITCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "IMPROVEMENT/UNITCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "IMPROVEMENT/UNITCOST/name", $unitTypeList[$unitID]->name); } } // iterate buildingcosts /* foreach ($building->buildingProductionCost as $buildingID => $function){ $cost = ceil(eval('return '. formula_parseToPHP($function . ';', '$details'))); if ($cost){ tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST"); if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost){ tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name); } } */ // iterate buildingcosts foreach ($building->buildingProductionCost as $buildingID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "IMPROVEMENT/BUILDINGCOST"); if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) { tmpl_set($template, "IMPROVEMENT/BUILDINGCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "IMPROVEMENT/BUILDINGCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "IMPROVEMENT/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name); } } // iterate externalcosts foreach ($building->externalProductionCost as $externalID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST"); if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name); } } // show the break down link tmpl_set($template, 'IMPROVEMENT/BREAK_DOWN_LINK', array('action' => IMPROVEMENT_BREAK_DOWN, 'buildingID' => $building->buildingID, 'caveID' => $caveID)); // show the building link ?! if ($queue) { tmpl_set($template, 'IMPROVEMENT/BUILD_LINK_NO/message', "Ausbau im Gange"); } else { if ($notenough && $maxLevel > $details[$building->dbFieldName]) { tmpl_set($template, 'IMPROVEMENT/BUILD_LINK_NO/message', ""); } else { if ($maxLevel > $details[$building->dbFieldName]) { tmpl_set($template, 'IMPROVEMENT/BUILD_LINK', array('action' => IMPROVEMENT_DETAIL, 'buildingID' => $building->buildingID, 'caveID' => $caveID)); } else { tmpl_set($template, '/IMPROVEMENT/BUILD_LINK_NO/message', "Max. Stufe"); } } } } else { if ($details[$building->dbFieldName]) { tmpl_iterate($template, '/UNWANTEDIMPROVEMENTS/IMPROVEMENT'); tmpl_set($template, '/UNWANTEDIMPROVEMENTS/IMPROVEMENT', array('alternate' => $count_unwanted++ % 2 ? "" : "alternate", 'modus' => IMPROVEMENT_BUILDING_DETAIL, 'buildingID' => $i, 'caveID' => $caveID, 'size' => $details[$building->dbFieldName], 'dbFieldName' => $building->dbFieldName, 'name' => $building->name, 'action' => IMPROVEMENT_BREAK_DOWN)); if ($result !== FALSE) { tmpl_set($template, '/UNWANTEDIMPROVEMENTS/IMPROVEMENT/dependencies', $result); } } else { if ($params->SESSION->user['show_unqualified'] && $result !== FALSE && !$building->nodocumentation) { tmpl_iterate($template, '/UNQUALIFIEDIMPROVEMENTS/IMPROVEMENT'); tmpl_set($template, '/UNQUALIFIEDIMPROVEMENTS/IMPROVEMENT', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => IMPROVEMENT_BUILDING_DETAIL, 'buildingID' => $i, 'caveID' => $caveID, 'dbFieldName' => $building->dbFieldName, 'name' => $building->name, 'dependencies' => $result)); } } } } // Show the building queue if ($queue) { // display the building queue $row = $queue->nextRow(); tmpl_set($template, 'IMPROVEMENT_QUEUE', array('name' => $buildingTypeList[$row['expansionID']]->name, 'size' => $details[$buildingTypeList[$row['expansionID']]->dbFieldName] + 1, 'finish' => date("d.m.Y H:i:s", time_timestampToTime($row['event_end'])), 'action' => IMPROVEMENT_DETAIL, 'eventID' => $row['event_expansionID'], 'caveID' => $caveID)); } return tmpl_parse($template); }
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' => ">= " . $level)); } } foreach ($building->defenseSystemDepList as $key => $level) { if ($level) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($building->resourceDepList as $key => $level) { if ($level) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($building->scienceDepList as $key => $level) { if ($level) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($building->unitDepList as $key => $level) { if ($level) { array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => ">= " . $level)); } } foreach ($building->maxBuildingDepList as $key => $level) { if ($level != -1) { array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($building->maxDefenseSystemDepList as $key => $level) { if ($level != -1) { array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($building->maxResourceDepList as $key => $level) { if ($level != -1) { array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($building->maxScienceDepList as $key => $level) { if ($level != -1) { array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "<= " . $level)); } } foreach ($building->maxUnitDepList as $key => $level) { if ($level != -1) { array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "<= " . $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)); }
/** * */ function externals_showProperties($cave) { global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $scienceTypeList, $unitTypeList, $config, $params; $externalID = intval($params->POST->externalID); // first check whether that defense should be displayed... $defense = $defenseSystemTypeList[$externalID]; $maxLevel = round(eval('return ' . formula_parseToPHP("{$defense->maxLevel};", '$cave'))); if (!$defense || $defense->nodocumentation && !$cave[$defense->dbFieldName] && rules_checkDependencies($defense, $cave) !== TRUE) { $defense = current($defenseSystemTypeList); } $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'externalProperties.ihtml'); $currentlevel = $cave[$defense->dbFieldName]; $levels = array(); for ($level = $cave[$defense->dbFieldName], $count = 0; $level < $maxLevel && $count < 6; ++$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' => $resourceTypeList[$resourceID]->name, 'dbFieldName' => $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' => $unitTypeList[$unitID]->name, 'dbFieldName' => $unitTypeList[$unitID]->dbFieldName, 'value' => $cost)); } } $buildingCost = array(); foreach ($defense->buildingProductionCost as $key => $value) { if ($value != "" && $value != 0) { array_push($buildingCost, array('dbFieldName' => $buildingTypeList[$key]->dbFieldName, 'name' => $buildingTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($defense->buildingProductionCost[$key] . ';', '$details'))))); } } $externalCost = array(); foreach ($defense->externalProductionCost as $key => $value) { if ($value != "" && $value != 0) { array_push($externalCost, array('dbFieldName' => $defenseSystemTypeList[$key]->dbFieldName, 'name' => $defenseSystemTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($defense->externalProductionCost[$key] . ';', '$details'))))); } } $levels[$count] = array('level' => $level + 1, 'time' => $duration, 'BUILDINGCOST' => $buildingCost, 'EXTERNALCOST' => $externalCost, 'RESOURCECOST' => $resourcecost, 'UNITCOST' => $unitcost); } if (sizeof($levels)) { $levels = array('population' => $cave['resource_population'], 'LEVEL' => $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' => $buildingTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->defenseSystemDepList as $key => $level) { if ($level) { array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->resourceDepList as $key => $level) { if ($level) { array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->scienceDepList as $key => $level) { if ($level) { array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->unitDepList as $key => $level) { if ($level) { array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => ">= " . $level)); } } foreach ($defense->maxBuildingDepList as $key => $level) { if ($level != -1) { array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxDefenseSystemDepList as $key => $level) { if ($level != -1) { array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxResourceDepList as $key => $level) { if ($level != -1) { array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxScienceDepList as $key => $level) { if ($level != -1) { array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => "<= " . $level)); } } foreach ($defense->maxUnitDepList as $key => $level) { if ($level != -1) { array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => "<= " . $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)); } tmpl_set($template, '/', array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'description' => $defense->description, 'maxlevel' => $maxLevel, 'currentlevel' => $currentlevel, 'rangeAttack' => $defense->attackRange, 'arealAttack' => $defense->attackAreal, 'attackRate' => $defense->attackRate, 'defenseRate' => $defense->defenseRate, 'size' => $defense->hitPoints, 'antiSpyChance' => $defense->antiSpyChance, 'LEVELS' => $levels, 'DEPGROUP' => $dependencies, 'rules_path' => RULES_PATH)); return tmpl_parse($template); }
function defenseSystem_getDefenseSystemDetail($caveID, &$details) { global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $config, $params, $db; // messages $messageText = array(0 => "Der Arbeitsauftrag wurde erfolgreich gestoppt.", 1 => "Es konnte kein Arbeitsauftrag gestoppt werden.", 2 => "Der Auftrag konnte nicht erteilt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 3 => "Der Auftrag wurde erteilt", 5 => "Das Gebäude wurde erfolgreich abgerissen", 6 => "Das Gebäude konnte nicht abgerissen werden", 7 => "Sie haben von der Sorte gar keine Gebäude"); // proccess a cancel-order request if (isset($params->POST->eventID)) { $messageID = defenseSystem_processOrderCancel($params->POST->eventID, $caveID, $db); } // proccess a tore down or new order request if (isset($params->POST->breakDownConfirm)) { $messageID = defenseSystem_breakDown($params->POST->defenseSystemID, $caveID, $details, $db); $reload = 1; } else { if (isset($params->POST->defenseSystemID)) { check_timestamp($params->POST->tstamp); $messageID = defenseSystem_processOrder($params->POST->defenseSystemID, $caveID, $details, $db); $reload = 1; } } if ($reload) { // this isn't that elegant... $r = getCaveSecure($caveID, $params->SESSION->user['playerID']); if ($r->isEmpty()) { page_dberror(); } $details = $r->nextRow(); } $queue = defenseSystem_getDefenseSystemQueueForCave($params->SESSION->user['playerID'], $caveID); $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/fortification.ihtml"); // Show a special message if (isset($messageID)) { tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]); } // Show the defenseSystem table for ($i = 0; $i < sizeof($defenseSystemTypeList); $i++) { $notenough = FALSE; $defenseSystem = $defenseSystemTypeList[$i]; // the current building $maxLevel = round(eval('return ' . formula_parseToPHP("{$defenseSystem->maxLevel};", '$details'))); $result = rules_checkDependencies($defenseSystem, $details); // if all requirements are met but the maxLevel is 0, // treat it like a non-buildable if ($maxLevel <= 0 && $result === TRUE) { $result = $details[$defenseSystem->dbFieldName] ? 'Max. Stufe: 0' : FALSE; } if ($result === TRUE) { tmpl_iterate($template, 'DEFENSESYSTEM'); tmpl_set($template, "DEFENSESYSTEM/alternate", $count++ % 2 ? "alternate" : ""); tmpl_set($template, 'DEFENSESYSTEM', array('name' => $defenseSystem->name, 'dbFieldName' => $defenseSystem->dbFieldName, 'defenseSystemID' => $i, 'modus' => DEFENSESYSTEM_DETAIL, 'caveID' => $caveID, 'maxlevel' => $maxLevel, 'size' => "0" + $details[$defenseSystem->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($defenseSystem->productionTimeFunction . ";", '$details')) * DEFENSESYSTEM_TIME_BASE_FACTOR))); // iterate ressourcecosts foreach ($defenseSystem->resourceProductionCost as $resourceID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/RESSOURCECOST"); if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName); tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name); } } // iterate unitcosts foreach ($defenseSystem->unitProductionCost as $unitID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/UNITCOST"); if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/UNITCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/UNITCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/UNITCOST/name", $unitTypeList[$unitID]->name); } } // iterate buildingcosts foreach ($defenseSystem->buildingProductionCost as $buildingID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST"); if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name); } } // iterate externalcosts foreach ($defenseSystem->externalProductionCost as $externalID => $function) { $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details'))); if ($cost) { tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST"); if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost); } else { tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost); $notenough = TRUE; } tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name); } } // show the break down link if ($details[$defenseSystem->dbFieldName]) { tmpl_set($template, 'DEFENSESYSTEM/BREAK_DOWN_LINK', array('action' => DEFENSESYSTEM_BREAK_DOWN, 'defenseSystemID' => $defenseSystem->defenseSystemID, 'caveID' => $caveID)); } // show the improvement link ?! if ($queue) { tmpl_set($template, 'DEFENSESYSTEM/BUILD_LINK_NO/message', "Ausbau im Gange"); } else { if ($notenough && $maxLevel > $details[$defenseSystem->dbFieldName]) { tmpl_set($template, 'DEFENSESYSTEM/BUILD_LINK_NO/message', ""); } else { if ($maxLevel > $details[$defenseSystem->dbFieldName]) { tmpl_set($template, 'DEFENSESYSTEM/BUILD_LINK', array('action' => DEFENSESYSTEM, 'defenseSystemID' => $defenseSystem->defenseSystemID, 'caveID' => $caveID, 'tstamp' => "" . time())); } else { tmpl_set($template, '/DEFENSESYSTEM/BUILD_LINK_NO/message', "Max. Stufe"); } } } } else { if ($details[$defenseSystem->dbFieldName]) { tmpl_iterate($template, '/UNWANTEDDEFENSESYSTEMS/DEFENSESYSTEM'); tmpl_set($template, '/UNWANTEDDEFENSESYSTEMS/DEFENSESYSTEM', array('alternate' => $count_unwanted++ % 2 ? "" : "alternate", 'modus' => DEFENSESYSTEM_DETAIL, 'defenseSystemID' => $i, 'size' => $details[$defenseSystem->dbFieldName], 'dbFieldName' => $defenseSystem->dbFieldName, 'name' => $defenseSystem->name, 'action' => DEFENSESYSTEM_BREAK_DOWN)); if ($result !== FALSE) { tmpl_set($template, '/UNWANTEDDEFENSESYSTEMS/DEFENSESYSTEM/dependencies', $result); } } else { if ($params->SESSION->user['show_unqualified'] && $result !== FALSE && !$defenseSystem->nodocumentation) { tmpl_iterate($template, '/UNQUALIFIEDDEFENSESYSTEMS/DEFENSESYSTEM'); tmpl_set($template, '/UNQUALIFIEDDEFENSESYSTEMS/DEFENSESYSTEM', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => DEFENSESYSTEM_DETAIL, 'defenseSystemID' => $i, 'name' => $defenseSystem->name, 'dbFieldName' => $defenseSystem->dbFieldName, 'dependencies' => $result)); } } } } // Show the building queue if ($queue) { $row = $queue->nextRow(); tmpl_set($template, 'DEFENSESYSTEM_QUEUE', array('name' => $defenseSystemTypeList[$row['defenseSystemID']]->name, 'size' => $details[$defenseSystemTypeList[$row['defenseSystemID']]->dbFieldName] + 1, 'finish' => date("d.m.Y H:i:s", time_timestampToTime($row['event_end'])), 'action' => DEFENSESYSTEM, 'eventID' => $row['event_defenseSystemID'], 'caveID' => $caveID)); } return tmpl_parse($template); }