-- LegacyWorlds Beta 6
-- PostgreSQL database scripts
--
-- Game updates - resource regeneration
--
-- Copyright(C) 2004-2012, DeepClone Development
-- --------------------------------------------------------


/*
 * Resource provider regeneration update
 * 
 * This function computes the regeneration of resource providers for the current batch
 * of planets.
 * 
 * Parameters:
 *		_tick		The identifier of the game update
 */
CREATE OR REPLACE FUNCTION sys.process_planet_res_regen_updates( _tick BIGINT )
	RETURNS VOID
	STRICT VOLATILE
	SECURITY INVOKER
AS $process_planet_res_regen_updates$

	UPDATE verse.resource_providers _provider

		SET resprov_quantity = verse.compute_provider_regeneration(
				_provider.resprov_quantity ,
				_provider.resprov_quantity_max ,
				_provider.resprov_recovery
			)

		FROM sys.updates _upd_sys
			INNER JOIN verse.updates _upd_verse
				ON _upd_verse.update_id = _upd_sys.id

		WHERE _upd_sys.last_tick = $1
			AND _upd_sys.status = 'PROCESSING'
			AND _upd_sys.gu_type = 'PLANET_RES_REGEN'
			AND _provider.planet_id = _upd_verse.planet_id;

$process_planet_res_regen_updates$ LANGUAGE SQL;


REVOKE EXECUTE
	ON FUNCTION sys.process_planet_res_regen_updates( BIGINT )
	FROM PUBLIC;
