46
.eslintrc.js
46
.eslintrc.js
@@ -1,46 +0,0 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true,
|
||||
},
|
||||
globals: {
|
||||
Game: 'writable',
|
||||
l: 'readonly',
|
||||
b64_to_utf8: 'readonly',
|
||||
utf8_to_b64: 'readonly',
|
||||
BeautifyAll: 'readonly',
|
||||
PlaySound: 'readonly',
|
||||
},
|
||||
extends: ['airbnb-base', 'plugin:prettier/recommended'],
|
||||
parserOptions: {
|
||||
ecmaVersion: 12,
|
||||
},
|
||||
plugins: ['@typescript-eslint'],
|
||||
overrides: [
|
||||
{
|
||||
files: ['src/**/*.{ts,tsx}'],
|
||||
extends: ['plugin:@typescript-eslint/recommended'],
|
||||
parser: '@typescript-eslint/parser',
|
||||
rules: {
|
||||
'import/extensions': 'off', // To allow importing .ts without errors
|
||||
'import/no-unresolved': 'off', // To allow importing .ts without errors
|
||||
},
|
||||
},
|
||||
],
|
||||
ignorePatterns: ['*CookieMonster*.js', 'dist/*', 'node_modules/*'],
|
||||
rules: {
|
||||
'import/no-mutable-exports': 'off', // We need to this throughout Cookie Monster
|
||||
'no-plusplus': ['error', { allowForLoopAfterthoughts: true }],
|
||||
'func-names': 'off', // To allow unnamed arrow functions
|
||||
'prefer-destructuring': ['error', { object: true, array: false }], // Importing arrays and then destructuring them seems to fail
|
||||
'max-len': [
|
||||
1,
|
||||
{
|
||||
code: 100,
|
||||
ignoreComments: true,
|
||||
ignoreStrings: true,
|
||||
ignoreTemplateLiterals: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
70
.eslintrc.json
Normal file
70
.eslintrc.json
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es2021": true
|
||||
},
|
||||
"globals": {
|
||||
"Game": "writable",
|
||||
"l": "readonly",
|
||||
"b64_to_utf8": "readonly",
|
||||
"utf8_to_b64": "readonly",
|
||||
"BeautifyAll": "readonly",
|
||||
"PlaySound": "readonly"
|
||||
},
|
||||
"extends": [
|
||||
"airbnb-base",
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 12
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"src/**/*.{ts,tsx}"
|
||||
],
|
||||
"extends": [
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"rules": {
|
||||
"import/extensions": "off", // To allow importing .ts without errors
|
||||
"import/no-unresolved": "off" // To allow importing .ts without errors
|
||||
}
|
||||
}
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"*CookieMonster*.js",
|
||||
"dist/*",
|
||||
"node_modules/*"
|
||||
],
|
||||
"rules": {
|
||||
"import/no-mutable-exports": "off", // We need to this throughout Cookie Monster
|
||||
"no-plusplus": [
|
||||
"error",
|
||||
{
|
||||
"allowForLoopAfterthoughts": true
|
||||
}
|
||||
],
|
||||
"func-names": "off", // To allow unnamed arrow functions
|
||||
"prefer-destructuring": [
|
||||
"error",
|
||||
{
|
||||
"object": true,
|
||||
"array": false
|
||||
}
|
||||
], // Importing arrays and then destructuring them seems to fail
|
||||
"max-len": [
|
||||
1,
|
||||
{
|
||||
"code": 100,
|
||||
"ignoreComments": true,
|
||||
"ignoreStrings": true,
|
||||
"ignoreTemplateLiterals": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
26
.github/workflows/CI.yml
vendored
26
.github/workflows/CI.yml
vendored
@@ -1,31 +1,29 @@
|
||||
name: CI
|
||||
on: pull_request
|
||||
jobs:
|
||||
Check_ESLint:
|
||||
Check_linting_test_and_build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v2
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Run ESLint
|
||||
run: |
|
||||
npm install
|
||||
npx eslint src
|
||||
Check_main_file:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
run: npx eslint src
|
||||
- name: Run Mocha tests
|
||||
run: npx mocha
|
||||
- name: Check if CookieMonster.js is built correctly
|
||||
run: |
|
||||
npm install
|
||||
npx webpack -o ./test --env production
|
||||
if cmp <(head -n 2 dist/CookieMonster.js) <(head -n 2 test/CookieMonster.js); then
|
||||
npx webpack -o ./tmp --env production
|
||||
if cmp <(head -n 2 dist/CookieMonster.js) <(head -n 2 tmp/CookieMonster.js); then
|
||||
echo '### SUCCESS: CookieMonster is correctly built! ###'
|
||||
else
|
||||
echo '### WARNING: CookieMonster.js does not seem to be correct. Make sure to run "npm run build" after saving all your changes! ###'
|
||||
exit 1
|
||||
fi
|
||||
if cmp <(head -n 2 CookieMonster.js) <(head -n 2 test/CookieMonster.js); then
|
||||
if cmp <(head -n 2 CookieMonster.js) <(head -n 2 tmp/CookieMonster.js); then
|
||||
echo '### SUCCESS: CookieMonster is correctly built! ###'
|
||||
else
|
||||
echo '### WARNING: Make sure to move the file from the /dist folder to the main folder. Otherwise Github Pages won't notice it ###'
|
||||
echo '### WARNING: CookieMonster.js does not seem to be correct. Make sure to run "npm run build" after saving all your changes! ###'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
4
.mocharc.json
Normal file
4
.mocharc.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"recursive": true,
|
||||
"require": "esm"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
3369
CookieMonsterBeta.js
3369
CookieMonsterBeta.js
File diff suppressed because it is too large
Load Diff
2
dist/CookieMonster.js
vendored
2
dist/CookieMonster.js
vendored
File diff suppressed because one or more lines are too long
2
dist/CookieMonster.js.map
vendored
2
dist/CookieMonster.js.map
vendored
File diff suppressed because one or more lines are too long
1211
package-lock.json
generated
1211
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -13,11 +13,12 @@
|
||||
"scripts": {
|
||||
"copy-file": "cp dist/CookieMonster.js CookieMonster.js",
|
||||
"eslint-src": "eslint src",
|
||||
"build": "run-s eslint-src pack-prod remove-comment copy-file",
|
||||
"build": "run-s eslint-src pack-prod remove-comment copy-file test",
|
||||
"build-test": "run-s pack-dev",
|
||||
"pack-prod": "webpack --env production",
|
||||
"pack-dev": "webpack",
|
||||
"remove-comment": "sed -i '' -e '/\\/\\/# sourceMappingURL.*/d' dist/CookieMonster.js"
|
||||
"remove-comment": "sed -i '' -e '/\\/\\/# sourceMappingURL.*/d' dist/CookieMonster.js",
|
||||
"test": "mocha"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -46,13 +47,17 @@
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^4.21.0",
|
||||
"@typescript-eslint/parser": "^4.21.0",
|
||||
"chai": "^4.3.4",
|
||||
"eslint": "^7.23.0",
|
||||
"eslint-config-airbnb-base": "^14.2.1",
|
||||
"eslint-config-prettier": "^8.1.0",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"esm": "^3.2.25",
|
||||
"mocha": "^8.3.2",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"prettier": "2.2.1",
|
||||
"sinon": "^10.0.0",
|
||||
"ts-loader": "^8.1.0",
|
||||
"typescript": "^4.2.3",
|
||||
"webpack": "^5.24.4",
|
||||
|
||||
@@ -15,6 +15,7 @@ import {
|
||||
CacheGoldenAndWrathCookiesMults,
|
||||
CacheStatsCookies,
|
||||
} from './Stats/Stats';
|
||||
import AllAmountTillNextAchievement from './TillNextAchievement/AllAmountTillNextAchievement';
|
||||
import {
|
||||
CacheAverageCookiesFromClicks,
|
||||
HeavenlyChipsDiff,
|
||||
@@ -39,6 +40,7 @@ export default function InitCache() {
|
||||
ClickTimes[ClickTimes.length - 1] * 20,
|
||||
);
|
||||
CacheHeavenlyChipsPS();
|
||||
AllAmountTillNextAchievement();
|
||||
CacheAvgCPS();
|
||||
CacheIncome();
|
||||
CacheBuildingsPrices();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { FormatTime } from '../Disp/BeautifyAndFormatting/BeautifyFormatting';
|
||||
import FormatTime from '../Disp/BeautifyAndFormatting/FormatTime';
|
||||
import GetCPS from '../Disp/HelperFunctions/GetCPS';
|
||||
import CacheAvgCPS from './CPS/CPS';
|
||||
import CacheCurrWrinklerCPS from './CPS/CurrWrinklerCPS';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/** Functions related to the Dragon */
|
||||
|
||||
import { Beautify } from '../../Disp/BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../Disp/BeautifyAndFormatting/Beautify';
|
||||
import CopyData from '../../Sim/SimulationData/CopyData';
|
||||
import { SimDoSims, SimObjects } from '../../Sim/VariablesAndData';
|
||||
import {
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
CacheObjects1,
|
||||
CacheObjects10,
|
||||
CacheObjects100,
|
||||
CacheObjectsNextAchievement,
|
||||
CacheUpgrades,
|
||||
} from '../VariablesAndData';
|
||||
|
||||
@@ -82,6 +83,13 @@ export function CacheBuildingsPrices() {
|
||||
Game.Objects[i].free,
|
||||
100,
|
||||
);
|
||||
CacheObjectsNextAchievement[i].price = BuildingGetPrice(
|
||||
Game.Objects[i],
|
||||
Game.Objects[i].basePrice,
|
||||
Game.Objects[i].amount,
|
||||
Game.Objects[i].free,
|
||||
CacheObjectsNextAchievement[i].AmountNeeded,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -7,12 +7,6 @@ import {
|
||||
shortScaleAbbreviated,
|
||||
} from '../../Data/Scales.ts';
|
||||
import { BackupFunctions } from '../../Main/VariablesAndData';
|
||||
import {
|
||||
ColourGreen,
|
||||
ColourOrange,
|
||||
ColourRed,
|
||||
ColourYellow,
|
||||
} from '../VariablesAndData';
|
||||
|
||||
/**
|
||||
* This function returns formats number based on the Scale setting
|
||||
@@ -21,7 +15,7 @@ import {
|
||||
* @param {number} forced Used to force (type 3) in certains cases
|
||||
* @returns {string} Formatted number
|
||||
*/
|
||||
export function Beautify(num, floats, forced) {
|
||||
export default function Beautify(num, floats, forced) {
|
||||
const decimals = CMOptions.ScaleDecimals + 1;
|
||||
if (num === Infinity) {
|
||||
return 'Infinity';
|
||||
@@ -93,66 +87,3 @@ export function Beautify(num, floats, forced) {
|
||||
console.log(`Could not beautify number with Cookie Monster Beautify: ${num}`); // eslint-disable-line no-console
|
||||
return BackupFunctions.Beautify(num, floats);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function returns time as a string depending on TimeFormat setting
|
||||
* @param {number} time Time to be formatted
|
||||
* @param {number} longFormat 1 or 0
|
||||
* @returns {string} Formatted time
|
||||
*/
|
||||
export function FormatTime(time, longFormat) {
|
||||
let formattedTime = time;
|
||||
if (time === Infinity) return time;
|
||||
if (time < 0) return 'Negative time period';
|
||||
formattedTime = Math.ceil(time);
|
||||
const y = Math.floor(formattedTime / 31557600);
|
||||
const d = Math.floor((formattedTime % 31557600) / 86400);
|
||||
const h = Math.floor((formattedTime % 86400) / 3600);
|
||||
const m = Math.floor((formattedTime % 3600) / 60);
|
||||
const s = Math.floor(formattedTime % 60);
|
||||
let str = '';
|
||||
if (CMOptions.TimeFormat) {
|
||||
if (formattedTime > 3155760000) return 'XX:XX:XX:XX:XX';
|
||||
str += `${(y < 10 ? '0' : '') + y}:`;
|
||||
str += `${(d < 10 ? '0' : '') + d}:`;
|
||||
str += `${(h < 10 ? '0' : '') + h}:`;
|
||||
str += `${(m < 10 ? '0' : '') + m}:`;
|
||||
str += (s < 10 ? '0' : '') + s;
|
||||
} else {
|
||||
if (formattedTime > 777600000)
|
||||
return longFormat ? 'Over 9000 days!' : '>9000d';
|
||||
str +=
|
||||
y > 0
|
||||
? `${y + (longFormat ? (y === 1 ? ' year' : ' years') : 'y')}, ` // eslint-disable-line no-nested-ternary
|
||||
: '';
|
||||
str +=
|
||||
d > 0 ? `${d + (longFormat ? (d === 1 ? ' day' : ' days') : 'd')}, ` : ''; // eslint-disable-line no-nested-ternary
|
||||
if (str.length > 0 || h > 0)
|
||||
str += `${h + (longFormat ? (h === 1 ? ' hour' : ' hours') : 'h')}, `; // eslint-disable-line no-nested-ternary
|
||||
if (str.length > 0 || m > 0)
|
||||
str += `${m + (longFormat ? (m === 1 ? ' minute' : ' minutes') : 'm')}, `; // eslint-disable-line no-nested-ternary
|
||||
str += s + (longFormat ? (s === 1 ? ' second' : ' seconds') : 's'); // eslint-disable-line no-nested-ternary
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function returns the color to be used for time-strings
|
||||
* @param {number} time Time to be coloured
|
||||
* @returns {{string, string}} {text, color} Both the formatted time and color as strings in an array
|
||||
*/
|
||||
export function GetTimeColour(time) {
|
||||
let color;
|
||||
let text;
|
||||
if (time <= 0) {
|
||||
if (CMOptions.TimeFormat) text = '00:00:00:00:00';
|
||||
else text = 'Done!';
|
||||
color = ColourGreen;
|
||||
} else {
|
||||
text = FormatTime(time);
|
||||
if (time > 300) color = ColourRed;
|
||||
else if (time > 60) color = ColourOrange;
|
||||
else color = ColourYellow;
|
||||
}
|
||||
return { text, color };
|
||||
}
|
||||
43
src/Disp/BeautifyAndFormatting/FormatTime.js
Normal file
43
src/Disp/BeautifyAndFormatting/FormatTime.js
Normal file
@@ -0,0 +1,43 @@
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
|
||||
/**
|
||||
* This function returns time as a string depending on TimeFormat setting
|
||||
* @param {number} time Time to be formatted
|
||||
* @param {number} longFormat 1 or 0
|
||||
* @returns {string} Formatted time
|
||||
*/
|
||||
export default function FormatTime(time, longFormat) {
|
||||
let formattedTime = time;
|
||||
if (time === Infinity) return time;
|
||||
if (time < 0) return 'Negative time period';
|
||||
formattedTime = Math.ceil(time);
|
||||
const y = Math.floor(formattedTime / 31536000);
|
||||
const d = Math.floor((formattedTime % 31536000) / 86400);
|
||||
const h = Math.floor(((formattedTime % 31536000) % 86400) / 3600);
|
||||
const m = Math.floor((((formattedTime % 31536000) % 86400) % 3600) / 60);
|
||||
const s = Math.floor((((formattedTime % 31536000) % 86400) % 3600) % 60);
|
||||
let str = '';
|
||||
if (CMOptions.TimeFormat) {
|
||||
if (formattedTime > 3155760000) return 'XX:XX:XX:XX:XX';
|
||||
str += `${(y < 10 ? '0' : '') + y}:`;
|
||||
str += `${(d < 10 ? '0' : '') + d}:`;
|
||||
str += `${(h < 10 ? '0' : '') + h}:`;
|
||||
str += `${(m < 10 ? '0' : '') + m}:`;
|
||||
str += (s < 10 ? '0' : '') + s;
|
||||
} else {
|
||||
if (formattedTime > 777600000)
|
||||
return longFormat ? 'Over 9000 days!' : '>9000d';
|
||||
str +=
|
||||
y > 0
|
||||
? `${y + (longFormat ? (y === 1 ? ' year' : ' years') : 'y')}, ` // eslint-disable-line no-nested-ternary
|
||||
: '';
|
||||
if (str.length > 0 || d > 0)
|
||||
str += `${d + (longFormat ? (d === 1 ? ' day' : ' days') : 'd')}, `; // eslint-disable-line no-nested-ternary
|
||||
if (str.length > 0 || h > 0)
|
||||
str += `${h + (longFormat ? (h === 1 ? ' hour' : ' hours') : 'h')}, `; // eslint-disable-line no-nested-ternary
|
||||
if (str.length > 0 || m > 0)
|
||||
str += `${m + (longFormat ? (m === 1 ? ' minute' : ' minutes') : 'm')}, `; // eslint-disable-line no-nested-ternary
|
||||
str += s + (longFormat ? (s === 1 ? ' second' : ' seconds') : 's'); // eslint-disable-line no-nested-ternary
|
||||
}
|
||||
return str;
|
||||
}
|
||||
29
src/Disp/BeautifyAndFormatting/GetTimeColour.js
Normal file
29
src/Disp/BeautifyAndFormatting/GetTimeColour.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import {
|
||||
ColourGreen,
|
||||
ColourOrange,
|
||||
ColourRed,
|
||||
ColourYellow,
|
||||
} from '../VariablesAndData';
|
||||
import FormatTime from './FormatTime';
|
||||
|
||||
/**
|
||||
* This function returns the color to be used for time-strings
|
||||
* @param {number} time Time to be coloured
|
||||
* @returns {{string, string}} {text, color} Both the formatted time and color as strings in an array
|
||||
*/
|
||||
export default function GetTimeColour(time) {
|
||||
let color;
|
||||
let text;
|
||||
if (time <= 0) {
|
||||
if (CMOptions.TimeFormat) text = '00:00:00:00:00';
|
||||
else text = 'Done!';
|
||||
color = ColourGreen;
|
||||
} else {
|
||||
text = FormatTime(time);
|
||||
if (time > 300) color = ColourRed;
|
||||
else if (time > 60) color = ColourOrange;
|
||||
else color = ColourYellow;
|
||||
}
|
||||
return { text, color };
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
} from '../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import BuildingSell from '../../Sim/SimulationEvents/SellBuilding';
|
||||
import { Beautify } from '../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../BeautifyAndFormatting/Beautify';
|
||||
import { ColoursOrdering, LastTargetBuildings } from '../VariablesAndData';
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,10 +4,8 @@ import CacheDragonCost from '../../Cache/Dragon/Dragon';
|
||||
import { CacheCostDragonUpgrade } from '../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import CalculateChangeAura from '../../Sim/SimulationEvents/AuraChange';
|
||||
import {
|
||||
Beautify,
|
||||
FormatTime,
|
||||
} from '../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../BeautifyAndFormatting/Beautify';
|
||||
import FormatTime from '../BeautifyAndFormatting/FormatTime';
|
||||
|
||||
/**
|
||||
* This functions adds the two extra lines about CPS and time to recover to the aura picker infoscreen
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import ToggleWrinklerButtons from '../Config/Toggles/ToggleWrinklerButtons';
|
||||
import { CMOptions } from '../Config/VariablesAndData';
|
||||
import { Beautify } from './BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from './BeautifyAndFormatting/Beautify';
|
||||
import UpdateBuildings from './BuildingsUpgrades/Buildings';
|
||||
import UpdateUpgrades from './BuildingsUpgrades/Upgrades';
|
||||
import { UpdateBotBar } from './InfoBars/BottomBar';
|
||||
|
||||
@@ -7,11 +7,10 @@ import {
|
||||
} from '../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import { VersionMajor, VersionMinor } from '../../Data/Moddata.ts';
|
||||
import {
|
||||
Beautify,
|
||||
FormatTime,
|
||||
GetTimeColour,
|
||||
} from '../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../BeautifyAndFormatting/Beautify';
|
||||
import FormatTime from '../BeautifyAndFormatting/FormatTime';
|
||||
import GetTimeColour from '../BeautifyAndFormatting/GetTimeColour';
|
||||
|
||||
import GetCPS from '../HelperFunctions/GetCPS';
|
||||
import GetWrinkConfigBank from '../HelperFunctions/GetWrinkConfigBank';
|
||||
import {
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
import PopAllNormalWrinklers from '../../HelperFunctions/PopWrinklers';
|
||||
import { ClickTimes, CookieTimes } from '../../VariablesAndData';
|
||||
import GetCPS from '../../HelperFunctions/GetCPS';
|
||||
import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import AddMissingAchievements from './CreateMissingAchievements';
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,15 +38,12 @@ import {
|
||||
} from '../../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import ResetBonus from '../../../Sim/SimulationEvents/ResetAscension';
|
||||
import {
|
||||
Beautify,
|
||||
FormatTime,
|
||||
} from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
|
||||
import GetCPS from '../../HelperFunctions/GetCPS';
|
||||
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
|
||||
import { ColourGreen, ColourRed, ColourTextPre } from '../../VariablesAndData';
|
||||
import { StatsListing, StatsHeader, StatsMissDisp } from './CreateDOMElements';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import FormatTime from '../../BeautifyAndFormatting/FormatTime';
|
||||
|
||||
/**
|
||||
* This function creates the "Lucky" section of the stats page
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
CacheTimeTillNextPrestige,
|
||||
} from '../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import { Beautify } from '../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../BeautifyAndFormatting/Beautify';
|
||||
|
||||
/**
|
||||
* This function creates a header object for tooltips.
|
||||
|
||||
@@ -192,7 +192,7 @@ export function TooltipCreateCalculationSection(tooltip) {
|
||||
}
|
||||
if (TooltipType === 'b') {
|
||||
tooltip.appendChild(
|
||||
TooltipCreateHeader('Buildings left till next additional achievement'),
|
||||
TooltipCreateHeader('Buildings (price / PP) left till next achievement'),
|
||||
);
|
||||
tooltip.lastChild.id = 'CMTooltipNextAchievementHeader'; // eslint-disable-line no-param-reassign
|
||||
const production = document.createElement('div');
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
import UpdateTooltips from './UpdateTooltips';
|
||||
import {
|
||||
Beautify,
|
||||
GetTimeColour,
|
||||
} from '../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import {
|
||||
SimpleTooltipElements,
|
||||
TooltipName,
|
||||
@@ -10,6 +6,8 @@ import {
|
||||
} from '../VariablesAndData';
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import BuildingGetPrice from '../../Sim/SimulationEvents/BuyBuilding';
|
||||
import GetTimeColour from '../BeautifyAndFormatting/GetTimeColour';
|
||||
import Beautify from '../BeautifyAndFormatting/Beautify';
|
||||
|
||||
/** All general functions related to creating and updating tooltips */
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import ColourOfPP from '../../../Cache/PP/ColourOfPP';
|
||||
import {
|
||||
CacheObjects1,
|
||||
CacheObjects10,
|
||||
@@ -5,12 +6,11 @@ import {
|
||||
CacheObjectsNextAchievement,
|
||||
} from '../../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import BuyBuildingsBonusIncome from '../../../Sim/SimulationEvents/BuyBuildingBonusIncome';
|
||||
import { SimObjects } from '../../../Sim/VariablesAndData';
|
||||
import {
|
||||
Beautify,
|
||||
FormatTime,
|
||||
GetTimeColour,
|
||||
} from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import FormatTime from '../../BeautifyAndFormatting/FormatTime';
|
||||
import GetTimeColour from '../../BeautifyAndFormatting/GetTimeColour';
|
||||
import GetCPS from '../../HelperFunctions/GetCPS';
|
||||
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
|
||||
import {
|
||||
@@ -101,13 +101,36 @@ export default function Building() {
|
||||
}
|
||||
}
|
||||
|
||||
if (CacheObjectsNextAchievement[TooltipName].AmountNeeded < 101) {
|
||||
const ObjectsTillNext = CacheObjectsNextAchievement[TooltipName];
|
||||
if (ObjectsTillNext.AmountNeeded < 101) {
|
||||
l('CMTooltipProductionLeft').style.marginBottom = '4px';
|
||||
l('CMTooltipNextAchievementHeader').style.display = '';
|
||||
l('CMTooltipNextAchievement').textContent = Beautify(
|
||||
CacheObjectsNextAchievement[TooltipName].AmountNeeded,
|
||||
);
|
||||
|
||||
let PPOfAmount;
|
||||
if (Game.cookiesPs) {
|
||||
PPOfAmount =
|
||||
Math.max(
|
||||
ObjectsTillNext.price - (Game.cookies + GetWrinkConfigBank()),
|
||||
0,
|
||||
) /
|
||||
Game.cookiesPs +
|
||||
ObjectsTillNext.price /
|
||||
BuyBuildingsBonusIncome(TooltipName, ObjectsTillNext.AmountNeeded);
|
||||
} else
|
||||
PPOfAmount =
|
||||
ObjectsTillNext.price /
|
||||
BuyBuildingsBonusIncome(TooltipName, ObjectsTillNext.AmountNeeded);
|
||||
|
||||
l('CMTooltipNextAchievement').textContent = `${Beautify(
|
||||
ObjectsTillNext.AmountNeeded,
|
||||
)} / ${Beautify(ObjectsTillNext.price)} / `;
|
||||
l('CMTooltipNextAchievement').style.color = 'white';
|
||||
const PPFrag = document.createElement('span');
|
||||
if (CMOptions.PPDisplayTime) PPFrag.textContent = FormatTime(PPOfAmount);
|
||||
else PPFrag.textContent = Beautify(PPOfAmount);
|
||||
PPFrag.className =
|
||||
ColourTextPre + ColourOfPP({ pp: PPOfAmount }, ObjectsTillNext.price);
|
||||
l('CMTooltipNextAchievement').appendChild(PPFrag);
|
||||
} else {
|
||||
l('CMTooltipNextAchievementHeader').style.display = 'none';
|
||||
l('CMTooltipProductionLeft').style.marginBottom = '0px';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import { TooltipName } from '../../VariablesAndData';
|
||||
import * as Create from '../CreateTooltip';
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { CacheNoGoldSwitchCookiesPS } from '../../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import {
|
||||
Beautify,
|
||||
GetTimeColour,
|
||||
} from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import GetTimeColour from '../../BeautifyAndFormatting/GetTimeColour';
|
||||
import CalculateGrimoireRefillTime from '../../HelperFunctions/CalculateGrimoireRefillTime';
|
||||
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
|
||||
import { ColourTextPre, TooltipName } from '../../VariablesAndData';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import * as Create from '../CreateTooltip';
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { CacheGods } from '../../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import { TooltipName, TooltipType } from '../../VariablesAndData';
|
||||
import * as Create from '../CreateTooltip';
|
||||
|
||||
|
||||
@@ -3,11 +3,9 @@ import {
|
||||
CacheUpgrades,
|
||||
} from '../../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import {
|
||||
Beautify,
|
||||
FormatTime,
|
||||
GetTimeColour,
|
||||
} from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import FormatTime from '../../BeautifyAndFormatting/FormatTime';
|
||||
import GetTimeColour from '../../BeautifyAndFormatting/GetTimeColour';
|
||||
import GetCPS from '../../HelperFunctions/GetCPS';
|
||||
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
|
||||
import {
|
||||
|
||||
@@ -2,11 +2,8 @@ import GetCPSBuffMult from '../../../Cache/CPS/GetCPSBuffMult';
|
||||
import { CacheEdifice, CacheLucky } from '../../../Cache/VariablesAndData';
|
||||
import ToggleToolWarnPos from '../../../Config/Toggles/ToggleToolWarnPos';
|
||||
import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
|
||||
import {
|
||||
Beautify,
|
||||
FormatTime,
|
||||
} from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import FormatTime from '../../BeautifyAndFormatting/FormatTime';
|
||||
import GetCPS from '../../HelperFunctions/GetCPS';
|
||||
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
|
||||
import {
|
||||
|
||||
@@ -2,7 +2,7 @@ import {
|
||||
CacheWrinklersFattest,
|
||||
CacheWrinklersTotal,
|
||||
} from '../../../Cache/VariablesAndData';
|
||||
import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import { TooltipName } from '../../VariablesAndData';
|
||||
import * as Create from '../CreateTooltip';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import { SimObjects } from '../../Sim/VariablesAndData';
|
||||
import { Beautify } from '../BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../BeautifyAndFormatting/Beautify';
|
||||
import {
|
||||
TooltipWrinkler,
|
||||
TooltipWrinklerArea,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import { FormatTime } from '../../Disp/BeautifyAndFormatting/BeautifyFormatting';
|
||||
|
||||
import FormatTime from '../../Disp/BeautifyAndFormatting/FormatTime';
|
||||
import CalculateGrimoireRefillTime from '../../Disp/HelperFunctions/CalculateGrimoireRefillTime';
|
||||
import {
|
||||
BackupGrimoireDraw,
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import jscolor from '@eastdesire/jscolor';
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import {
|
||||
Beautify as CMBeautify,
|
||||
FormatTime,
|
||||
} from '../../Disp/BeautifyAndFormatting/BeautifyFormatting';
|
||||
import Beautify from '../../Disp/BeautifyAndFormatting/Beautify';
|
||||
import FormatTime from '../../Disp/BeautifyAndFormatting/FormatTime';
|
||||
import { AddAuraInfo, AddDragonLevelUpTooltip } from '../../Disp/Dragon/Dragon';
|
||||
import AddMenu from '../../Disp/MenuSections/AddMenus';
|
||||
import UpdateTitle from '../../Disp/TabTitle/TabTitle';
|
||||
@@ -146,7 +144,7 @@ export default function ReplaceNative() {
|
||||
let title = 'Cookie Clicker';
|
||||
if (Game.season === 'fools') title = 'Cookie Baker';
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
Title = `${Game.OnAscend ? 'Ascending! ' : ''}${CMBeautify(Game.cookies)} ${
|
||||
Title = `${Game.OnAscend ? 'Ascending! ' : ''}${Beautify(Game.cookies)} ${
|
||||
Game.cookies === 1 ? 'cookie' : 'cookies'
|
||||
} - ${title}`;
|
||||
UpdateTitle();
|
||||
|
||||
106
test/Test_Disp/Test_BeautifyFormatting.js
Normal file
106
test/Test_Disp/Test_BeautifyFormatting.js
Normal file
@@ -0,0 +1,106 @@
|
||||
import { before, describe, it } from 'mocha';
|
||||
import { assert } from 'chai';
|
||||
|
||||
import FormatTime from '../../src/Disp/BeautifyAndFormatting/FormatTime';
|
||||
import { CMOptions } from '../../src/Config/VariablesAndData';
|
||||
|
||||
describe('FormatTime', function () {
|
||||
it('Format when time is Infinity', function () {
|
||||
assert.equal(FormatTime(Infinity, 0), Infinity);
|
||||
});
|
||||
it('Format when time is negative', function () {
|
||||
assert.equal(FormatTime(-1, 0), 'Negative time period');
|
||||
});
|
||||
describe('TimeFormat = 0', function () {
|
||||
before(function () {
|
||||
CMOptions.TimeFormat = 0;
|
||||
});
|
||||
describe('Longformat = 0', function () {
|
||||
it('Format when time is 0', function () {
|
||||
assert.equal(FormatTime(0, 0), '0s');
|
||||
});
|
||||
it('Format when time is 1 second', function () {
|
||||
assert.equal(FormatTime(1, 0), '1s');
|
||||
});
|
||||
it('Format when time is over 1 minute', function () {
|
||||
assert.equal(FormatTime(61, 0), '1m, 1s');
|
||||
});
|
||||
it('Format when time is over 1 hour', function () {
|
||||
assert.equal(FormatTime(3601, 0), '1h, 0m, 1s');
|
||||
});
|
||||
it('Format when time is over 1 day', function () {
|
||||
assert.equal(FormatTime(86401, 0), '1d, 0h, 0m, 1s');
|
||||
});
|
||||
it('Format when time is over 1 year', function () {
|
||||
assert.equal(FormatTime(31536001, 0), '1y, 0d, 0h, 0m, 1s');
|
||||
});
|
||||
it('Format when time is over >9000 days', function () {
|
||||
assert.equal(FormatTime(777600001, 0), '>9000d');
|
||||
});
|
||||
it('Format when time is over >99.9 years', function () {
|
||||
assert.equal(FormatTime(3155760001, 0), '>9000d');
|
||||
});
|
||||
});
|
||||
describe('Longformat = 1', function () {
|
||||
it('Format when time is 0', function () {
|
||||
assert.equal(FormatTime(0, 1), '0 seconds');
|
||||
});
|
||||
it('Format when time is 1 second', function () {
|
||||
assert.equal(FormatTime(1, 1), '1 second');
|
||||
});
|
||||
it('Format when time is over 1 minute', function () {
|
||||
assert.equal(FormatTime(61, 1), '1 minute, 1 second');
|
||||
});
|
||||
it('Format when time is over 1 hour', function () {
|
||||
assert.equal(FormatTime(3601, 1), '1 hour, 0 minutes, 1 second');
|
||||
});
|
||||
it('Format when time is over 1 day', function () {
|
||||
assert.equal(
|
||||
FormatTime(86401, 1),
|
||||
'1 day, 0 hours, 0 minutes, 1 second',
|
||||
);
|
||||
});
|
||||
it('Format when time is over 1 year', function () {
|
||||
assert.equal(
|
||||
FormatTime(31536001, 1),
|
||||
'1 year, 0 days, 0 hours, 0 minutes, 1 second',
|
||||
);
|
||||
});
|
||||
it('Format when time is over >9000 days', function () {
|
||||
assert.equal(FormatTime(777600001, 1), 'Over 9000 days!');
|
||||
});
|
||||
it('Format when time is over >99.9 years', function () {
|
||||
assert.equal(FormatTime(3155760001, 1), 'Over 9000 days!');
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('TimeFormat = 1', function () {
|
||||
before(function () {
|
||||
CMOptions.TimeFormat = 1;
|
||||
});
|
||||
it('Format when time is 0', function () {
|
||||
assert.equal(FormatTime(0, 0), '00:00:00:00:00');
|
||||
});
|
||||
it('Format when time is 1 second', function () {
|
||||
assert.equal(FormatTime(1, 0), '00:00:00:00:01');
|
||||
});
|
||||
it('Format when time is over 1 minute', function () {
|
||||
assert.equal(FormatTime(61, 0), '00:00:00:01:01');
|
||||
});
|
||||
it('Format when time is over 1 hour', function () {
|
||||
assert.equal(FormatTime(3601, 0), '00:00:01:00:01');
|
||||
});
|
||||
it('Format when time is over 1 day', function () {
|
||||
assert.equal(FormatTime(86401, 0), '00:01:00:00:01');
|
||||
});
|
||||
it('Format when time is over 1 year', function () {
|
||||
assert.equal(FormatTime(31536001, 0), '01:00:00:00:01');
|
||||
});
|
||||
it('Format when time is over >9000 days', function () {
|
||||
assert.equal(FormatTime(777600001, 0), '24:240:00:00:01');
|
||||
});
|
||||
it('Format when time is over >99.9 years', function () {
|
||||
assert.equal(FormatTime(3155760001, 0), 'XX:XX:XX:XX:XX');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user