Upload files to "js"
This commit is contained in:
66
js/resources.js
Normal file
66
js/resources.js
Normal file
@@ -0,0 +1,66 @@
|
||||
// Resource Management
|
||||
const Resources = {
|
||||
// Current resource counts
|
||||
inventory: {},
|
||||
|
||||
// Initialize resources
|
||||
init() {
|
||||
this.inventory = Utils.deepClone(CONFIG.STARTING_RESOURCES);
|
||||
},
|
||||
|
||||
// Get resource count
|
||||
get(type) {
|
||||
return this.inventory[type] || 0;
|
||||
},
|
||||
|
||||
// Add resources
|
||||
add(type, amount) {
|
||||
this.inventory[type] = (this.inventory[type] || 0) + amount;
|
||||
},
|
||||
|
||||
// Remove resources (returns false if not enough)
|
||||
remove(type, amount) {
|
||||
if (this.get(type) < amount) return false;
|
||||
this.inventory[type] -= amount;
|
||||
return true;
|
||||
},
|
||||
|
||||
// Check if player can afford a cost
|
||||
canAfford(costObj) {
|
||||
if (CONFIG.DEV_MODE) return true;
|
||||
if (!costObj) return true;
|
||||
for (const [res, amount] of Object.entries(costObj)) {
|
||||
if (this.get(res) < amount) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
// Pay a cost (deduct resources)
|
||||
payCost(costObj) {
|
||||
if (CONFIG.DEV_MODE) return true;
|
||||
if (!costObj) return true;
|
||||
if (!this.canAfford(costObj)) return false;
|
||||
for (const [res, amount] of Object.entries(costObj)) {
|
||||
this.remove(res, amount);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
// Refund half cost (for demolishing)
|
||||
refundHalf(costObj) {
|
||||
if (!costObj) return;
|
||||
for (const [res, amount] of Object.entries(costObj)) {
|
||||
this.add(res, Math.floor(amount / 2));
|
||||
}
|
||||
},
|
||||
|
||||
// Get all resources as object
|
||||
getAll() {
|
||||
return Utils.deepClone(this.inventory);
|
||||
},
|
||||
|
||||
// Set all resources from object
|
||||
setAll(data) {
|
||||
this.inventory = Utils.deepClone(data);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user