1
0
forked from 0ad/0ad
0ad/binaries/data/mods/official/gui/test/functions_sim_player.js

148 lines
4.8 KiB
JavaScript
Raw Normal View History

/*
DESCRIPTION : Functions for manipulating players and their properties (eg resources).
NOTES :
*/
// ====================================================================
function createResources()
{
// Defines all resource types for future use.
// Assigns the value of game setup resource values as starting values.
// Numbers for resource modes Low/Normal/High - tweak as needed for balancing
var resLowValue = Array(100,50,0,0);
var resNormalValue = Array(200,200,100,100);
var resHighValue = Array(1000,1000,1000,1000);
if (getCurrItemValue ("pgSessionSetupResources") == "Low") {
// Give low resources
var resValue = resLowValue;
} else if (getCurrItemValue("pgSessionSetupResources") == "Normal") {
// Give normal resources
var resValue = resNormalValue;
} else if (getCurrItemValue ("pgSessionSetupResources") == "High") {
// Give high resources
var resValue = resHighValue;
} else {
// Do not give any resources
var resValue = Array(0,0,0,0);
}
addResource ("Food", Number(resValue[0]));
addResource ("Wood", Number(resValue[1]));
addResource ("Stone", Number(resValue[2]));
addResource ("Ore", Number(resValue[3]));
addResource ("Population", 0);
addResource ("Housing", 0);
}
// ====================================================================
function addResource (resourceName, resourceQty)
{
// Creates a resource type.
// Ensure resource name is title-case.
resourceName = toTitleCase (resourceName);
// Create uppercase name.
resourceNameU = resourceName.toUpperCase();
if (!localPlayer.resource)
{
// Define the base resource group if it does not exist.
localPlayer.resource = new Array();
}
// Store resource's name and starting value.
localPlayer.resource.valueOf()[resourceNameU] = resourceQty;
// Update GUI resource counter.
if (resourceName != "Housing")
getGUIObjectByName ("snResourceCounter_" + resourceName).caption = resourceQty;
console.write( "Added " + resourceName + " (" + resourceQty + ")" );
}
// ====================================================================
function setResources (resourceName, resourceQty)
{
// Generic function to set the value of a resource in the player's pool.
// Ensure resource name is title-case.
resourceName = toTitleCase (resourceName);
// Create uppercase name.
resourceNameU = resourceName.toUpperCase();
if ( localPlayer.resource.valueOf()[resourceNameU] )
{
// Set resource value.
localPlayer.resource.valueOf()[resourceNameU] = resourceQty;
// Update GUI resource counter.
getGUIObjectByName ("snResourceCounter_" + resourceName).caption = localPlayer.resource.valueOf()[resourceNameU];
console.write ("Resource set to " + resourceQty + " " + resourceName + ".");
return ( true );
}
// If the resource wasn't in the list, report an error.
console.write ("Failed to set resource " + resourceName + " to " + resourceQty);
return ( false ) ;
}
// ====================================================================
function giveResources (resourceName, resourceQty)
{
// Generic function to add resources to the player's Pool.
// Ensure resource name is title-case.
resourceName = toTitleCase (resourceName);
// Create uppercase name.
resourceNameU = resourceName.toUpperCase();
if ( localPlayer.resource.valueOf()[resourceNameU] )
{
// Set resource value.
localPlayer.resource.valueOf()[resourceNameU] += resourceQty;
// Update GUI resource counter.
getGUIObjectByName ("snResourceCounter_" + resourceName).caption = localPlayer.resource.valueOf()[resourceNameU];
console.write ("Earned " + resourceQty + " " + resourceName + ".");
return ( true );
}
// If the resource wasn't in the list, report an error.
console.write ("Failed to add " + resourceQty + " to resource " + resourceName);
return ( false );
}
// ====================================================================
function deductResources (resourceName, resourceQty)
{
// Generic function to remove resources from the player's Pool.
// Ensure resource name is title-case.
resourceName = toTitleCase (resourceName);
// Create uppercase name.
resourceNameU = resourceName.toUpperCase();
if( localPlayer.resource.valueOf()[resourceNameU] )
{
// Set resource value.
localPlayer.resource.valueOf()[resourceNameU] -= resourceQty;
// Update GUI resource counter.
getGUIObjectByName ("snResourceCounter_" + resourceName).caption = localPlayer.resource.valueOf()[resourceNameU];
console.write("Deducted " + resourceQty + " " + resourceName + ".");
return( true );
}
// If the resource wasn't in the list, report an error.
console.write ("Failed to deduct " + resourceQty + " from resource " + resourceName);
return false;
}
// ====================================================================