우선 순위를 오름차순으로 변경

This commit is contained in:
2018-10-02 00:11:27 +09:00
parent 34fd000df9
commit 5565ec2ddb
2 changed files with 13 additions and 19 deletions
+5 -5
View File
@@ -2,12 +2,12 @@
namespace sammo;
abstract class ObjectTrigger{
const PRIORITY_MAX = 99999;
const PRIORITY_BEGIN = 50000;
const PRIORITY_PRE = 40000;
const PRIORITY_MIN = 0;
const PRIORITY_BEGIN = 10000;
const PRIORITY_PRE = 20000;
const PRIORITY_BODY = 30000;
const PRIORITY_POST = 20000;
const PRIORITY_FINAL = 10000;
const PRIORITY_POST = 40000;
const PRIORITY_FINAL = 50000;
static protected $priority;
protected $object = null;
+8 -14
View File
@@ -3,7 +3,6 @@ namespace sammo;
abstract class TriggerCaller{
protected $triggerListByPriority = [];
protected $sorted = false;
abstract function checkValidTrigger(ObjectTrigger $trigger):bool;
@@ -18,7 +17,7 @@ abstract class TriggerCaller{
}
$sorted = true;
$minPriority = ObjectTrigger::PRIORITY_MAX;
$maxPriority = ObjectTrigger::PRIORITY_MIN;
foreach($triggerList as $trigger){
if(!checkValidTrigger($trigger)){
@@ -29,10 +28,10 @@ abstract class TriggerCaller{
$uniqueID = $trigger->getUniqueID();
if($sorted){
if($minPriority > $priority){
$minPriority = $priority;
if($maxPriority < $priority){
$maxPriority = $priority;
}
else if($minPriority < $priority){
else if($maxPriority > $priority){
$sorted = false;
}
}
@@ -46,7 +45,7 @@ abstract class TriggerCaller{
}
if(!$sorted){
krsort($this->triggerListByPriority);
ksort($this->triggerListByPriority);
}
}
@@ -64,7 +63,7 @@ abstract class TriggerCaller{
}
$lastKey = Util::array_last_key($this->triggerListByPriority);
if($lastKey > $priority){
if($lastKey < $priority){
$this->triggerListByPriority[$priority] = [$uniqueID=>$trigger];
return;
}
@@ -74,7 +73,7 @@ abstract class TriggerCaller{
}
$this->triggerListByPriority[$priority] = [$uniqueID=>$trigger];
krsort($this->triggerListByPriority);
ksort($this->triggerListByPriority);
}
function merge(?TriggerCaller $other){
@@ -87,7 +86,7 @@ abstract class TriggerCaller{
$iterRhs = new \ArrayIterator($other->triggerListByPriority);
while($iterLhs->valid() && $iterRhs->valid()){
if($iterLhs->key() > $iterRhs->key()){
if($iterLhs->key() < $iterRhs->key()){
$newTriggerList[$iterLhs->key()] = $iterLhs->current();
$iterLhs->next();
continue;
@@ -116,11 +115,6 @@ abstract class TriggerCaller{
}
function fire(?array $env = null, $arg = null):?array{
if(!$this->sorted){
krsort($this->triggerListByPriority);
$this->sorted = true;
}
foreach($this->triggerListByPriority as $subTriggerList){
/** @var ObjectTrigger[] $subTriggerList */
foreach($subTriggerList as $trigger){