class Coords
{
var $x = 0;
var $y = 0;
}
class EntityManager
{
var $list = array();
public function Add($entity)
{
$this->list[] = $entity;
}
public function Remove()
{
}
public function GetListByArea($min, $max)
{
var $list = array();
foreach ($this->list as &$entity)
{
if($entity->coords->x > $min->x
&& $entity->coords->x < $max->x
&& $entity->coords->y > $min->y
&& $entity->coords->y < $max->y)
$list[] = $entity;
}
return &$list;
}
public function EffectArea($effects, $min, $max)
{
var $list = $this->GetListByArea($min, $max);
var $effectsSplit = explode("|", $effects);
foreach ($list as &$entity)
{
foreach ($effectsSplit as &$effect)
{
switch($effect)
{
case "flee": $entity->Flee();
break;
case "kill": $entity->Kill();
break;
case "torture": $entity->Torture();
break;
case "burn": $entity->Burn();
break;
case "explode": $entity->Explode();
break;
}
}
}
}
}
class NPCManager extends EntityManager
{
function NPCManager()
{
}
}
class MonsterManager extends EntityManager
{
function MonsterManager()
{
}
//specific stuff
}
class PlayerManager extends EntityManager
{
function PlayerManager()
{
}
public function SendAnnouncement()
{
foreach($list as &$player)
$player->ShowAnnouncement("Hello World, this is your GM.");
}
//specific stuff
}
class Entity
{
var $coords = new Coords();
var $level;
var $health;
var $mana;
var $stamina;
var $dexterity;
var $strength;
public function UpdateCoords($x, $y)
{
$this->coords->x = $x;
$this->coords->y = $y;
}
public function Kill()
{
$this->health = 0;
}
}
class Player extends Entity
{
var $reputation;
var $skillPoints;
var $experience;
var $professions;
var $class;
function Player($hp, $mp, $sta, $dex, $str)
{
$this->health = $hp;
$this->mana = $mp;
$this->stamina = $sta;
$this->dexterity = $dex;
$this->strength = $str;
}
public function UseSkill($skill)
{
switch($skill)
{
case "Fireball":
//stuff here
break;
case "Holy Nova":
var $min = new Coords($this->player->x - 10, $this->player->y - 10);
var $max = new Coords($this->player->x + 10, $this->player->y + 10);
$MonsterManager->EffectArea("explode|kill", $min, $max);
break;
case "Energy Shield":
//stuff here
break;
}
}
public function ShowAnnouncement($text)
{
//send text to table or w/e
}
//specific stuff
}
class Monster extends Entity
{
var $anger;
function Monster($hp, $mp, $sta, $dex, $str)
{
$this->health = $hp;
$this->mana = $mp;
$this->stamina = $sta;
$this->dexterity = $dex;
$this->strength = $str;
}
//specific stuff
}
var $MonsterManager = new MonsterManager();
var $monster = new Monster(100, 100, 100, 10, 10);
$monster->UpdateCoords(0, 0);
echo $monster->health;
var $player = new Player(100, 100, 100, 10, 10);
$player->UpdateCoords(0, 0);
echo $player->strength;
$player->UseSkill("Holy Nova");
echo $monster->health;