Updated building queue and resource updater
Signed-off-by: Gregory PLANCHAT <g.planchat@gmail.com>
This commit is contained in:
parent
98cc710653
commit
61abbb3900
9 changed files with 274 additions and 114 deletions
|
|
@ -117,7 +117,7 @@ abstract class Legacies_Empire_Model_BuilderAbstract
|
||||||
$this->_queue = array();
|
$this->_queue = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract public function updateQueue($time = null);
|
abstract public function updateQueue($time);
|
||||||
abstract public function appendQueue($typeId, $qty, $time);
|
abstract public function appendQueue($typeId, $qty, $time);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -194,4 +194,28 @@ abstract class Legacies_Empire_Model_BuilderAbstract
|
||||||
{
|
{
|
||||||
reset($this->_queue);
|
reset($this->_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCurrentPlanet()
|
||||||
|
{
|
||||||
|
return $this->_currentPlanet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCurrentUser()
|
||||||
|
{
|
||||||
|
return $this->_currentUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCurrentPlanet(Legacies_Empire_Model_Planet $planet)
|
||||||
|
{
|
||||||
|
$this->_currentPlanet = $planet;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCurrentUser(Legacies_Empire_Model_User $user)
|
||||||
|
{
|
||||||
|
$this->_currentUser = $user;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -13,6 +13,8 @@ class Legacies_Empire_Model_Planet
|
||||||
const TYPE_DEBRIS = 2;
|
const TYPE_DEBRIS = 2;
|
||||||
const TYPE_MOON = 3;
|
const TYPE_MOON = 3;
|
||||||
|
|
||||||
|
protected $_eventPrefix = 'planet.';
|
||||||
|
|
||||||
protected $_user = null;
|
protected $_user = null;
|
||||||
protected $_moon = null;
|
protected $_moon = null;
|
||||||
|
|
||||||
|
|
@ -21,15 +23,6 @@ class Legacies_Empire_Model_Planet
|
||||||
|
|
||||||
protected static $_instances = array();
|
protected static $_instances = array();
|
||||||
|
|
||||||
protected static $_productionCodes = array(
|
|
||||||
Legacies_Empire::ID_BUILDING_METAL_MINE => 'metal_mine',
|
|
||||||
Legacies_Empire::ID_BUILDING_CRISTAL_MINE => 'cristal_mine',
|
|
||||||
Legacies_Empire::ID_BUILDING_DEUTERIUM_SYNTHETISER => 'deuterium_synthetiser',
|
|
||||||
Legacies_Empire::ID_BUILDING_SOLAR_PLANT => 'solar_plant',
|
|
||||||
Legacies_Empire::ID_BUILDING_FUSION_REACTOR => 'fusion_reactor',
|
|
||||||
Legacies_Empire::ID_SHIP_SOLAR_SATELLITE => 'solar_satelite'
|
|
||||||
);
|
|
||||||
|
|
||||||
protected static $_productionInstances = array();
|
protected static $_productionInstances = array();
|
||||||
|
|
||||||
public static function factory($id)
|
public static function factory($id)
|
||||||
|
|
@ -215,8 +208,10 @@ class Legacies_Empire_Model_Planet
|
||||||
$timeDiff = ($time - $this->getLastUpdate()) / 3600;
|
$timeDiff = ($time - $this->getLastUpdate()) / 3600;
|
||||||
foreach ($resources->getAllDatas() as $resourceId => $resourceConfig) {
|
foreach ($resources->getAllDatas() as $resourceId => $resourceConfig) {
|
||||||
$production = Math::mul($this->getData($resourceConfig['production_field']), $timeDiff);
|
$production = Math::mul($this->getData($resourceConfig['production_field']), $timeDiff);
|
||||||
$this->setData($resourceConfig['field'], Math::min($production, $this->getData($resourceConfig['storage_field'])));
|
$resourceValue = Math::add($this->getData($resourceConfig['field']), $production);
|
||||||
|
$this->setData($resourceConfig['field'], Math::min($resourceValue, $this->getData($resourceConfig['storage_field'])));
|
||||||
}
|
}
|
||||||
|
$this->setLastUpdate($time);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
@ -380,11 +375,15 @@ class Legacies_Empire_Model_Planet
|
||||||
return $this->hasData($fields[$elementId]) && Math::comp($this->getElement($elementId), $levelRequired) > 0;
|
return $this->hasData($fields[$elementId]) && Math::comp($this->getElement($elementId), $levelRequired) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function appendQueue($buildingId, $time = null, $destroy = false)
|
public function appendBuildingQueue($buildingId, $destroy = false, $time = null)
|
||||||
{
|
{
|
||||||
$types = Legacies_Empire_Model_Game_Types::getSingleton();
|
$types = Legacies_Empire_Model_Game_Types::getSingleton();
|
||||||
$prices = Legacies_Empire_Model_Game_Prices::getSingleton();
|
$prices = Legacies_Empire_Model_Game_Prices::getSingleton();
|
||||||
|
|
||||||
|
if ($time === null) {
|
||||||
|
$time = Legacies::now();
|
||||||
|
}
|
||||||
|
|
||||||
if (!$types->is($buildingId, Legacies_Empire::TYPE_BUILDING)) {
|
if (!$types->is($buildingId, Legacies_Empire::TYPE_BUILDING)) {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
@ -394,7 +393,7 @@ class Legacies_Empire_Model_Planet
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dispatch 'planet.building.append-queue.before' event
|
// Dispatch 'planet.building.append-queue.before' event
|
||||||
Legacies::dispatchEvent('planet.building.append-queue.before', array(
|
Legacies::dispatchEvent($this->_eventPrefix . 'building.append-queue.before', array(
|
||||||
'bulding_id' => $buildingId,
|
'bulding_id' => $buildingId,
|
||||||
'level' => $this->getElement($buildingId),
|
'level' => $this->getElement($buildingId),
|
||||||
'planet' => $this,
|
'planet' => $this,
|
||||||
|
|
@ -402,17 +401,16 @@ class Legacies_Empire_Model_Planet
|
||||||
'destroy' => $destroy
|
'destroy' => $destroy
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->_builder->enqueue($buildingId, $level, $time);
|
if ($destroy === false) {
|
||||||
|
$level = $this->getElement($buildingId) + 1;
|
||||||
//$elementBasePrice = $prices;
|
} else {
|
||||||
/*
|
$level = max($this->getElement($buildingId) - 1, 0);
|
||||||
foreach ($this->_resourcesTypes as $resourceType) {
|
|
||||||
$this->setData($resourceType, Math::sub($this->getData($resourceType), $resourcesNeeded[$resourceType]));
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
$this->_builder->appendQueue($buildingId, $level, $time);
|
||||||
|
|
||||||
// Dispatch 'planet.shipyard.append-queue.after' event
|
// Dispatch 'planet.shipyard.append-queue.after' event
|
||||||
Legacies::dispatchEvent('planet.shipyard.append-queue.after', array(
|
Legacies::dispatchEvent($this->_eventPrefix . 'building.append-queue.after', array(
|
||||||
'bulding_id' => $buildingId,
|
'bulding_id' => $buildingId,
|
||||||
'level' => $this->getElement($buildingId),
|
'level' => $this->getElement($buildingId),
|
||||||
'planet' => $this,
|
'planet' => $this,
|
||||||
|
|
@ -423,6 +421,30 @@ class Legacies_Empire_Model_Planet
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateBuildingQueue($time = null)
|
||||||
|
{
|
||||||
|
if ($time === null) {
|
||||||
|
$time = Legacies::now();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dispatch event
|
||||||
|
Legacies::dispatchEvent($this->_eventPrefix . 'update-queue.before', array(
|
||||||
|
'time' => &$time,
|
||||||
|
'planet' => $this->_currentPlanet,
|
||||||
|
'user' => $this->_currentUser
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->_builder->updateQueue();
|
||||||
|
|
||||||
|
// Dispatch event
|
||||||
|
Legacies::dispatchEvent($this->_eventPrefix . 'update-queue.after', array(
|
||||||
|
'time' => $time,
|
||||||
|
'shipyard' => $this,
|
||||||
|
'planet' => $this->_currentPlanet,
|
||||||
|
'user' => $this->_currentUser
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a building is actually buildable on the current planet,
|
* Check if a building is actually buildable on the current planet,
|
||||||
* depending on the technology and buildings requirements.
|
* depending on the technology and buildings requirements.
|
||||||
|
|
@ -432,29 +454,11 @@ class Legacies_Empire_Model_Planet
|
||||||
*/
|
*/
|
||||||
public function checkAvailability($buildingId)
|
public function checkAvailability($buildingId)
|
||||||
{
|
{
|
||||||
$types = Legacies_Empire_Model_Game_Types::getSingleton();
|
$this->_builder->checkAvailability($buildingId);
|
||||||
$requirements = Legacies_Empire_Model_Game_Requirements::getSingleton();
|
|
||||||
|
|
||||||
if (!isset($requirements[$buildingId]) || empty($requirements[$buildingId])) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($requirements[$buildingId] as $requirement => $level) {
|
|
||||||
if ($types->is($requirement, Legacies_Empire::TYPE_BUILDING) && $this->_currentPlanet->hasElement($requirement, $level)) {
|
|
||||||
continue;
|
|
||||||
} else if ($types->is($requirement, Legacies_Empire::TYPE_RESEARCH) && $this->_currentUser->hasElement($requirement, $level)) {
|
|
||||||
continue;
|
|
||||||
} else if ($types->is($requirement, Legacies_Empire::TYPE_DEFENSE) && $this->_currentPlanet->hasElement($requirement, $level)) {
|
|
||||||
continue;
|
|
||||||
} else if ($types->is($requirement, Legacies_Empire::TYPE_SHIP) && $this->_currentPlanet->hasElement($requirement, $level)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Dispatch event. Throw an exception to break the avaliability.
|
// Dispatch event. Throw an exception to break the avaliability.
|
||||||
Legacies::dispatchEvent('planet.shipyard.check-availability', array(
|
Legacies::dispatchEvent($this->_eventPrefix . 'check-availability', array(
|
||||||
'ship_id' => $buildingId,
|
'ship_id' => $buildingId,
|
||||||
'shipyard' => $this,
|
'shipyard' => $this,
|
||||||
'planet' => $this->_currentPlanet,
|
'planet' => $this->_currentPlanet,
|
||||||
|
|
@ -579,26 +583,7 @@ class Legacies_Empire_Model_Planet
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = $planet->getUser();
|
$planet->updateBuildingQueue($time);
|
||||||
/*
|
|
||||||
if (($queue = $planet->getData('b_building_id')) != '0') { //FIXME: refactor buildings construciton list
|
|
||||||
$explodedQueue = explode(';', $queue);
|
|
||||||
foreach ($explodedQueue as $item) {
|
|
||||||
$partialTime = $planet->getData('b_building');
|
|
||||||
|
|
||||||
if ($partialTime < $time) {
|
|
||||||
$planet->updateResources($partialTime);
|
|
||||||
if (CheckPlanetBuildingQueue($planet, $user)) {
|
|
||||||
SetNextQueueElementOnTop($planet, $user);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$planet->updateResources($time);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$planet->updateResources($time);
|
|
||||||
}*/
|
|
||||||
$planet->updateResources($time);
|
$planet->updateResources($time);
|
||||||
$planet->getShipyard()->updateQueue($time);
|
$planet->getShipyard()->updateQueue($time);
|
||||||
$planet->setLastUpdate($time);
|
$planet->setLastUpdate($time);
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,145 @@ class Legacies_Empire_Model_Planet_Builder
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getResourcesNeeded($typeId, $level)
|
/**
|
||||||
|
* Check if a building is actually buildable on the current planet,
|
||||||
|
* depending on the technology and buildings requirements.
|
||||||
|
*
|
||||||
|
* @param int $buildingId
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function checkAvailability($buildingId)
|
||||||
{
|
{
|
||||||
return array();
|
$types = Legacies_Empire_Model_Game_Types::getSingleton();
|
||||||
|
|
||||||
|
if ($types->is($buildingId, Legacies_Empire::TYPE_BUILDING)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->checkAvailability($buildingId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBuildingTime($typeId, $level)
|
public function getResourcesNeeded($buildingId, $level)
|
||||||
|
{
|
||||||
|
$prices = Legacies_Empire_Model_Game_Prices::getSingleton();
|
||||||
|
$resources = Legacies_Empire_Model_Game_Resources::getSingleton();
|
||||||
|
|
||||||
|
if (!isset($prices[$buildingId])) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
$resourcesNeeded = array();
|
||||||
|
foreach ($resources as $resourceId => $resourceConfig) {
|
||||||
|
if (!isset($prices[$buildingId][$resourceId])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (Math::isPositive($prices[$buildingId][$resourceId])) {
|
||||||
|
$firstLevelCost = $prices[$buildingId][$resourceId];
|
||||||
|
$partialLevelCost = Math::mul($firstLevelCost, Math::pow($prices[$buildingId][Legacies_Empire::RESOURCE_MULTIPLIER], $level));
|
||||||
|
$resourcesNeeded[$resourceId] = Math::sub($partialLevelCost, $firstLevelCost);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $resourcesNeeded;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBuildingTime($buildingId, $level)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the contruction queue.
|
||||||
|
*
|
||||||
|
* @return Legacies_Empire_Model_Planet_Building_Shipyard
|
||||||
|
*/
|
||||||
|
public function updateQueue($time = null)
|
||||||
|
{
|
||||||
|
$fields = Legacies_Empire_Model_Game_FieldsAlias::getSingleton();
|
||||||
|
|
||||||
|
if ($time === null) {
|
||||||
|
$time = Legacies::now();
|
||||||
|
}
|
||||||
|
$elapsedTime = $time - $this->_currentPlanet->getData('b_building');
|
||||||
|
|
||||||
|
foreach ($this->getQueue() as $element) {
|
||||||
|
$buildingId = $element->getData('building_id');
|
||||||
|
$level = $element->getData('level');
|
||||||
|
$buildTime = $this->getBuildingTime($buildingId, $level); // FIXME: consider total time, not only the construction time
|
||||||
|
|
||||||
|
if ($elapsedTime >= $buildTime) {
|
||||||
|
$this->_currentPlanet->updateResources($time - $elapsedTime);
|
||||||
|
$this->_currentPlanet->setElement($buildingId, $level);
|
||||||
|
$this->_currentPlanet->updateResourceProduction($time - $elapsedTime);
|
||||||
|
$this->_currentPlanet->updateStorages($time - $elapsedTime);
|
||||||
|
$this->dequeue($element);
|
||||||
|
|
||||||
|
Legacies::dispatchEvent('planet.building.level-update', array(
|
||||||
|
'time' => $time - $elapsedTime,
|
||||||
|
'planet' => $this->_currentPlanet,
|
||||||
|
'user' => $this->_currentUser,
|
||||||
|
'building_id' => $buildingId,
|
||||||
|
'level' => $level
|
||||||
|
));
|
||||||
|
|
||||||
|
$elapsedTime -= $buildTime;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$element->setData('updated_at', $time);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_currentPlanet->setData('b_building_id', $this->serialize());
|
||||||
|
$this->_currentPlanet->setData('b_building', $time);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append items to build to the construction list
|
||||||
|
*
|
||||||
|
* @param int $buildingId
|
||||||
|
* @param int|string $level
|
||||||
|
* @return Legacies_Empire_Model_Planet_Building_Shipyard
|
||||||
|
*/
|
||||||
|
public function appendQueue($buildingId, $level, $time)
|
||||||
|
{
|
||||||
|
$types = Legacies_Empire_Model_Game_Types::getSingleton();
|
||||||
|
$resources = Legacies_Empire_Model_Game_Resources::getSingleton();
|
||||||
|
|
||||||
|
if (!Math::isPositive($level)) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$types->is($buildingId, Legacies_Empire::TYPE_BUILDING)) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->checkAvailability($buildingId)) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
$resourcesNeeded = $this->getResourcesNeeded($buildingId, $level);
|
||||||
|
|
||||||
|
$amounts = array();
|
||||||
|
foreach ($resourcesNeeded as $resourceId => $resourceCost) {
|
||||||
|
$amount[$resourceId] = Math::sub($this->_currentPlanet[$resourceId], $resourceCost);
|
||||||
|
|
||||||
|
if (Math::isNegative($amount[$resourceId])) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->enqueue($buildingId, $level, $time);
|
||||||
|
|
||||||
|
foreach ($resourcesNeeded as $resourceId => $resourceCost) {
|
||||||
|
if (!isset($resources[$resourceId]) || !Math::isPositive($resourceCost)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$this->_currentPlanet->setData($resourceId, $resourceId[$resourceId]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_currentPlanet->setData('b_building_id', $this->serialize());
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -180,6 +180,10 @@ class Legacies_Empire_Model_Planet_Building_Shipyard
|
||||||
*/
|
*/
|
||||||
public function updateQueue($time = null)
|
public function updateQueue($time = null)
|
||||||
{
|
{
|
||||||
|
if ($time === null) {
|
||||||
|
$time = Legacies::now();
|
||||||
|
}
|
||||||
|
|
||||||
// Dispatch event
|
// Dispatch event
|
||||||
Legacies::dispatchEvent($this->_eventPrefix . 'update-queue.before', array(
|
Legacies::dispatchEvent($this->_eventPrefix . 'update-queue.before', array(
|
||||||
'time' => &$time,
|
'time' => &$time,
|
||||||
|
|
|
||||||
|
|
@ -58,16 +58,10 @@ class Legacies_Empire_Model_Planet_Building_Shipyard_Builder
|
||||||
{
|
{
|
||||||
$prices = Legacies_Empire_Model_Game_Prices::getSingleton();
|
$prices = Legacies_Empire_Model_Game_Prices::getSingleton();
|
||||||
$fields = Legacies_Empire_Model_Game_FieldsAlias::getSingleton();
|
$fields = Legacies_Empire_Model_Game_FieldsAlias::getSingleton();
|
||||||
|
$resources = Legacies_Empire_Model_Game_Resources::getSingleton();
|
||||||
$resources = array(
|
|
||||||
Legacies_Empire::RESOURCE_METAL,
|
|
||||||
Legacies_Empire::RESOURCE_CRISTAL,
|
|
||||||
Legacies_Empire::RESOURCE_DEUTERIUM,
|
|
||||||
Legacies_Empire::RESOURCE_ENERGY
|
|
||||||
);
|
|
||||||
|
|
||||||
$qty = 0;
|
$qty = 0;
|
||||||
foreach ($resources as $resourceId) {
|
foreach ($resources as $resourceId => $_) {
|
||||||
if (isset($prices[$shipId]) && isset($prices[$shipId][$resourceId]) && Math::comp($prices[$shipId][$resourceId], 0) > 0) {
|
if (isset($prices[$shipId]) && isset($prices[$shipId][$resourceId]) && Math::comp($prices[$shipId][$resourceId], 0) > 0) {
|
||||||
$maxQty = Math::floor(Math::div($this->_currentPlanet->getData($resourceId), $prices[$shipId][$resourceId]));
|
$maxQty = Math::floor(Math::div($this->_currentPlanet->getData($resourceId), $prices[$shipId][$resourceId]));
|
||||||
|
|
||||||
|
|
@ -180,11 +174,11 @@ class Legacies_Empire_Model_Planet_Building_Shipyard_Builder
|
||||||
$prices = Legacies_Empire_Model_Game_Prices::getSingleton();
|
$prices = Legacies_Empire_Model_Game_Prices::getSingleton();
|
||||||
$resources = Legacies_Empire_Model_Game_Resources::getSingleton();
|
$resources = Legacies_Empire_Model_Game_Resources::getSingleton();
|
||||||
|
|
||||||
|
if (!isset($prices[$shipId])) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
$resourcesNeeded = array();
|
$resourcesNeeded = array();
|
||||||
foreach ($resources as $resourceId => $resourceConfig) {
|
foreach ($resources as $resourceId => $resourceConfig) {
|
||||||
if (!isset($prices[$shipId])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!isset($prices[$shipId][$resourceId])) {
|
if (!isset($prices[$shipId][$resourceId])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -214,14 +208,11 @@ class Legacies_Empire_Model_Planet_Building_Shipyard_Builder
|
||||||
*
|
*
|
||||||
* @return Legacies_Empire_Model_Planet_Building_Shipyard
|
* @return Legacies_Empire_Model_Planet_Building_Shipyard
|
||||||
*/
|
*/
|
||||||
public function updateQueue($time = null)
|
public function updateQueue($time)
|
||||||
{
|
{
|
||||||
$fields = Legacies_Empire_Model_Game_FieldsAlias::getSingleton();
|
$fields = Legacies_Empire_Model_Game_FieldsAlias::getSingleton();
|
||||||
|
|
||||||
if ($time === null) {
|
$elapsedTime = $time - $this->_currentPlanet->getData('b_hangar');
|
||||||
$time = Legacies::now();
|
|
||||||
}
|
|
||||||
$elapsedTime = $time - $this->_currentPlanet->getLastUpdate();
|
|
||||||
|
|
||||||
foreach ($this->getQueue() as $element) {
|
foreach ($this->getQueue() as $element) {
|
||||||
$shipId = $element->getData('ship_id');
|
$shipId = $element->getData('ship_id');
|
||||||
|
|
@ -245,6 +236,7 @@ class Legacies_Empire_Model_Planet_Building_Shipyard_Builder
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_currentPlanet->setData('b_hangar_id', $this->serialize());
|
$this->_currentPlanet->setData('b_hangar_id', $this->serialize());
|
||||||
|
$this->_currentPlanet->setData('b_hangar', $time);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
@ -273,7 +265,15 @@ class Legacies_Empire_Model_Planet_Building_Shipyard_Builder
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = Math::min($this->_checkMaximumQuantity($shipId, $qty), MAX_FLEET_OR_DEFS_PER_ROW);
|
if (MAX_FLEET_OR_DEFS_PER_ROW > 0) {
|
||||||
|
$qty = Math::min($this->_checkMaximumQuantity($shipId, $qty), MAX_FLEET_OR_DEFS_PER_ROW);
|
||||||
|
} else {
|
||||||
|
$qty = $this->_checkMaximumQuantity($shipId, $qty);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Math::isPositive($qty)) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
$resourcesNeeded = $this->getResourcesNeeded($shipId, $qty);
|
$resourcesNeeded = $this->getResourcesNeeded($shipId, $qty);
|
||||||
$buildTime = $this->getBuildingTime($shipId, $qty);
|
$buildTime = $this->getBuildingTime($shipId, $qty);
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ class Legacies_Object
|
||||||
|
|
||||||
public function __get($key)
|
public function __get($key)
|
||||||
{
|
{
|
||||||
return $this->getData($key, $value);
|
return $this->getData($key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __unset($key)
|
public function __unset($key)
|
||||||
|
|
|
||||||
|
|
@ -27,11 +27,12 @@ $user = new Legacies_Empire_Model_User(array(
|
||||||
"graviton_tech" => 0,
|
"graviton_tech" => 0,
|
||||||
));
|
));
|
||||||
|
|
||||||
$planet = new Legacies_Empire_Model_Planet(array(
|
$data = array(
|
||||||
'last_update' => 0,
|
'last_update' => 0,
|
||||||
'planet_type' => 1,
|
'planet_type' => 1,
|
||||||
|
|
||||||
'b_hangar_id' => serialize(array(array(
|
'b_building_id' => '',
|
||||||
|
'b_hangar_id' => serialize(array(/*array(
|
||||||
'ship_id' => Legacies_Empire::ID_SHIP_LIGHT_TRANSPORT,
|
'ship_id' => Legacies_Empire::ID_SHIP_LIGHT_TRANSPORT,
|
||||||
'qty' => 10,
|
'qty' => 10,
|
||||||
'created_at' => 0,
|
'created_at' => 0,
|
||||||
|
|
@ -51,78 +52,92 @@ $planet = new Legacies_Empire_Model_Planet(array(
|
||||||
'qty' => 40,
|
'qty' => 40,
|
||||||
'created_at' => 700,
|
'created_at' => 700,
|
||||||
'updated_at' => 700
|
'updated_at' => 700
|
||||||
))),
|
)*/)),
|
||||||
|
|
||||||
'metal' => 0,
|
'metal' => 100000,
|
||||||
'metal_perhour' => 20,
|
'metal_perhour' => 20,
|
||||||
'crystal' => 0,
|
'cristal' => 100000,
|
||||||
'crystal_perhour' => 10,
|
'cristal_perhour' => 10,
|
||||||
'deuterium' => 0,
|
'deuterium' => 0,
|
||||||
'deuterium_perhour' => 0,
|
'deuterium_perhour' => 0,
|
||||||
'energy_max' => 0,
|
'energy_max' => 0,
|
||||||
'energy_used' => 0,
|
'energy_used' => 0,
|
||||||
|
|
||||||
'metal_mine_porcent' => 10,
|
'metal_mine_porcent' => 10,
|
||||||
'crystal_mine_porcent' => 10,
|
'cristal_mine_porcent' => 10,
|
||||||
'solar_plant_porcent' => 10,
|
'solar_plant_porcent' => 10,
|
||||||
'fusion_plant_porcent' => 10,
|
'fusion_plant_porcent' => 10,
|
||||||
'solar_satelit_porcent' => 10,
|
'solar_satelit_porcent' => 10,
|
||||||
'deuterium_sintetizer_porcent' => 10,
|
'deuterium_sintetizer_porcent' => 10,
|
||||||
|
|
||||||
'metal_mine' => 20,
|
'metal_mine' => 20,
|
||||||
'crystal_mine' => 19,
|
'cristal_mine' => 19,
|
||||||
'deuterium_sintetizer' => 0,
|
'deuterium_sintetizer' => 0,
|
||||||
'solar_plant' => 20,
|
'solar_plant' => 20,
|
||||||
'fusion_plant' => 0,
|
'fusion_plant' => 0,
|
||||||
'robot_factory' => 0,
|
'robot_factory' => 0,
|
||||||
'nano_factory' => 0,
|
'nano_factory' => 0,
|
||||||
'hangar' => 12,
|
'hangar' => 12,
|
||||||
'metal_store' => 5,
|
'metal_store' => 10,
|
||||||
'crystal_store' => 5,
|
'cristal_store' => 10,
|
||||||
'deuterium_store' => 5,
|
'deuterium_store' => 10,
|
||||||
|
|
||||||
'rpg_stockeur' => 0
|
'rpg_stockeur' => 0
|
||||||
));
|
);
|
||||||
|
$planet = new Legacies_Empire_Model_Planet($data);
|
||||||
|
|
||||||
$planet->setUser($user);
|
$planet->setUser($user);
|
||||||
|
|
||||||
var_dump($planet->getAllDatas());
|
$planet->updateStorages(0);
|
||||||
|
$planet->updateResourceProduction(0);
|
||||||
|
|
||||||
$planet->updateStorages(3600);
|
$planet->getShipyard()->appendQueue(Legacies_Empire::ID_SHIP_LIGHT_FIGHTER, 10, 0);
|
||||||
|
$planet->appendBuildingQueue(Legacies_Empire::ID_BUILDING_CRISTAL_MINE, false, 0);
|
||||||
|
|
||||||
//var_dump($planet->getAllDatas());
|
var_dump(array_diff($planet->getAllDatas(), $data));
|
||||||
|
$data = $planet->getAllDatas();
|
||||||
$planet->updateResourceProduction(3600);
|
|
||||||
|
|
||||||
//var_dump($planet->getAllDatas());
|
|
||||||
|
|
||||||
Legacies::dispatchEvent('planet.update', array(
|
Legacies::dispatchEvent('planet.update', array(
|
||||||
'planet' => $planet,
|
'planet' => $planet,
|
||||||
'time' => 7200
|
'time' => 5400
|
||||||
));
|
));
|
||||||
|
|
||||||
//var_dump($planet->getAllDatas());
|
var_dump(array_diff($planet->getAllDatas(), $data));
|
||||||
$planet->getShipyard()->appendQueue(Legacies_Empire::ID_SHIP_LIGHT_FIGHTER, 10, 3600);
|
$data = $planet->getAllDatas();
|
||||||
|
|
||||||
var_dump($planet->getAllDatas());
|
|
||||||
|
|
||||||
Legacies::dispatchEvent('planet.update', array(
|
Legacies::dispatchEvent('planet.update', array(
|
||||||
'planet' => $planet,
|
'planet' => $planet,
|
||||||
'time' => (3600 * 20)
|
'time' => (3600 * 20)
|
||||||
));
|
));
|
||||||
|
|
||||||
var_dump($planet->getAllDatas());
|
$planet->appendBuildingQueue(Legacies_Empire::ID_BUILDING_CRISTAL_MINE, false, 3600);
|
||||||
|
|
||||||
|
var_dump(array_diff($planet->getAllDatas(), $data));
|
||||||
|
$data = $planet->getAllDatas();
|
||||||
|
|
||||||
Legacies::dispatchEvent('planet.update', array(
|
Legacies::dispatchEvent('planet.update', array(
|
||||||
'planet' => $planet,
|
'planet' => $planet,
|
||||||
'time' => (3600 * 30)
|
'time' => (3600 * 30)
|
||||||
));
|
));
|
||||||
|
|
||||||
var_dump($planet->getAllDatas());
|
var_dump(array_diff($planet->getAllDatas(), $data));
|
||||||
|
$data = $planet->getAllDatas();
|
||||||
|
|
||||||
Legacies::dispatchEvent('planet.update', array(
|
Legacies::dispatchEvent('planet.update', array(
|
||||||
'planet' => $planet,
|
'planet' => $planet,
|
||||||
'time' => (3600 * 50)
|
'time' => (3600 * 5000)
|
||||||
));
|
));
|
||||||
|
|
||||||
var_dump($planet->getAllDatas());
|
var_dump(array_diff($planet->getAllDatas(), $data));
|
||||||
|
$data = $planet->getAllDatas();
|
||||||
|
|
||||||
|
$planet->appendBuildingQueue(Legacies_Empire::ID_BUILDING_CRISTAL_MINE, false, 0);
|
||||||
|
$planet->appendBuildingQueue(Legacies_Empire::ID_BUILDING_SOLAR_PLANT, false, 0);
|
||||||
|
|
||||||
|
Legacies::dispatchEvent('planet.update', array(
|
||||||
|
'planet' => $planet,
|
||||||
|
'time' => (3600 * 10000)
|
||||||
|
));
|
||||||
|
|
||||||
|
var_dump(array_diff($planet->getAllDatas(), $data));
|
||||||
|
$data = $planet->getAllDatas();
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
// Buildings
|
// Buildings
|
||||||
// {{{
|
// {{{
|
||||||
Legacies_Empire::ID_BUILDING_METAL_MINE => "metal_mine",
|
Legacies_Empire::ID_BUILDING_METAL_MINE => "metal_mine",
|
||||||
Legacies_Empire::ID_BUILDING_CRISTAL_MINE => "crystal_mine",
|
Legacies_Empire::ID_BUILDING_CRISTAL_MINE => "cristal_mine",
|
||||||
Legacies_Empire::ID_BUILDING_DEUTERIUM_SYNTHETISER => "deuterium_sintetizer",
|
Legacies_Empire::ID_BUILDING_DEUTERIUM_SYNTHETISER => "deuterium_sintetizer",
|
||||||
Legacies_Empire::ID_BUILDING_SOLAR_PLANT => "solar_plant",
|
Legacies_Empire::ID_BUILDING_SOLAR_PLANT => "solar_plant",
|
||||||
Legacies_Empire::ID_BUILDING_FUSION_REACTOR => "fusion_plant",
|
Legacies_Empire::ID_BUILDING_FUSION_REACTOR => "fusion_plant",
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
Legacies_Empire::ID_BUILDING_NANITE_FACTORY => "nano_factory",
|
Legacies_Empire::ID_BUILDING_NANITE_FACTORY => "nano_factory",
|
||||||
Legacies_Empire::ID_BUILDING_SHIPYARD => "hangar",
|
Legacies_Empire::ID_BUILDING_SHIPYARD => "hangar",
|
||||||
Legacies_Empire::ID_BUILDING_METAL_STORAGE => "metal_store",
|
Legacies_Empire::ID_BUILDING_METAL_STORAGE => "metal_store",
|
||||||
Legacies_Empire::ID_BUILDING_CRISTAL_STORAGE => "crystal_store",
|
Legacies_Empire::ID_BUILDING_CRISTAL_STORAGE => "cristal_store",
|
||||||
Legacies_Empire::ID_BUILDING_DEUTERIUM_TANK => "deuterium_store",
|
Legacies_Empire::ID_BUILDING_DEUTERIUM_TANK => "deuterium_store",
|
||||||
Legacies_Empire::ID_BUILDING_RESEARCH_LAB => "laboratory",
|
Legacies_Empire::ID_BUILDING_RESEARCH_LAB => "laboratory",
|
||||||
Legacies_Empire::ID_BUILDING_TERRAFORMER => "terraformer",
|
Legacies_Empire::ID_BUILDING_TERRAFORMER => "terraformer",
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,10 @@
|
||||||
'renderer' => 'Legacies_Empire_Block_Resource_Default',
|
'renderer' => 'Legacies_Empire_Block_Resource_Default',
|
||||||
|
|
||||||
'field' => Legacies_Empire::RESOURCE_CRISTAL,
|
'field' => Legacies_Empire::RESOURCE_CRISTAL,
|
||||||
'production_field' => 'crystal_perhour',
|
'production_field' => 'cristal_perhour',
|
||||||
'storage_field' => 'crystal_max',
|
'storage_field' => 'cristal_max',
|
||||||
'production' => array(
|
'production' => array(
|
||||||
Legacies_Empire::ID_BUILDING_CRISTAL_MINE => 'crystal_mine_porcent'
|
Legacies_Empire::ID_BUILDING_CRISTAL_MINE => 'cristal_mine_porcent'
|
||||||
),
|
),
|
||||||
'storage' => Legacies_Empire::ID_BUILDING_CRISTAL_STORAGE
|
'storage' => Legacies_Empire::ID_BUILDING_CRISTAL_STORAGE
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue