checkSupply를 검출하기 쉬도록 변경
This commit is contained in:
+26
-32
@@ -176,48 +176,47 @@ function SetNationFront($nationNo) {
|
|||||||
|
|
||||||
function checkSupply() {
|
function checkSupply() {
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$connect=$db->get();
|
|
||||||
|
|
||||||
$cities = [];
|
$cities = [];
|
||||||
foreach($db->query('SELECT city, nation FROM city WHERE nation != 0') as $city){
|
foreach($db->query('SELECT city, nation FROM city WHERE nation != 0') as $city){
|
||||||
$cities[$city['city']] = [
|
$newCity = new \stdClass();
|
||||||
'id'=>$city['city'],
|
$newCity->id = Util::toInt($city['city']);
|
||||||
'nation'=>$city['nation'],
|
$newCity->nation = Util::toInt($city['nation']);
|
||||||
'supply'=>false
|
$newCity->supply = false;
|
||||||
];
|
|
||||||
|
$cities[$newCity->id] = $newCity;
|
||||||
}
|
}
|
||||||
|
|
||||||
$queue = new \SplQueue();
|
$queue = new \SplQueue();
|
||||||
foreach($db->query('SELECT capital, nation FROM nation WHERE `level` > 0') as $nation){
|
foreach($db->queryAllLists('SELECT capital, nation FROM nation WHERE `level` > 0') as list($capitalID, $nationID)){
|
||||||
$capitalID = $nation['capital'];
|
if(!key_exists($capitalID, $cities)){
|
||||||
if(!$capitalID){
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$city = &$cities[$capitalID];
|
$city = $cities[$capitalID];
|
||||||
if($nation['nation'] != $city['nation']){
|
if($nationID != $city->nation){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$city['supply'] = true;
|
$city->supply = true;
|
||||||
$queue->enqueue($city['id']);
|
$queue->enqueue($city);
|
||||||
}
|
}
|
||||||
|
|
||||||
while(!$queue->isEmpty()){
|
while(!$queue->isEmpty()){
|
||||||
$cityID = $queue->dequeue();
|
$cityLink = $queue->dequeue();
|
||||||
$city = &$cities[$cityID];
|
$city = CityConst::byID($cityLink->id);
|
||||||
|
|
||||||
foreach(array_keys(CityConst::byID($cityID)->path) as $connCityID){
|
foreach(array_keys($city->path) as $connCityID){
|
||||||
if(!key_exists($connCityID, $cities)){
|
if(!key_exists($connCityID, $cities)){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$connCity = &$cities[$connCityID];
|
$connCity = $cities[$connCityID];
|
||||||
if($connCity['nation'] != $city['nation']){
|
if($connCity->nation != $cityLink->nation){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if($connCity['supply']){
|
if($connCity->supply){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$connCity['supply'] = true;
|
$connCity->supply = true;
|
||||||
$queue->enqueue($connCity['id']);
|
$queue->enqueue($connCity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,15 +224,15 @@ function checkSupply() {
|
|||||||
'supply'=>1
|
'supply'=>1
|
||||||
], 'nation=0');
|
], 'nation=0');
|
||||||
|
|
||||||
|
$db->update('city',[
|
||||||
|
'supply'=>0
|
||||||
|
], 'nation!=0');
|
||||||
|
|
||||||
$supply = [];
|
$supply = [];
|
||||||
$unsupply = [];
|
|
||||||
|
|
||||||
foreach($cities as $city){
|
foreach($cities as $city){
|
||||||
if($city['supply']){
|
if($city->supply){
|
||||||
$supply[] = $city['id'];
|
$supply[] = $city->id;
|
||||||
}
|
|
||||||
else{
|
|
||||||
$unsupply[] = $city['id'];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,11 +242,6 @@ function checkSupply() {
|
|||||||
], 'city IN %li', $supply);
|
], 'city IN %li', $supply);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($unsupply){
|
|
||||||
$db->update('city', [
|
|
||||||
'supply'=>0
|
|
||||||
], 'city IN %li', $unsupply);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+15
-1
@@ -239,7 +239,7 @@ class CityConst{
|
|||||||
static::$constID = $constID;
|
static::$constID = $constID;
|
||||||
static::$constName = $constName;
|
static::$constName = $constName;
|
||||||
static::$constRegion = $constRegion;
|
static::$constRegion = $constRegion;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static $buildInitCommon = [
|
private static $buildInitCommon = [
|
||||||
@@ -317,8 +317,22 @@ class CityConst{
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private static function test(){
|
||||||
|
static::_generate();
|
||||||
|
|
||||||
|
foreach(static::all() as $id=>$city){
|
||||||
|
foreach($city->path as $connId=>$connCityText){
|
||||||
|
$connCity = static::byID($connId);
|
||||||
|
if(!key_exists($id, $connCity->path)){
|
||||||
|
throw new \RuntimeException(sprintf('도시 연결이 올바르지 않음! %s <=> %s', $city->name, $connCity->name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static function build(){
|
public static function build(){
|
||||||
static::_generate();
|
static::_generate();
|
||||||
|
static::test();
|
||||||
|
|
||||||
$queries = array_map(function(CityInitialDetail $city){
|
$queries = array_map(function(CityInitialDetail $city){
|
||||||
$initValue = static::$buildInit[$city->level];
|
$initValue = static::$buildInit[$city->level];
|
||||||
|
|||||||
Reference in New Issue
Block a user