Skip to content

Commit f429888

Browse files
committed
Added a tooltip for reset bonus income. Also added a tooltip per wrinkler that shows the amount it will give on pop (#9)
1 parent 4ae550e commit f429888

3 files changed

Lines changed: 230 additions & 8 deletions

File tree

CookieMonster.js

Lines changed: 115 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,7 +1051,7 @@ CM.Disp.AddMenuStats = function(title) {
10511051
div.style.fontSize = '17px';
10521052
div.style.fontFamily = '\"Kavoon\", Georgia, serif';
10531053
div.appendChild(document.createTextNode(text + ' '));
1054-
span = document.createElement('span');
1054+
var span = document.createElement('span');
10551055
span.style.cursor = 'pointer';
10561056
span.style.display = 'inline-block';
10571057
span.style.height = '14px';
@@ -1077,7 +1077,9 @@ CM.Disp.AddMenuStats = function(title) {
10771077
var div = document.createElement('div');
10781078
div.className = 'listing';
10791079
var b = document.createElement('b');
1080-
b.textContent = name + ' : ';
1080+
if (typeof name == 'string') b.appendChild(document.createTextNode(name));
1081+
else b.appendChild(name); // fragment
1082+
b.appendChild(document.createTextNode(' : '));
10811083
div.appendChild(b);
10821084
div.appendChild(text);
10831085
return div;
@@ -1181,6 +1183,32 @@ CM.Disp.AddMenuStats = function(title) {
11811183
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
11821184
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook))));
11831185
stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
1186+
var resetTitleFrag = document.createDocumentFragment();
1187+
resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income '))
1188+
var resetTitleSpan = document.createElement('span');
1189+
resetTitleSpan.onmouseout = function() { Game.tooltip.hide(); };
1190+
var resetTitlePlaceholder = document.createElement('div');
1191+
var resetTitleDesc = document.createElement('div');
1192+
resetTitleDesc.style.minWidth = '260px';
1193+
resetTitleDesc.style.marginBottom = '4px';
1194+
var resetTitleDiv = document.createElement('div');
1195+
resetTitleDiv.style.textAlign = 'left';
1196+
resetTitleDiv.textContent = 'The bonus income you would get from new heavenly chips/reset achievements if you have the same buildings/upgrades after reset';
1197+
resetTitleDesc.appendChild(resetTitleDiv);
1198+
resetTitlePlaceholder.appendChild(resetTitleDesc);
1199+
resetTitleSpan.onmouseover = function() {Game.tooltip.draw(this, escape(resetTitlePlaceholder.innerHTML));};
1200+
resetTitleSpan.style.cursor = 'default';
1201+
resetTitleSpan.style.display = 'inline-block';
1202+
resetTitleSpan.style.height = '10px';
1203+
resetTitleSpan.style.width = '10px';
1204+
resetTitleSpan.style.borderRadius = '5px';
1205+
resetTitleSpan.style.textAlign = 'center';
1206+
resetTitleSpan.style.backgroundColor = '#C0C0C0';
1207+
resetTitleSpan.style.color = 'black';
1208+
resetTitleSpan.style.fontSize = '9px';
1209+
resetTitleSpan.style.verticalAlign = 'bottom';
1210+
resetTitleSpan.textContent = '?';
1211+
resetTitleFrag.appendChild(resetTitleSpan);
11841212
var resetBonus = CM.Sim.ResetBonus();
11851213
var resetFrag = document.createDocumentFragment();
11861214
resetFrag.appendChild(document.createTextNode(Beautify(resetBonus)));
@@ -1190,7 +1218,7 @@ CM.Disp.AddMenuStats = function(title) {
11901218
resetSmall.textContent = ' (' + (increase / 100) + '% of income)';
11911219
resetFrag.appendChild(resetSmall);
11921220
}
1193-
stats.appendChild(listing('Reset Bonus Income', resetFrag));
1221+
stats.appendChild(listing(resetTitleFrag, resetFrag));
11941222
}
11951223

