fix: General 생성용 인자 수정

- General 클래스는 항상 모든걸 요구함
- 장기적으로 바람직 하지 않음
  - new General 호출이 그냥 가능해선 안 될 것
This commit is contained in:
2023-08-01 16:28:29 +00:00
parent 8aeb4883ff
commit a6ff79d148
2 changed files with 8 additions and 2 deletions
+2 -1
View File
@@ -39,7 +39,8 @@ class ProcessIncome extends \sammo\Event\Action
$nationList = $db->query('SELECT name,nation,capital,gold,level,rate_tmp,bill,type from nation'); $nationList = $db->query('SELECT name,nation,capital,gold,level,rate_tmp,bill,type from nation');
$cityListByNation = Util::arrayGroupBy($db->query('SELECT * FROM city'), 'nation'); $cityListByNation = Util::arrayGroupBy($db->query('SELECT * FROM city'), 'nation');
$generalRawListByNation = Util::arrayGroupBy($db->query('SELECT no,name,nation,gold,officer_level,dedication,city FROM general WHERE npc != 5'), 'nation'); //FIXME: factory 형태로 바꿔야함
$generalRawListByNation = Util::arrayGroupBy($db->query('SELECT %l FROM general WHERE npc != 5', Util::formatListOfBackticks(General::mergeQueryColumn()[0])), 'nation');
//국가별 처리 //국가별 처리
foreach ($nationList as $nation) { foreach ($nationList as $nation) {
+6 -1
View File
@@ -112,7 +112,12 @@ class RaiseDisaster extends \sammo\Event\Action
$logger->flush(); $logger->flush();
if (!$isGood) { if (!$isGood) {
$generalListByCity = Util::arrayGroupBy($db->query('SELECT no, name, nation, city, officer_level, injury, leadership, strength, intel, horse, weapon, book, item, crew, crewtype, atmos, train, special, special2 FROM general WHERE city IN %li', Util::squeezeFromArray($targetCityList, 'city')), 'city'); //FIXME: factory 형태로 바꿔야함
$generalListByCity = Util::arrayGroupBy($db->query(
'SELECT %l FROM general WHERE city IN %li',
Util::formatListOfBackticks(General::mergeQueryColumn()[0]),
Util::squeezeFromArray($targetCityList, 'city')),
'city');
//NOTE: 쿼리 1번이지만 복잡하기 vs 쿼리 여러번이지만 조금 더 깔끔하기 //NOTE: 쿼리 1번이지만 복잡하기 vs 쿼리 여러번이지만 조금 더 깔끔하기
foreach ($targetCityList as $city) { foreach ($targetCityList as $city) {
$affectRatio = Util::valueFit($city['secu'] / $city['secu_max'] / 0.8, 0, 1); $affectRatio = Util::valueFit($city['secu'] / $city['secu_max'] / 0.8, 0, 1);