51 lines
1.4 KiB
MySQL
51 lines
1.4 KiB
MySQL
|
-- 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;
|