64 lines
1.9 KiB
MySQL
64 lines
1.9 KiB
MySQL
|
-- LegacyWorlds Beta 6
|
||
|
-- PostgreSQL database scripts
|
||
|
--
|
||
|
-- Game updates - empire resources
|
||
|
--
|
||
|
-- Copyright(C) 2004-2012, DeepClone Development
|
||
|
-- --------------------------------------------------------
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Empire resources update
|
||
|
*
|
||
|
* For each empire in the update batch, compute the new amount of resources
|
||
|
* based on the upkeep and income from planets.
|
||
|
*
|
||
|
* FIXME: this should also include fleet upkeeps. This situation will be
|
||
|
* resolved once the system is modified to rely solely on resources.
|
||
|
*
|
||
|
* Parameters:
|
||
|
* _tick The identifier of the game update
|
||
|
*/
|
||
|
DROP FUNCTION IF EXISTS sys.process_empire_resources_updates( BIGINT );
|
||
|
CREATE FUNCTION sys.process_empire_resources_updates( _tick BIGINT )
|
||
|
RETURNS VOID
|
||
|
STRICT VOLATILE
|
||
|
SECURITY INVOKER
|
||
|
AS $process_empire_resources_updates$
|
||
|
|
||
|
UPDATE emp.resources _emp_resources
|
||
|
|
||
|
SET empres_possessed = CASE
|
||
|
WHEN _emp_resources.empres_possessed + _pl_resources.pres_income - _pl_resources.pres_upkeep > 0 THEN
|
||
|
_emp_resources.empres_possessed + _pl_resources.pres_income - _pl_resources.pres_upkeep
|
||
|
ELSE
|
||
|
0
|
||
|
END ,
|
||
|
empres_owed = CASE
|
||
|
WHEN _emp_resources.empres_possessed + _pl_resources.pres_income - _pl_resources.pres_upkeep < 0 THEN
|
||
|
_pl_resources.pres_upkeep - _emp_resources.empres_possessed - _pl_resources.pres_income
|
||
|
ELSE
|
||
|
0
|
||
|
END
|
||
|
|
||
|
FROM sys.updates _upd_sys
|
||
|
INNER JOIN emp.updates _upd_emp
|
||
|
ON _upd_emp.update_id = _upd_sys.id
|
||
|
INNER JOIN emp.planets _emp_planets
|
||
|
USING ( empire_id )
|
||
|
INNER JOIN verse.planet_resources _pl_resources
|
||
|
USING ( planet_id )
|
||
|
|
||
|
WHERE _upd_sys.last_tick = $1
|
||
|
AND _upd_sys.status = 'PROCESSING'
|
||
|
AND _upd_sys.gu_type = 'EMPIRE_RESOURCES'
|
||
|
AND _emp_resources.empire_id = _upd_emp.empire_id
|
||
|
AND _emp_resources.resource_name_id = _pl_resources.resource_name_id;
|
||
|
|
||
|
$process_empire_resources_updates$ LANGUAGE SQL;
|
||
|
|
||
|
|
||
|
REVOKE EXECUTE
|
||
|
ON FUNCTION sys.process_empire_resources_updates( BIGINT )
|
||
|
FROM PUBLIC;
|