Spaces:
Running
Running
export default (data, map) => { | |
// uncomment the console.log statement to work on this section | |
// still very much a WIP | |
// will optimize once all data structions are properties are identified properly | |
function log(...a) { | |
//console.log(...a); | |
} | |
let misc = {}; | |
let offset = 0; | |
misc.firstEntry = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'firstEntry', misc.firstEntry); | |
misc.gameMode = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gameMode', misc.gameMode); | |
misc.rotation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rotation', misc.rotation); | |
misc.baseYear = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'baseYear', misc.baseYear); | |
misc.simCycle = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'simCycle', misc.simCycle); | |
misc.totalFunds = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'totalFunds', misc.totalFunds); | |
misc.totalBonds = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'totalBonds', misc.totalBonds); | |
misc.gameLevel = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gameLevel', misc.gameLevel); | |
misc.cityStatus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityStatus', misc.cityStatus); | |
misc.cityValue = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityValue', misc.cityValue); | |
misc.landValue = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'landValue', misc.landValue); | |
misc.crimeCount = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'crimeCount', misc.crimeCount); | |
misc.trafficCount = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'trafficCount', misc.trafficCount); | |
misc.pollution = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'pollution', misc.pollution); | |
misc.cityFame = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityFame', misc.cityFame); | |
misc.advertising = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'advertising', misc.advertising); | |
misc.garbage = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'garbage', misc.garbage); | |
misc.workerPercent = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'workerPercent', misc.workerPercent); | |
misc.workerHealth = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'workerHealth', misc.workerHealth); | |
misc.workerEQ = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'workerEQ', misc.workerEQ); | |
misc.nationalPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalPopulation', misc.nationalPopulation); | |
misc.nationalValue = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalValue', misc.nationalValue); | |
misc.nationalTax = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalTax', misc.nationalTax); | |
misc.nationalTrend = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalTrend', misc.nationalTrend); | |
misc.heat = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'heat', misc.heat); | |
misc.wind = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'wind', misc.wind); | |
misc.humid = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'humid', misc.humid); | |
misc.weatherTrend = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'weatherTrend', misc.weatherTrend); | |
misc.newDisaster = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'newDisaster', misc.newDisaster); | |
misc.oldResidentialPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'oldResidentialPopulation', misc.oldResidentialPopulation); | |
misc.rewards = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rewards', misc.rewards); | |
// graph data | |
misc.graphs = {}; | |
misc.graphs.population = []; | |
misc.graphs.health = []; | |
misc.graphs.education = []; | |
misc.graphs.industry = []; | |
for (let i = 0; i < 20; i++) { | |
misc.graphs.population[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.population['+i+']', misc.graphs.population[i] ); | |
misc.graphs.health[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.health['+i+']', misc.graphs.health[i] ); | |
misc.graphs.education[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.education['+i+']', misc.graphs.education[i] ); | |
} | |
for (let i = 0; i < 33; i++) { | |
misc.graphs.industry[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.industry['+i+']', misc.graphs.industry[i] ); | |
} | |
// counts of each tile ID | |
misc.tileCounts = []; | |
for (let i = 0; i < 256; i++) { | |
misc.tileCounts[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'tileCounts['+i+']', misc.tileCounts[i] ); | |
} | |
// population for each zone type | |
misc.zonePop = []; | |
for (let i = 0; i < 8; i++) { | |
misc.zonePop[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'zonePop['+i+']', misc.zonePop[i] ); | |
} | |
// bond rates | |
misc.bondRate = []; | |
for (let i = 0; i < 50; i++) { | |
misc.bondRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'bondRate['+i+']', misc.bondRate[i] ); | |
} | |
// 4x4 of neighbors | |
// lower left, upper left, upper right, bottom right | |
misc.neighbors = []; | |
for (let i = 0; i < 4; i++) { | |
misc.neighbors[i] = {}; | |
misc.neighbors[i].name = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].name', misc.neighbors[i].name); | |
misc.neighbors[i].population = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].population', misc.neighbors[i].population); | |
misc.neighbors[i].value = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].value', misc.neighbors[i].value); | |
misc.neighbors[i].fame = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].fame', misc.neighbors[i].fame); | |
} | |
misc.rci = {}; | |
misc.rci.residential = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rci.residential', misc.rci.residential); | |
misc.rci.commercial = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rci.commercial', misc.rci.commercial); | |
misc.rci.industrial = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rci.industrial', misc.rci.industrial); | |
misc.unknown0 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown0', misc.unknown0); | |
misc.unknown1 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown1', misc.unknown1); | |
misc.unknown2 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown2', misc.unknown2); | |
misc.unknown3 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown3', misc.unknown3); | |
misc.unknown4 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown4', misc.unknown4); | |
misc.inventions = {}; | |
misc.inventions.gasPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.gasPower', misc.inventions.gasPower); | |
misc.inventions.nuclearPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.nuclearPower', misc.inventions.nuclearPower); | |
misc.inventions.solarPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.solarPower', misc.inventions.solarPower); | |
misc.inventions.windPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.windPower', misc.inventions.windPower); | |
misc.inventions.microwavePower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.microwavePower', misc.inventions.microwavePower); | |
misc.inventions.fusionPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.fusionPower', misc.inventions.fusionPower); | |
misc.inventions.airport = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.airport', misc.inventions.airport); | |
misc.inventions.highways = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.highways', misc.inventions.highways); | |
misc.inventions.buses = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.buses', misc.inventions.buses); | |
misc.inventions.subways = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.subways', misc.inventions.subways); | |
misc.inventions.waterTreatment = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.waterTreatment', misc.inventions.waterTreatment); | |
misc.inventions.desalinisation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.desalinisation', misc.inventions.desalinisation); | |
misc.inventions.plymouth = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.plymouth', misc.inventions.plymouth); | |
misc.inventions.forest = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.forest', misc.inventions.forest); | |
misc.inventions.darco = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.darco', misc.inventions.darco); | |
misc.inventions.launch = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.launch', misc.inventions.launch); | |
misc.inventions.highways2 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.highways2', misc.inventions.highways2); | |
log('current offset: 0x'+offset.toString(16).padStart(4, '0')); | |
log('budget start'); | |
log('==='); | |
misc.budget = {}; | |
misc.budget.propertyTax = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.propertyTax[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.propertyTax['+i+']', misc.budget.propertyTax[i] ); | |
} | |
offset = 0x077c; | |
misc.budget.residentialTaxRate = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.residentialTaxRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.residentialTaxRate['+i+']', misc.budget.residentialTaxRate[i] ); | |
} | |
offset = 0x07e8; | |
misc.budget.commercialTaxRate = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.commercialTaxRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.commercialTaxRate['+i+']', misc.budget.commercialTaxRate[i] ); | |
} | |
offset = 0x0854; | |
misc.budget.industrialTaxRate = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.industrialTaxRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.industrialTaxRate['+i+']', misc.budget.industrialTaxRate[i] ); | |
} | |
offset = 0x08c0; | |
misc.budget.ordinances = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.ordinances[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.ordinances['+i+']', misc.budget.ordinances[i] ); | |
} | |
offset = 0x0930; | |
misc.budget.bonds = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.bonds[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.bonds['+i+']', misc.budget.bonds[i] ); | |
} | |
// city services info | |
misc.cityServicesBudget = []; | |
for (let i = 0; i < 27; i++) { | |
misc.cityServicesBudget[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityServicesBudget['+i+']', misc.cityServicesBudget[i] ); | |
} | |
offset = 0x0998; | |
misc.budget.police = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.police[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.police['+i+']', misc.budget.police[i] ); | |
} | |
offset = 0x0a04; | |
misc.budget.fire = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.fire[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.fire['+i+']', misc.budget.fire[i] ); | |
} | |
offset = 0x0a70; | |
misc.budget.health = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.health[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.health['+i+']', misc.budget.health[i] ); | |
} | |
offset = 0x0adc; | |
misc.budget.schools = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.schools[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.schools['+i+']', misc.budget.schools[i] ); | |
} | |
offset = 0x0b48; | |
misc.budget.colleges = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.colleges[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.colleges['+i+']', misc.budget.colleges[i] ); | |
} | |
offset = 0x0bb4; | |
misc.budget.roads = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.roads[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.roads['+i+']', misc.budget.roads[i] ); | |
} | |
offset = 0x0c20; | |
misc.budget.highways = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.highways[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.highways['+i+']', misc.budget.highways[i] ); | |
} | |
offset = 0x0c8c; | |
misc.budget.bridges = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.bridges[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.bridges['+i+']', misc.budget.bridges[i] ); | |
} | |
offset = 0x0cf8; | |
misc.budget.rail = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.rail[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.rail['+i+']', misc.budget.rail[i] ); | |
} | |
offset = 0x0d64; | |
misc.budget.subway = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.subway[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.subway['+i+']', misc.budget.subway[i] ); | |
} | |
offset = 0x0dd0; | |
misc.budget.tunnel = []; | |
for (let i = 0; i < 27; i++) { | |
misc.budget.tunnel[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.tunnel['+i+']', misc.budget.tunnel[i] ); | |
} | |
log('budget end'); | |
log('current offset: 0x'+offset.toString(16).padStart(4, '0')); | |
log('==='); | |
offset = 0x0e3c; | |
misc.yearEnd = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'yearEnd', misc.yearEnd); | |
misc.globalSeaLevel = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'globalSeaLevel', misc.globalSeaLevel); | |
misc.terrainCoast = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'terrainCoast', misc.terrainCoast); | |
misc.terrainRiver = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'terrainRiver', misc.terrainRiver); | |
misc.military = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'military', misc.military); | |
misc.newspaperList = []; | |
for (let i = 0; i < 21; i++) { | |
misc.newspaperList[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'newspaperList['+i+']', misc.newspaperList[i]); | |
} | |
offset = 0x0fa0; | |
log('==='); | |
misc.ordinances = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'ordinances', misc.ordinances); | |
misc.unemployed = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unemployed', misc.unemployed); | |
misc.militaryCount = []; | |
for (let i = 0; i < 8; i++) { | |
misc.militaryCount[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'militaryCount['+i+']', misc.militaryCount[i]); | |
} | |
offset = 0x0fe8; | |
log('==='); | |
misc.subwayCount = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'subwayCount', misc.subwayCount); | |
misc.gameSpeed = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gameSpeed', misc.gameSpeed); | |
misc.options = {}; | |
misc.options.autoBudget = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.autoBudget', misc.options.autoBudget); | |
misc.options.autoGoto = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.autoGoto', misc.options.autoGoto); | |
misc.options.userSoundOn = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.userSoundOn', misc.options.userSoundOn); | |
misc.options.userMusicOn = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.userMusicOn', misc.options.userMusicOn); | |
misc.options.noDisasters = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.noDisasters', misc.options.noDisasters); | |
misc.options.paperDeliver = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.paperDeliver', misc.options.paperDeliver); | |
misc.options.paperExtra = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.paperExtra', misc.options.paperExtra); | |
misc.options.paperChoice = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.paperChoice', misc.options.paperChoice); | |
misc.unknown1 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown1', misc.unknown1 ); | |
misc.camera = {}; | |
misc.camera.zoom = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'camera.zoom', misc.camera.zoom); | |
misc.camera.cityCenterX = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'camera.cityCenterX', misc.camera.cityCenterX); | |
misc.camera.cityCenterY = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'camera.cityCenterY', misc.camera.cityCenterY); | |
misc.globalArcoPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'globalArcoPopulation', misc.globalArcoPopulation); | |
misc.connectTiles = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'connectTiles', misc.connectTiles); | |
misc.teamsActive = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'teamsActive', misc.teamsActive); | |
misc.totalPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'totalPopulation', misc.totalPopulation); | |
misc.industryBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'industryBonus', misc.industryBonus); | |
misc.polluteBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'polluteBonus', misc.polluteBonus); | |
misc.oldArrest = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'oldArrest', misc.oldArrest); | |
misc.policeBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'policeBonus', misc.policeBonus); | |
misc.disasterObject = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'disasterObject', misc.disasterObject); | |
misc.currentDisaster = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'currentDisaster', misc.currentDisaster); | |
misc.disasterActive = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'disasterActive', misc.disasterActive); | |
misc.gotoDisaster = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gotoDisaster', misc.gotoDisaster); | |
misc.sewerBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'sewerBonus', misc.sewerBonus); | |
misc.raw = data; | |
map._segmentData.MISC = misc; | |
}; | |
let gameMode = { | |
0x00: 'terrainEdit', | |
0x01: 'city', | |
0x02: 'disaster', | |
}; | |
let offeredMilitary = { | |
0x00: false, | |
0x01: true, | |
}; | |
let militaryType = { | |
0x02: 'army', | |
0x03: 'air', | |
0x04: 'naval', | |
0x05: 'missile', | |
}; | |
let gameSpeed = { | |
0x01: 'Paused', | |
0x02: 'Turtle', | |
0x03: 'Llama', | |
0x04: 'Cheetah', | |
0x05: 'African Swallow', | |
}; | |
let weatherTrends = { | |
0x00: 'Cold', | |
0x01: 'Clear', | |
0x02: 'Hot', | |
0x03: 'Foggy', | |
0x04: 'Chilly', | |
0x05: 'Overcast', | |
0x06: 'Snow', | |
0x07: 'Rain', | |
0x08: 'Windy', | |
0x09: 'Blizzard', | |
0x0A: 'Hurricane', | |
0x0B: 'Tornado', | |
}; | |
let disasters = { | |
0x00: 'None', | |
0x01: 'Fire', | |
0x02: 'Flood', | |
0x03: 'Riot', | |
0x04: 'Toxic Spill', | |
0x05: 'Air Crash', | |
0x06: 'Quake', | |
0x07: 'Tornado', | |
0x08: 'Monster', | |
0x09: 'Meltdown', | |
0x0A: 'Microwave', | |
0x0B: 'Volcano', | |
0x0C: 'Firestorm', | |
0x0D: 'Mass Riots', | |
0x0E: 'Mass Floods', | |
0x0F: 'Pollution Accident', | |
0x10: 'Hurricane', | |
0x11: 'Helicopter Crash', | |
0x12: 'Plane Crash', | |
}; |