11961224
if (Game.cpsSucked > 0) {
@@ -1249,7 +1277,7 @@ CM.Disp.AddMenuStats = function(title) {
12491277
var createSpecDisp = function(theSpecDisp) {
12501278
var frag = document.createDocumentFragment();
12511279
frag.appendChild(document.createTextNode(theSpecDisp.length + ' '));
1252-
span = document.createElement('span');
1280+
var span = document.createElement('span');
12531281
span.onmouseout = function() { Game.tooltip.hide(); };
12541282
var placeholder = document.createElement('div');
12551283
var missing = document.createElement('div');
@@ -1570,6 +1598,76 @@ CM.Disp.UpdateTooltipWarnCaut = function() {
15701598
}
15711599
}
15721600

1601+
CM.Disp.AddWrinklerAreaDetect = function() {
1602+
l('backgroundLeftCanvas').onmouseover = function() {CM.Disp.TooltipWrinklerArea = 1;};
1603+
l('backgroundLeftCanvas').onmouseout = function() {
1604+
CM.Disp.TooltipWrinklerArea = 0;
1605+
Game.tooltip.hide();
1606+
for (var i = 0; i < 10; i++) {
1607+
CM.Disp.TooltipWrinklerCache[i] = 0;
1608+
}
1609+
};
1610+
}
1611+
1612+
CM.Disp.CheckWrinklerTooltip = function() {
1613+
if (CM.Disp.TooltipWrinklerArea == 1) {
1614+
var showingTooltip = false;
1615+
var mouseInWrinkler = function (x, y, rect) {
1616+
var dx = x + Math.sin(-rect.r) * (-(rect.h / 2 - rect.o)), dy = y + Math.cos(-rect.r) * (-(rect.h / 2 - rect.o));
1617+
var h1 = Math.sqrt(dx * dx + dy * dy);
1618+
var currA = Math.atan2(dy, dx);
1619+
var newA = currA - rect.r;
1620+
var x2 = Math.cos(newA) * h1;
1621+
var y2 = Math.sin(newA) * h1;
1622+
if (x2 > -0.5 * rect.w && x2 < 0.5 * rect.w && y2 > -0.5 * rect.h && y2 < 0.5 * rect.h) return true;
1623+
return false;
1624+
}
1625+
for (var i in Game.wrinklers) {
1626+
var me = Game.wrinklers[i];
1627+
var rect = {w: 100, h: 200, r: (-me.r) * Math.PI / 180, o: 10};
1628+
if (me.phase > 0 && Game.LeftBackground && Game.mouseX < Game.LeftBackground.canvas.width && mouseInWrinkler(Game.mouseX - me.x, Game.mouseY - me.y, rect)) {
1629+
if (CM.Disp.TooltipWrinklerCache[i] == 0) {
1630+
var placeholder = document.createElement('div');
1631+
var wrinkler = document.createElement('div');
1632+
wrinkler.style.minWidth = '120px';
1633+
wrinkler.style.marginBottom = '4px';
1634+
var div = document.createElement('div');
1635+
div.style.textAlign = 'center';
1636+
div.id = 'CMTooltipWrinkler';
1637+
wrinkler.appendChild(div);
1638+
placeholder.appendChild(wrinkler);
1639+
Game.tooltip.draw(this, escape(placeholder.innerHTML), 'wrink');
1640+
CM.Disp.TooltipWrinkler = i;
1641+
CM.Disp.TooltipWrinklerCache[i] = 1;
1642+
}
1643+
showingTooltip = true;
1644+
}
1645+
else {
1646+
CM.Disp.TooltipWrinklerCache[i] = 0;
1647+
}
1648+
}
1649+
if (!showingTooltip) {
1650+
Game.tooltip.hide();
1651+
}
1652+
}
1653+
}
1654+
1655+
CM.Disp.UpdateWrinklerTooltip = function() {
1656+
if (l('CMTooltipWrinkler') != null) {
1657+
var sucked = Game.wrinklers[CM.Disp.TooltipWrinkler].sucked;
1658+
sucked *= 1.1;
1659+
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
1660+
l('CMTooltipWrinkler').textContent = Beautify(sucked);
1661+
}
1662+
}
1663+
1664+
CM.Disp.UpdateTooltipWrinklerLocation = function() {
1665+
if (Game.tooltip.origin == 'wrink') {
1666+
Game.tooltip.tta.style.left = (Game.mouseX + l('tooltip').offsetWidth + 20) + 'px';
1667+
Game.tooltip.tta.style.right = 'auto';
1668+
}
1669+
}
1670+
15731671
CM.Disp.ToggleSayTime = function() {
15741672
if (CM.Config.SayTime == 1) {
15751673
Game.sayTime = CM.Disp.sayTime;
@@ -1606,6 +1704,13 @@ CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', '
16061704

16071705
CM.Disp.TooltipBuy10 = false;
16081706

1707+
CM.Disp.TooltipWrinklerArea = 0;
1708+
CM.Disp.TooltipWrinkler = -1;
1709+
CM.Disp.TooltipWrinklerCache = [];
1710+
for (var i = 0; i < 10; i++) {
1711+
CM.Disp.TooltipWrinklerCache[i] = 0;
1712+
}
1713+
16091714
/********
16101715
* Main *
16111716
********/
@@ -1641,6 +1746,7 @@ CM.ReplaceNative = function() {
16411746
eval('CM.Backup.tooltip.updateMod = ' + Game.tooltip.update.toString().split('this').join('Game.tooltip'));
16421747
Game.tooltip.update = function() {
16431748
CM.Backup.tooltip.updateMod();
1749+
CM.Disp.UpdateTooltipWrinklerLocation();
16441750
CM.Disp.UpdateTooltipWarnCaut();
16451751
}
16461752

@@ -1690,6 +1796,10 @@ CM.Loop = function() {
16901796

16911797
// Update Tooltip
16921798
CM.Disp.UpdateTooltip();
1799+
1800+
// Update Wrinkler Tooltip
1801+
CM.Disp.CheckWrinklerTooltip();
1802+
CM.Disp.UpdateWrinklerTooltip();
16931803

16941804
// Check Golden Cookies
16951805
CM.Disp.CheckGoldenCookie();
@@ -1715,6 +1825,7 @@ CM.Init = function() {
17151825
CM.Disp.CreateTooltipWarnCaut();
17161826
CM.Disp.AddTooltipBuild();
17171827
CM.Disp.AddTooltipBuild10();
1828+
CM.Disp.AddWrinklerAreaDetect();
17181829
CM.ReplaceNative();
17191830
Game.CalculateGains();
17201831
CM.LoadConfig(); // Must be after all things are created!

src/Disp.js

Lines changed: 109 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ CM.Disp.AddMenuStats = function(title) {
745745
div.style.fontSize = '17px';
746746
div.style.fontFamily = '\"Kavoon\", Georgia, serif';
747747
div.appendChild(document.createTextNode(text + ' '));
748-
span = document.createElement('span');
748+
var span = document.createElement('span');
749749
span.style.cursor = 'pointer';
750750
span.style.display = 'inline-block';
751751
span.style.height = '14px';
@@ -771,7 +771,9 @@ CM.Disp.AddMenuStats = function(title) {
771771
var div = document.createElement('div');
772772
div.className = 'listing';
773773
var b = document.createElement('b');
774-
b.textContent = name + ' : ';
774+
if (typeof name == 'string') b.appendChild(document.createTextNode(name));
775+
else b.appendChild(name); // fragment
776+
b.appendChild(document.createTextNode(' : '));
775777
div.appendChild(b);
776778
div.appendChild(text);
777779
return div;
@@ -875,6 +877,32 @@ CM.Disp.AddMenuStats = function(title) {
875877
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
876878
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook))));
877879
stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
880+
var resetTitleFrag = document.createDocumentFragment();
881+
resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income '))
882+
var resetTitleSpan = document.createElement('span');
883+
resetTitleSpan.onmouseout = function() { Game.tooltip.hide(); };
884+
var resetTitlePlaceholder = document.createElement('div');
885+
var resetTitleDesc = document.createElement('div');
886+
resetTitleDesc.style.minWidth = '260px';
887+
resetTitleDesc.style.marginBottom = '4px';
888+
var resetTitleDiv = document.createElement('div');
889+
resetTitleDiv.style.textAlign = 'left';
890+
resetTitleDiv.textContent = 'The bonus income you would get from new heavenly chips/reset achievements if you have the same buildings/upgrades after reset';
891+
resetTitleDesc.appendChild(resetTitleDiv);
892+
resetTitlePlaceholder.appendChild(resetTitleDesc);
893+
resetTitleSpan.onmouseover = function() {Game.tooltip.draw(this, escape(resetTitlePlaceholder.innerHTML));};
894+
resetTitleSpan.style.cursor = 'default';
895+
resetTitleSpan.style.display = 'inline-block';
896+
resetTitleSpan.style.height = '10px';
897+
resetTitleSpan.style.width = '10px';
898+
resetTitleSpan.style.borderRadius = '5px';
899+
resetTitleSpan.style.textAlign = 'center';
900+
resetTitleSpan.style.backgroundColor = '#C0C0C0';
901+
resetTitleSpan.style.color = 'black';
902+
resetTitleSpan.style.fontSize = '9px';
903+
resetTitleSpan.style.verticalAlign = 'bottom';
904+
resetTitleSpan.textContent = '?';
905+
resetTitleFrag.appendChild(resetTitleSpan);
878906
var resetBonus = CM.Sim.ResetBonus();
879907
var resetFrag = document.createDocumentFragment();
880908
resetFrag.appendChild(document.createTextNode(Beautify(resetBonus)));
@@ -884,7 +912,7 @@ CM.Disp.AddMenuStats = function(title) {
884912
resetSmall.textContent = ' (' + (increase / 100) + '% of income)';
885913
resetFrag.appendChild(resetSmall);
886914
}
887-
stats.appendChild(listing('Reset Bonus Income', resetFrag));
915+
stats.appendChild(listing(resetTitleFrag, resetFrag));
888916
}
889917

890918
if (Game.cpsSucked > 0) {
@@ -943,7 +971,7 @@ CM.Disp.AddMenuStats = function(title) {
943971
var createSpecDisp = function(theSpecDisp) {
944972
var frag = document.createDocumentFragment();
945973
frag.appendChild(document.createTextNode(theSpecDisp.length + ' '));
946-
span = document.createElement('span');
974+
var span = document.createElement('span');
947975
span.onmouseout = function() { Game.tooltip.hide(); };
948976
var placeholder = document.createElement('div');
949977
var missing = document.createElement('div');
@@ -1264,6 +1292,76 @@ CM.Disp.UpdateTooltipWarnCaut = function() {
12641292
}
12651293
}
12661294

1295+
CM.Disp.AddWrinklerAreaDetect = function() {
1296+
l('backgroundLeftCanvas').onmouseover = function() {CM.Disp.TooltipWrinklerArea = 1;};
1297+
l('backgroundLeftCanvas').onmouseout = function() {
1298+
CM.Disp.TooltipWrinklerArea = 0;
1299+
Game.tooltip.hide();
1300+
for (var i = 0; i < 10; i++) {
1301+
CM.Disp.TooltipWrinklerCache[i] = 0;
1302+
}
1303+
};
1304+
}
1305+
1306+
CM.Disp.CheckWrinklerTooltip = function() {
1307+
if (CM.Disp.TooltipWrinklerArea == 1) {
1308+
var showingTooltip = false;
1309+
var mouseInWrinkler = function (x, y, rect) {
1310+
var dx = x + Math.sin(-rect.r) * (-(rect.h / 2 - rect.o)), dy = y + Math.cos(-rect.r) * (-(rect.h / 2 - rect.o));
1311+
var h1 = Math.sqrt(dx * dx + dy * dy);
1312+
var currA = Math.atan2(dy, dx);
1313+
var newA = currA - rect.r;
1314+
var x2 = Math.cos(newA) * h1;
1315+
var y2 = Math.sin(newA) * h1;
1316+
if (x2 > -0.5 * rect.w && x2 < 0.5 * rect.w && y2 > -0.5 * rect.h && y2 < 0.5 * rect.h) return true;
1317+
return false;
1318+
}
1319+
for (var i in Game.wrinklers) {
1320+
var me = Game.wrinklers[i];
1321+
var rect = {w: 100, h: 200, r: (-me.r) * Math.PI / 180, o: 10};
1322+
if (me.phase > 0 && Game.LeftBackground && Game.mouseX < Game.LeftBackground.canvas.width && mouseInWrinkler(Game.mouseX - me.x, Game.mouseY - me.y, rect)) {
1323+
if (CM.Disp.TooltipWrinklerCache[i] == 0) {
1324+
var placeholder = document.createElement('div');
1325+
var wrinkler = document.createElement('div');
1326+
wrinkler.style.minWidth = '120px';
1327+
wrinkler.style.marginBottom = '4px';
1328+
var div = document.createElement('div');
1329+
div.style.textAlign = 'center';
1330+
div.id = 'CMTooltipWrinkler';
1331+
wrinkler.appendChild(div);
1332+
placeholder.appendChild(wrinkler);
1333+
Game.tooltip.draw(this, escape(placeholder.innerHTML), 'wrink');
1334+
CM.Disp.TooltipWrinkler = i;
1335+
CM.Disp.TooltipWrinklerCache[i] = 1;
1336+
}
1337+
showingTooltip = true;
1338+
}
1339+
else {
1340+
CM.Disp.TooltipWrinklerCache[i] = 0;
1341+
}
1342+
}
1343+
if (!showingTooltip) {
1344+
Game.tooltip.hide();
1345+
}
1346+
}
1347+
}
1348+
1349+
CM.Disp.UpdateWrinklerTooltip = function() {
1350+
if (l('CMTooltipWrinkler') != null) {
1351+
var sucked = Game.wrinklers[CM.Disp.TooltipWrinkler].sucked;
1352+
sucked *= 1.1;
1353+
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
1354+
l('CMTooltipWrinkler').textContent = Beautify(sucked);
1355+
}
1356+
}
1357+
1358+
CM.Disp.UpdateTooltipWrinklerLocation = function() {
1359+
if (Game.tooltip.origin == 'wrink') {
1360+
Game.tooltip.tta.style.left = (Game.mouseX + l('tooltip').offsetWidth + 20) + 'px';
1361+
Game.tooltip.tta.style.right = 'auto';
1362+
}
1363+
}
1364+
12671365
CM.Disp.ToggleSayTime = function() {
12681366
if (CM.Config.SayTime == 1) {
12691367
Game.sayTime = CM.Disp.sayTime;
@@ -1300,3 +1398,10 @@ CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', '
13001398

13011399
CM.Disp.TooltipBuy10 = false;
13021400

1401+
CM.Disp.TooltipWrinklerArea = 0;
1402+
CM.Disp.TooltipWrinkler = -1;
1403+
CM.Disp.TooltipWrinklerCache = [];
1404+
for (var i = 0; i < 10; i++) {
1405+
CM.Disp.TooltipWrinklerCache[i] = 0;
1406+
}
1407+

src/Main.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ CM.ReplaceNative = function() {
3333
eval('CM.Backup.tooltip.updateMod = ' + Game.tooltip.update.toString().split('this').join('Game.tooltip'));
3434
Game.tooltip.update = function() {
3535
CM.Backup.tooltip.updateMod();
36+
CM.Disp.UpdateTooltipWrinklerLocation();
3637
CM.Disp.UpdateTooltipWarnCaut();
3738
}
3839

@@ -82,6 +83,10 @@ CM.Loop = function() {
8283

8384
// Update Tooltip
8485
CM.Disp.UpdateTooltip();
86+
87+
// Update Wrinkler Tooltip
88+
CM.Disp.CheckWrinklerTooltip();
89+
CM.Disp.UpdateWrinklerTooltip();
8590

8691
// Check Golden Cookies
8792
CM.Disp.CheckGoldenCookie();
@@ -107,6 +112,7 @@ CM.Init = function() {
107112
CM.Disp.CreateTooltipWarnCaut();
108113
CM.Disp.AddTooltipBuild();
109114
CM.Disp.AddTooltipBuild10();
115+
CM.Disp.AddWrinklerAreaDetect();
110116
CM.ReplaceNative();
111117
Game.CalculateGains();
112118
CM.LoadConfig(); // Must be after all things are created!

0 commit comments

Comments
 (0)