Merge pull request #803 from DanielNoord/exposedata

Couple of new functions
This commit is contained in:
Daniël van Noord
2021-05-06 21:14:38 +02:00
committed by GitHub
11 changed files with 55 additions and 17 deletions

View File

@@ -1,5 +1,4 @@
{
"recursive": true,
"require": ["esm", "ts-node/register"],
"reporter": "min"
"require": ["esm", "ts-node/register"]
}

View File

@@ -19,7 +19,8 @@ max(cost - cookies in bank, 0)/cps + cost/Δ cps
If the relevant option is enabled, CM will color-code each of them based on their value. CM compares the PP across all possible buy options: if a buy 10 option is better than any of the buy 1 options Cookie Monster will colour them accordingly. Note that sometimes it is better to buy 10 of a building than to buy only 1, CM will also indicate this!
The following standard colours are used:
<details>
<summary>The following standard colours are used:</summary>
* Light Blue: (upgrades) This item has a better PP than the best building to buy
* Green: This building has the best PP
@@ -29,6 +30,8 @@ The following standard colours are used:
* Purple: This building is worse than the top 10 of best PP's
* Gray: This item does not have a PP, often this means that there is no change to CPS
</details>
Note: For this index, **lower is better**, meaning a building with a PP of 1 is more interesting than one with a PP of 3.
## Using
@@ -59,6 +62,12 @@ Before submitting a bug, make sure to give a shot at the latest version of the a
All suggestions are welcome, even the smallest ones.
## For developers
Cookie Monster exposes some of the data it creates to the global scope. This data can be found in the `CookieMonsterData` object after loading Cookie Monster.
Currently we exposes relevant data for buildings and upgrades (PP, colour and bonus income). If you would like us to add any aditional data, please feel free to open an issue or create a PR doing so!
## Contributing
To contribute you can fork and clone the repository and run `npm install`.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@
],
"scripts": {
"eslint-src": "eslint src test",
"build": "run-s eslint-src pack-prod test",
"build": "run-s eslint-src test pack-prod",
"build-test": "run-s pack-dev",
"pack-prod": "webpack --env production",
"pack-dev": "webpack",
@@ -20,7 +20,7 @@
},
"repository": {
"type": "git",
"url": "git+https://github.com/Aktanusa/CookieMonster.git"
"url": "git+https://github.com/CookieMonsterTeam/CookieMonster"
},
"license": "MIT",
"author": {
@@ -39,9 +39,9 @@
}
],
"bugs": {
"url": "https://github.com/Aktanusa/CookieMonster/issues"
"url": "https://github.com/CookieMonsterTeam/CookieMonster/issues"
},
"homepage": "https://github.com/Aktanusa/CookieMonster#readme",
"homepage": "https://github.com/CookieMonsterTeam/CookieMonster#readme",
"devDependencies": {
"@types/chai": "^4.2.17",
"@types/mocha": "^8.2.2",

View File

@@ -3,6 +3,7 @@ import GetWrinkConfigBank from '../../Disp/HelperFunctions/GetWrinkConfigBank';
import { ColourGray } from '../../Disp/VariablesAndData';
import {
CacheMinPP, // eslint-disable-line no-unused-vars
CacheMinPPBulk, // eslint-disable-line no-unused-vars
CacheObjects1,
CacheObjects10,
CacheObjects100,
@@ -38,7 +39,8 @@ function CachePP(target, amount) {
Math.max(price - (Game.cookies + GetWrinkConfigBank()), 0) / Game.cookiesPs +
price / target[i].bonus;
} else target[i].pp = price / target[i].bonus; // eslint-disable-line no-param-reassign
if (!(CMOptions.PPRigidelMode && amount === 1)) CachePPArray.push([target[i].pp, amount]);
if (!(CMOptions.PPRigidelMode && amount === 1))
CachePPArray.push([target[i].pp, amount, price]);
});
}
@@ -58,16 +60,17 @@ export default function CacheBuildingsPP() {
// Set CM.Cache.min to best non-excluded buidliung
CachePPArray.sort((a, b) => a[0] - b[0]);
let indexOfMin = 0;
let indexOfMin = CMOptions.PPExcludeTop;
if (CMOptions.PPOnlyConsiderBuyable) {
while (CachePPArray[indexOfMin][1] > Game.cookies) {
while (CachePPArray[indexOfMin][2] > Game.cookies) {
indexOfMin += 1;
if (CachePPArray.length === indexOfMin + 1) {
break;
}
}
}
CacheMinPP = CachePPArray[CMOptions.PPExcludeTop][indexOfMin];
CacheMinPP = CachePPArray[indexOfMin][0];
CacheMinPPBulk = CachePPArray[indexOfMin][1];
CacheColour(CacheObjects1, 1);
CacheColour(CacheObjects10, 10);

View File

@@ -1,6 +1,7 @@
/**
* Section: Functions related to caching PP */
import { CacheObjects1, CacheObjects10, CacheObjects100, CacheUpgrades } from '../VariablesAndData';
import CacheBuildingsPP from './Building';
import CacheUpgradePP from './Upgrade';
@@ -11,4 +12,11 @@ import CacheUpgradePP from './Upgrade';
export default function CachePP() {
CacheBuildingsPP();
CacheUpgradePP();
window.CookieMonsterData.Objects1 = JSON.parse(JSON.stringify(CacheObjects1));
window.CookieMonsterData.Objects10 = JSON.parse(JSON.stringify(CacheObjects10));
window.CookieMonsterData.Objects100 = JSON.parse(JSON.stringify(CacheObjects100));
window.CookieMonsterData.Upgrades = [];
Object.entries(CacheUpgrades).forEach((i) => {
window.CookieMonsterData.Upgrades[i[0]] = JSON.parse(JSON.stringify(i[1]));
});
}

View File

@@ -69,6 +69,8 @@ export let CacheTimeTillNextPrestige = 0;
/** Stores lowest PP value */
export let CacheMinPP = 0;
/** Stores lowest PP value category */
export let CacheMinPPBulk = 0;
/** Stores all PP values of all buildings for all buy settings (1, 10, 100) */
export let CachePPArray = [];

View File

@@ -1,4 +1,9 @@
import { CacheObjects1, CacheObjects10, CacheObjects100 } from '../../Cache/VariablesAndData';
import {
CacheMinPPBulk,
CacheObjects1,
CacheObjects10,
CacheObjects100,
} from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import BuildingSell from '../../Sim/SimulationEvents/SellBuilding';
import Beautify from '../BeautifyAndFormatting/Beautify';
@@ -24,11 +29,17 @@ export default function UpdateBuildings() {
else if (target === 10) target = CacheObjects10;
else if (target === 100) target = CacheObjects100;
// Remove colour if applied
l(`storeBulk1`).style.removeProperty('color');
l(`storeBulk10`).style.removeProperty('color');
l(`storeBulk100`).style.removeProperty('color');
if (Game.buyMode === 1) {
if (CMOptions.BuildColour === 1) {
Object.keys(target).forEach((i) => {
l(`productPrice${Game.Objects[i].id}`).style.color = CMOptions[`Colour${target[i].color}`];
});
l(`storeBulk${CacheMinPPBulk}`).style.color = CMOptions.ColourGreen;
} else {
Object.keys(Game.Objects).forEach((i) => {
l(`productPrice${Game.Objects[i].id}`).style.removeProperty('color');

View File

@@ -20,7 +20,10 @@ export function CreateFavicon() {
export function UpdateFavicon() {
if (CMOptions.Favicon === 1 && LastGoldenCookieState > 0) {
if (CacheSpawnedGoldenShimmer.wrath)
l('CMFavicon').href = 'https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico';
else l('CMFavicon').href = 'https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico';
l('CMFavicon').href =
'https://CookieMonsterTeam.github.io/CookieMonster/favicon/wrathCookie.ico';
else
l('CMFavicon').href =
'https://CookieMonsterTeam.github.io/CookieMonster/favicon/goldenCookie.ico';
} else l('CMFavicon').href = 'https://orteil.dashnet.org/cookieclicker/favicon.ico';
}

View File

@@ -24,6 +24,9 @@ import AddWrinklerAreaDetect from './WrinklerArea/AddDetectArea';
* Initialization loop of Cookie Monster
*/
export default function InitializeCookieMonster() {
// Create global data object
window.CookieMonsterData = {};
InitData();
CacheStatsCookies();
InitCache();