From c92862b316ca526f997353334be20588e857e878 Mon Sep 17 00:00:00 2001 From: Azgaar Date: Wed, 11 Aug 2021 22:08:08 +0300 Subject: [PATCH] generate state salesTax --- modules/burgs-and-states.js | 6 ++++-- modules/load.js | 3 +++ modules/trade-generator.js | 12 ++++++------ modules/ui/burg-editor.js | 4 ++-- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/modules/burgs-and-states.js b/modules/burgs-and-states.js index 894de9b7..c50310b7 100644 --- a/modules/burgs-and-states.js +++ b/modules/burgs-and-states.js @@ -74,6 +74,7 @@ window.BurgsAndStates = (function () { const states = [{i: 0, name: 'Neutrals'}]; const colors = getColors(burgs.length - 1); const each5th = each(5); + const maxExpansionism = +powerInput.value; burgs.forEach(function (b, i) { if (!i) return; // skip first element @@ -86,14 +87,15 @@ window.BurgsAndStates = (function () { b.capital = 1; // states data - const expansionism = rn(Math.random() * powerInput.value + 1, 1); + const expansionism = rn(Math.random() * maxExpansionism + 1, 1); const basename = b.name.length < 9 && each5th(b.cell) ? b.name : Names.getCultureShort(b.culture); const name = Names.getState(basename, b.culture); const type = cultures[b.culture].type; + const salesTax = rn(Math.random() * 0.3, 2); const coa = COA.generate(null, null, null, type); coa.shield = COA.getShield(b.culture, null); - states.push({i, color: colors[i - 1], name, expansionism, capital: i, type, center: b.cell, culture: b.culture, coa}); + states.push({i, color: colors[i - 1], name, expansionism, capital: i, type, center: b.cell, culture: b.culture, coa, salesTax}); cells.burg[b.cell] = i; }); diff --git a/modules/load.js b/modules/load.js index 17b46593..d685d8b2 100644 --- a/modules/load.js +++ b/modules/load.js @@ -761,6 +761,9 @@ function parseLoadedData(data) { rivers.attr('style', null); borders.attr('style', null); } + + // ecomonics: + // calculate salesTax for all states })(); void (function checkDataIntegrity() { diff --git a/modules/trade-generator.js b/modules/trade-generator.js index 89944532..ce3d2c90 100644 --- a/modules/trade-generator.js +++ b/modules/trade-generator.js @@ -65,25 +65,25 @@ window.Trade = (function () { const distance = Math.hypot(x - x0, y - y0); const transportFee = (distance / DEFAULT_TRANSPORT_DIST) ** 0.8 || 0.02; - const salesTax = states[state].salesTax || 0.1; + const salesTax = states[state].salesTax || 0; for (const resourceId in produced) { const production = produced[resourceId]; const quantity = production - consumption; if (quantity < 1) continue; - const {value} = Resources.get(+resourceId); + const {value, name} = Resources.get(+resourceId); const basePrice = value * quantity; - const transportCost = rn((value * quantity) ** 0.5 * transportFee, 2); + const transportCost = rn((value * quantity) ** 0.5 * transportFee, 1); const netPrice = basePrice - transportCost; - const stateIncome = rn(netPrice * salesTax, 2); - const burgIncome = rn(netPrice - stateIncome, 2); + const stateIncome = rn(netPrice * salesTax, 1); + const burgIncome = rn(netPrice - stateIncome, 1); if (burgIncome < 1 || burgIncome < basePrice / 4) continue; - trade.deals.push({resourceId: +resourceId, quantity, exporter: i, tradeCenter: centerId, basePrice, transportCost, stateIncome, burgIncome}); + trade.deals.push({resourceId: +resourceId, name, quantity, exporter: i, tradeCenter: centerId, basePrice, transportCost, stateIncome, burgIncome}); if (!goods[resourceId]) goods[resourceId] = quantity; else goods[resourceId] += quantity; diff --git a/modules/ui/burg-editor.js b/modules/ui/burg-editor.js index 809f00f6..2395061f 100644 --- a/modules/ui/burg-editor.js +++ b/modules/ui/burg-editor.js @@ -141,13 +141,13 @@ function editBurg(id) { function getExport(dealsArray) { if (!dealsArray.length) return 'no'; - const totalIncome = d3.sum(dealsArray.map((deal) => deal.burgIncome)); + const totalIncome = rn(d3.sum(dealsArray.map((deal) => deal.burgIncome))); const exported = dealsArray.map((deal) => { const {resourceId, quantity, burgIncome} = deal; const {name, unit, icon} = Resources.get(resourceId); const unitName = quantity > 1 ? unit + 's' : unit; - return ` + return ` ${quantity} `;