-- 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_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.planets_updates _upd_verse
				USING ( update_id , updtype_id , updtgt_id )

		WHERE _upd_sys.update_last = $1
			AND _upd_sys.update_state = 'PROCESSING'
			AND _provider.planet_id = _upd_verse.name_id;

$process_planet_res_regen_updates$ LANGUAGE SQL;


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

SELECT sys.register_update_type( 'Planets' , 'ResourceRegeneration' ,
		'Resource providers are being regenerated.' ,
		'process_res_regen_updates'
	);