Emmanuel BENOîT
b054a379a9
* The universe generator has been modified to generate resource providers. The code attempts to keep the universe balanced according to the natural resources definitions.
51 lines
No EOL
1.4 KiB
SQL
51 lines
No EOL
1.4 KiB
SQL
-- LegacyWorlds Beta 6
|
|
-- PostgreSQL database scripts
|
|
--
|
|
-- A few types and internal functions used in most parts
|
|
-- of the universe generator.
|
|
--
|
|
-- Copyright(C) 2004-2012, DeepClone Development
|
|
-- --------------------------------------------------------
|
|
|
|
|
|
/* The coordinates of the area being generated. */
|
|
DROP TYPE IF EXISTS verse.generator_area_type CASCADE;
|
|
CREATE TYPE verse.generator_area_type AS (
|
|
x0 INT , y0 INT ,
|
|
x1 INT , y1 INT
|
|
);
|
|
|
|
|
|
|
|
/*
|
|
* List some quantity of random planets from an area of the universe
|
|
*
|
|
* This function returns a set of planet identifiers chosen at random from the
|
|
* specified area of the universe.
|
|
*
|
|
* Parameters:
|
|
* _area The area to select planets from
|
|
* _count The maximal amount of planets to return
|
|
*/
|
|
DROP FUNCTION IF EXISTS verse.list_random_planets_in( verse.generator_area_type , INT );
|
|
CREATE FUNCTION verse.list_random_planets_in( _area verse.generator_area_type , _count INT )
|
|
RETURNS SETOF INT
|
|
STRICT VOLATILE
|
|
SECURITY INVOKER
|
|
AS $list_random_planets_in$
|
|
|
|
SELECT _planets.name_id
|
|
FROM verse.planets _planets
|
|
INNER JOIN verse.systems _systems
|
|
ON _planets.system_id = _systems.id
|
|
WHERE _systems.x BETWEEN $1.x0 AND $1.x1
|
|
AND _systems.y BETWEEN $1.y0 AND $1.y1
|
|
ORDER BY RANDOM( )
|
|
LIMIT $2;
|
|
|
|
$list_random_planets_in$ LANGUAGE SQL;
|
|
|
|
REVOKE EXECUTE
|
|
ON FUNCTION verse.list_random_planets_in( verse.generator_area_type ,
|
|
INT )
|
|
FROM PUBLIC; |