Mining settings in XML dumps
* Empire mining settings have been included in the empire's resource information records * Planet-specific mining settings have been included in the resource provider information records
This commit is contained in:
parent
9b346a80c2
commit
3637b6e1d1
11 changed files with 380 additions and 70 deletions
legacyworlds-server-data/db-structure
parts/040-functions
tests/admin/040-functions/200-bugs
|
@ -1217,12 +1217,19 @@ GRANT SELECT ON bugs.dump_research_view TO :dbuser;
|
|||
* resource_name Text-based identifier of the resource type
|
||||
* empres_possessed Amount of resources possessed by the empire
|
||||
* empres_owed Amount of resources owed by the empire
|
||||
* mining_priority Mining priority for this resource, or NULL if it
|
||||
* is not a natural resource
|
||||
*/
|
||||
DROP VIEW IF EXISTS bugs.dump_emp_resources_view CASCADE;
|
||||
CREATE VIEW bugs.dump_emp_resources_view
|
||||
AS SELECT empire_id , name AS resource_name , empres_possessed , empres_owed
|
||||
AS SELECT empire_id , name AS resource_name ,
|
||||
empres_possessed , empres_owed ,
|
||||
empmset_weight AS mining_priority
|
||||
FROM emp.resources
|
||||
INNER JOIN defs.strings ON id = resource_name_id;
|
||||
INNER JOIN defs.strings
|
||||
ON id = resource_name_id
|
||||
LEFT OUTER JOIN emp.mining_settings
|
||||
USING ( empire_id , resource_name_id );
|
||||
|
||||
GRANT SELECT
|
||||
ON bugs.dump_emp_resources_view
|
||||
|
@ -1271,6 +1278,10 @@ GRANT SELECT ON bugs.dump_planets_view TO :dbuser;
|
|||
* resprov_recovery The resource provider's recovery rate, or NULL
|
||||
* if there is no resource provider of that
|
||||
* type on the planet
|
||||
* mining_priority The planet-specific mining priority for the
|
||||
* current resource type, or NULL if there
|
||||
* are no planet-specific settings or no
|
||||
* provider of this type.
|
||||
*/
|
||||
DROP VIEW IF EXISTS bugs.dump_planet_resources_view CASCADE;
|
||||
CREATE VIEW bugs.dump_planet_resources_view
|
||||
|
@ -1278,7 +1289,8 @@ CREATE VIEW bugs.dump_planet_resources_view
|
|||
name AS resource_name ,
|
||||
pres_income , pres_upkeep ,
|
||||
resprov_quantity_max , resprov_quantity ,
|
||||
resprov_difficulty , resprov_recovery
|
||||
resprov_difficulty , resprov_recovery ,
|
||||
emppmset_weight AS mining_priority
|
||||
FROM emp.planets
|
||||
INNER JOIN verse.planet_resources
|
||||
USING ( planet_id )
|
||||
|
@ -1286,6 +1298,8 @@ CREATE VIEW bugs.dump_planet_resources_view
|
|||
ON resource_name_id = id
|
||||
LEFT OUTER JOIN verse.resource_providers
|
||||
USING ( planet_id , resource_name_id )
|
||||
LEFT OUTER JOIN emp.planet_mining_settings
|
||||
USING ( empire_id , planet_id , resource_name_id )
|
||||
ORDER BY name;
|
||||
|
||||
GRANT SELECT
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
*/
|
||||
BEGIN;
|
||||
/*
|
||||
* We need a resource type, an empire and the associated resource record.
|
||||
* We need a basic resource type, a natural resource type, an empire and
|
||||
* the associated resources and mining settings records.
|
||||
*/
|
||||
\i utils/strings.sql
|
||||
\i utils/resources.sql
|
||||
|
@ -11,6 +12,7 @@ BEGIN;
|
|||
\i utils/naming.sql
|
||||
\i utils/universe.sql
|
||||
SELECT _create_resources( 1 , 'resource' );
|
||||
SELECT _create_natural_resources( 1 , 'natRes' );
|
||||
SELECT _create_emp_names( 1 , 'empire' );
|
||||
INSERT INTO emp.empires( name_id , cash )
|
||||
VALUES ( _get_emp_name( 'empire1' ) , 0 );
|
||||
|
@ -18,19 +20,37 @@ BEGIN;
|
|||
empire_id , resource_name_id , empres_possessed , empres_owed
|
||||
) VALUES (
|
||||
_get_emp_name( 'empire1' ) , _get_string( 'resource1' ) , 1 , 2
|
||||
) , (
|
||||
_get_emp_name( 'empire1' ) , _get_string( 'natRes1' ) , 3 , 4
|
||||
);
|
||||
INSERT INTO emp.mining_settings (
|
||||
empire_id , resource_name_id , empmset_weight
|
||||
) VALUES (
|
||||
_get_emp_name( 'empire1' ) , _get_string( 'natRes1' ) , 0
|
||||
);
|
||||
|
||||
|
||||
/***** TESTS BEGIN HERE *****/
|
||||
SELECT plan( 1 );
|
||||
SELECT plan( 2 );
|
||||
|
||||
SELECT diag_test_name( 'bugs.dump_emp_resources_view - Contents' );
|
||||
SELECT diag_test_name( 'bugs.dump_emp_resources_view - Basic resources' );
|
||||
SELECT set_eq( $$
|
||||
SELECT empire_id , resource_name , empres_possessed , empres_owed
|
||||
FROM bugs.dump_emp_resources_view
|
||||
WHERE mining_priority IS NULL
|
||||
$$ , $$ VALUES (
|
||||
_get_emp_name( 'empire1' ) , 'resource1' , 1 , 2
|
||||
) $$ );
|
||||
|
||||
SELECT diag_test_name( 'bugs.dump_emp_resources_view - Natural resources' );
|
||||
SELECT set_eq( $$
|
||||
SELECT empire_id , resource_name , empres_possessed , empres_owed ,
|
||||
mining_priority
|
||||
FROM bugs.dump_emp_resources_view
|
||||
WHERE mining_priority IS NOT NULL
|
||||
$$ , $$ VALUES (
|
||||
_get_emp_name( 'empire1' ) , 'natRes1' , 3 , 4 , 0
|
||||
) $$ );
|
||||
|
||||
SELECT * FROM finish( );
|
||||
ROLLBACK;
|
|
@ -3,10 +3,12 @@
|
|||
*/
|
||||
BEGIN;
|
||||
/*
|
||||
* We need a couple of resources (one natural, one basic), three planets
|
||||
* with valid planet resource records (two of the planets will have a
|
||||
* resource provider), two empires (owning a planet with and without
|
||||
* resource providers, respectively).
|
||||
* We need a couple of resources (one natural, one basic), four planets
|
||||
* with valid planet resource records (three of the planets will have a
|
||||
* resource provider and one of them will have planet-specific mining
|
||||
* settings), three empires (owning a planet without resource provider,
|
||||
* with resource provider and with resource provider and mining settings,
|
||||
* respectively).
|
||||
*/
|
||||
\i utils/strings.sql
|
||||
\i utils/resources.sql
|
||||
|
@ -15,7 +17,7 @@ BEGIN;
|
|||
\i utils/universe.sql
|
||||
SELECT _create_natural_resources( 1 , 'natRes' );
|
||||
SELECT _create_resources( 1 , 'basicRes' );
|
||||
SELECT _create_raw_planets( 3 , 'planet' );
|
||||
SELECT _create_raw_planets( 4 , 'planet' );
|
||||
INSERT INTO verse.planet_resources(
|
||||
planet_id , resource_name_id , pres_income , pres_upkeep
|
||||
) VALUES (
|
||||
|
@ -30,22 +32,37 @@ BEGIN;
|
|||
_get_map_name( 'planet3' ) , _get_string( 'basicRes1' ) , 9 , 10
|
||||
) , (
|
||||
_get_map_name( 'planet3' ) , _get_string( 'natRes1' ) , 11 , 12
|
||||
) , (
|
||||
_get_map_name( 'planet4' ) , _get_string( 'basicRes1' ) , 13 , 14
|
||||
) , (
|
||||
_get_map_name( 'planet4' ) , _get_string( 'natRes1' ) , 15 , 16
|
||||
);
|
||||
SELECT _create_resource_provider( 'planet1' , 'natRes1' );
|
||||
SELECT _create_resource_provider( 'planet3' , 'natRes1' );
|
||||
SELECT _create_resource_provider( 'planet4' , 'natRes1' );
|
||||
|
||||
SELECT _create_emp_names( 2 , 'empire' );
|
||||
SELECT _create_emp_names( 3 , 'empire' );
|
||||
SELECT emp.create_empire( _get_emp_name( 'empire1' ) ,
|
||||
_get_map_name( 'planet1' ) ,
|
||||
200.0 );
|
||||
SELECT emp.create_empire( _get_emp_name( 'empire2' ) ,
|
||||
_get_map_name( 'planet2' ) ,
|
||||
200.0 );
|
||||
SELECT emp.create_empire( _get_emp_name( 'empire3' ) ,
|
||||
_get_map_name( 'planet4' ) ,
|
||||
200.0 );
|
||||
|
||||
INSERT INTO emp.planet_mining_settings(
|
||||
empire_id , planet_id , resource_name_id , emppmset_weight
|
||||
) VALUES (
|
||||
_get_emp_name( 'empire3' ) , _get_map_name( 'planet4' ) ,
|
||||
_get_string( 'natRes1' ) , 2
|
||||
);
|
||||
|
||||
|
||||
|
||||
/***** TESTS BEGIN HERE *****/
|
||||
SELECT plan( 2 );
|
||||
SELECT plan( 3 );
|
||||
|
||||
SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records without resource providers' );
|
||||
SELECT set_eq( $$
|
||||
|
@ -58,16 +75,30 @@ BEGIN;
|
|||
_get_emp_name( 'empire2' ) , _get_map_name( 'planet2' ) , 'basicRes1' , 5 , 6
|
||||
) , (
|
||||
_get_emp_name( 'empire2' ) , _get_map_name( 'planet2' ) , 'natRes1' , 7 , 8
|
||||
) , (
|
||||
_get_emp_name( 'empire3' ) , _get_map_name( 'planet4' ) , 'basicRes1' , 13 , 14
|
||||
) $$ );
|
||||
|
||||
SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records with resource providers' );
|
||||
SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records with resource providers, no settings' );
|
||||
SELECT set_eq( $$
|
||||
SELECT empire_id , planet_id , resource_name , pres_income , pres_upkeep
|
||||
FROM bugs.dump_planet_resources_view
|
||||
WHERE resprov_quantity IS NOT NULL
|
||||
AND mining_priority IS NULL
|
||||
$$ , $$ VALUES (
|
||||
_get_emp_name( 'empire1' ) , _get_map_name( 'planet1' ) , 'natRes1' , 3 , 4
|
||||
) $$ );
|
||||
|
||||
SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records with resource providers and settings' );
|
||||
SELECT set_eq( $$
|
||||
SELECT empire_id , planet_id , resource_name , pres_income ,
|
||||
pres_upkeep , mining_priority
|
||||
FROM bugs.dump_planet_resources_view
|
||||
WHERE resprov_quantity IS NOT NULL
|
||||
AND mining_priority IS NOT NULL
|
||||
$$ , $$ VALUES (
|
||||
_get_emp_name( 'empire3' ) , _get_map_name( 'planet4' ) , 'natRes1' , 15 , 16 , 2
|
||||
) $$ );
|
||||
|
||||
SELECT * FROM finish( );
|
||||
ROLLBACK;
|
Reference in a new issue