mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-14 03:09:08 +00:00
9bc219ee14
About Shared Library (shared) and Module Library (module) type of cmake target INSTALL command has different behaviour for ARCHIVE LIBRARY RUNTIME depending on the platform
116 lines
No EOL
2.7 KiB
PHP
116 lines
No EOL
2.7 KiB
PHP
<?php
|
|
class CSRObjective extends AchObjective implements CSR {
|
|
#########################
|
|
# PHP 5.3 compatible
|
|
# CSRDispatcher_trait replaces this in PHP 5.4
|
|
|
|
function grantNode($path,$player) {
|
|
#echo "start: ".$path." id: ".$this->getID()."<br>";
|
|
if(is_numeric($path)) {
|
|
//it's me (id == numeric)
|
|
if($this->getID() == $path) {
|
|
$this->grant($player);
|
|
#echo "grant()<br>";
|
|
}
|
|
}
|
|
else {
|
|
//get child with the next level id and dispatch
|
|
$tmp = explode(";",$path);
|
|
|
|
$c = $this->getChildDataByID($tmp[1]);
|
|
#echo "...".$tmp[1];
|
|
if($c != null) { // check if it's really own child
|
|
unset($tmp[0]);
|
|
$c->grantNode(implode(";",$tmp),$player);
|
|
#echo "grantNode()<br>";
|
|
}
|
|
}
|
|
#echo "end<br>";
|
|
}
|
|
|
|
function denyNode($path,$player) {
|
|
if(is_numeric($path)) {
|
|
//it's me (id == numeric)
|
|
if($this->getID() == $path) {
|
|
$this->deny($player);
|
|
}
|
|
}
|
|
else {
|
|
//get child with the next level id and dispatch
|
|
$tmp = explode(";",$path);
|
|
|
|
if($tmp[0] == $this->getID()) { // it's my id!
|
|
|
|
$c = $this->getChildDataByID($tmp[1]);
|
|
if($c != null) { // check if it's really own child
|
|
unset($tmp[0]);
|
|
$c->denyNode(implode(";",$tmp),$player);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function getPath($path = "") {
|
|
if($path != "") {
|
|
$path = ";".$path;
|
|
}
|
|
|
|
$path = $this->getID().$path;
|
|
|
|
if($this->hasParent()) {
|
|
$path = $this->parent->getPath($path);
|
|
}
|
|
|
|
return $path;
|
|
}
|
|
|
|
private function hasParent() {
|
|
return ($this->parent != null);
|
|
}
|
|
#########################
|
|
|
|
function CSRObjective($data,$parent) {
|
|
parent::__construct($data,$parent);
|
|
|
|
global $DBc;
|
|
|
|
$res = $DBc->sqlQuery("SELECT atom_id FROM ach_atom WHERE atom_objective='".$this->getID()."'");
|
|
$sz = sizeof($res);
|
|
for($i=0;$i<$sz;$i++) {
|
|
$this->addChild($this->makeChild($res[$i]));
|
|
}
|
|
}
|
|
|
|
protected function makeChild($d) {
|
|
return new CSRAtom($d,$this);
|
|
}
|
|
|
|
function grant($pid) {
|
|
global $DBc;
|
|
|
|
$DBc->sqlQuery("INSERT INTO ach_player_objective (apo_objective,apo_player,apo_date) VALUES ('".$this->getID()."','".$pid."','".time()."')");
|
|
$this->done = 1;
|
|
$this->progress = $this->value;
|
|
|
|
$iter = $this->getIterator();
|
|
while($iter->hasNext()) {
|
|
$curr = $iter->getNext();
|
|
$curr->grant($pid);
|
|
}
|
|
}
|
|
|
|
function deny($pid) {
|
|
global $DBc;
|
|
|
|
$DBc->sqlQuery("DELETE FROM ach_player_objective WHERE apo_objective='".$this->getID()."' AND apo_player='".$pid."'");
|
|
$this->done = 0;
|
|
$this->progress = 0;
|
|
|
|
$iter = $this->getIterator();
|
|
while($iter->hasNext()) {
|
|
$curr = $iter->getNext();
|
|
$curr->deny($pid);
|
|
}
|
|
}
|
|
}
|
|
?>
|