Skip to content

Commit c112fca

Browse files
committed
some optimizations + easing functions for later
1 parent 7b85cfb commit c112fca

File tree

3 files changed

+200
-10
lines changed

3 files changed

+200
-10
lines changed

game/UI.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,7 @@ td.HandBookZombie {
661661
}
662662

663663
#dAll {
664+
contain: layout style;
664665
background: url("images/interface/ing.png");
665666
}
666667

game/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
<script src="js/pako.js" defer></script>
2727
<!-- <script src="js/html2canvas.js" defer></script> -->
2828
<script src="js/msgpack.min.js" defer></script>
29-
<script src="js/oneko.js"></script>
3029
<script src="js/WebComponents.js" defer></script>
3130
<meta property="og:title" content="Play Plants vs Zombies Modded Online" />
3231
<meta

game/js/Cfunction.js

Lines changed: 199 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,29 @@
11
/* eslint-disable complexity */
2+
window.setInterval = function (delay, fn) {
3+
var start = Date.now();
4+
var data = {};
5+
data.id = requestAnimationFrame(loop);
6+
7+
return data;
8+
9+
function loop() {
10+
data.id = requestAnimationFrame(loop);
11+
12+
if (Date.now() - start >= delay) {
13+
fn();
14+
start = Date.now();
15+
}
16+
}
17+
};
18+
19+
window.clearInterval = function (data) {
20+
try {
21+
cancelAnimationFrame(data.id);
22+
} catch (e) {
23+
console.warn("clearInterval failed:", e);
24+
}
25+
};
26+
227
var $User = (function () {
328
const platform = navigator.platform;
429
const userAgent = navigator.userAgent;
@@ -14,14 +39,10 @@ var $User = (function () {
1439
// Global Random Helper
1540
$Random = isHTTP ? "#" : "?";
1641

17-
// Text setting helper based on browser capability
18-
innerText = isIE
19-
? function (element, text) {
20-
element.innerText = text;
21-
}
22-
: function (element, text) {
23-
element.textContent = text;
24-
};
42+
// Text setting helper
43+
innerText = function (element, text) {
44+
element.textContent = text;
45+
};
2546

2647
// PNG fix for IE6
2748
if (isIE6) {
@@ -33,7 +54,13 @@ var $User = (function () {
3354

3455
innerHTML = function (element, content) {
3556
if (element) {
36-
element.innerHTML = content;
57+
// Use textContent for plain text, innerHTML only when HTML tags are present
58+
if (/<[^>]*>/.test(content)) {
59+
element.innerHTML = content;
60+
} else {
61+
console.log("innerHTML called with plain text, using textContent instead.");
62+
element.textContent = content;
63+
}
3764
}
3865
};
3966

@@ -199,6 +226,9 @@ var oS = {
199226
EDAll = $("dAll");
200227
EDPZ = $("dPZ");
201228
EDAlloffsetLeft = EDAll.offsetLeft;
229+
window.addEventListener("resize", function () {
230+
EDAlloffsetLeft = EDAll.offsetLeft;
231+
});
202232
EDNewAll = EDAll.cloneNode(true);
203233
EDNewFlagMeter = $("dFlagMeter").cloneNode(true);
204234
ESSunNum = $("sSunNum");
@@ -4229,3 +4259,163 @@ var CPlants = NewO({
42294259
b.PrivateDie(b);
42304260
},
42314261
});
4262+
4263+
var interpolate = function (start, end, amt, easingFunc) {
4264+
return start + (end - start) * (easingFunc ? easingFunc(amt) : amt);
4265+
};
4266+
4267+
var easeInSine = function (x) {
4268+
return 1 - Math.cos((x * Math.PI) / 2);
4269+
};
4270+
4271+
var easeOutSine = function (x) {
4272+
return Math.sin((x * Math.PI) / 2);
4273+
};
4274+
4275+
var easeInOutSine = function (x) {
4276+
return -(Math.cos(Math.PI * x) - 1) / 2;
4277+
};
4278+
4279+
var easeInQuad = function (x) {
4280+
return x * x;
4281+
};
4282+
4283+
var easeOutQuad = function (x) {
4284+
return 1 - (1 - x) * (1 - x);
4285+
};
4286+
4287+
var easeInOutQuad = function (x) {
4288+
return x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2;
4289+
};
4290+
4291+
var easeInCubic = function (x) {
4292+
return x * x * x;
4293+
};
4294+
4295+
var easeOutCubic = function (x) {
4296+
return 1 - Math.pow(1 - x, 3);
4297+
};
4298+
4299+
var easeInOutCubic = function (x) {
4300+
return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
4301+
};
4302+
4303+
var easeInQuart = function (x) {
4304+
return x * x * x * x;
4305+
};
4306+
4307+
var easeOutQuart = function (x) {
4308+
return 1 - Math.pow(1 - x, 4);
4309+
};
4310+
4311+
var easeInOutQuart = function (x) {
4312+
return x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2;
4313+
};
4314+
4315+
var easeInQuint = function (x) {
4316+
return x * x * x * x * x;
4317+
};
4318+
4319+
var easeOutQuint = function (x) {
4320+
return 1 - Math.pow(1 - x, 5);
4321+
};
4322+
4323+
var easeInOutQuint = function (x) {
4324+
return x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2;
4325+
};
4326+
4327+
var easeInExpo = function (x) {
4328+
return x === 0 ? 0 : Math.pow(2, 10 * x - 10);
4329+
};
4330+
4331+
var easeOutExpo = function (x) {
4332+
return x === 1 ? 1 : 1 - Math.pow(2, -10 * x);
4333+
};
4334+
4335+
var easeInOutExpo = function (x) {
4336+
// oxlint-disable-next-line no-nested-ternary
4337+
return x === 0
4338+
? 0
4339+
: // oxlint-disable-next-line no-nested-ternary
4340+
x === 1
4341+
? 1
4342+
: x < 0.5
4343+
? Math.pow(2, 20 * x - 10) / 2
4344+
: (2 - Math.pow(2, -20 * x + 10)) / 2;
4345+
};
4346+
4347+
var easeInCirc = function (x) {
4348+
return 1 - Math.sqrt(1 - Math.pow(x, 2));
4349+
};
4350+
4351+
var easeOutCirc = function (x) {
4352+
return Math.sqrt(1 - Math.pow(x - 1, 2));
4353+
};
4354+
4355+
var easeInOutCirc = function (x) {
4356+
return x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2;
4357+
};
4358+
4359+
var easeInBack = function (x) {
4360+
const c1 = 1.70158;
4361+
const c3 = c1 + 1;
4362+
return c3 * x * x * x - c1 * x * x;
4363+
};
4364+
4365+
var easeOutBack = function (x) {
4366+
const c1 = 1.70158;
4367+
const c3 = c1 + 1;
4368+
return 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2);
4369+
};
4370+
4371+
var easeInOutBack = function (x) {
4372+
const c1 = 1.70158;
4373+
const c2 = c1 * 1.525;
4374+
return x < 0.5 ? (Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2)) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2;
4375+
};
4376+
4377+
var easeInElastic = function (x) {
4378+
const c4 = (2 * Math.PI) / 3;
4379+
// oxlint-disable-next-line no-nested-ternary
4380+
return x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4);
4381+
};
4382+
4383+
var easeOutElastic = function (x) {
4384+
const c4 = (2 * Math.PI) / 3;
4385+
// oxlint-disable-next-line no-nested-ternary
4386+
return x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;
4387+
};
4388+
4389+
var easeInOutElastic = function (x) {
4390+
const c5 = (2 * Math.PI) / 4.5;
4391+
// oxlint-disable-next-line no-nested-ternary
4392+
return x === 0
4393+
? 0
4394+
: // oxlint-disable-next-line no-nested-ternary
4395+
x === 1
4396+
? 1
4397+
: x < 0.5
4398+
? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2
4399+
: (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;
4400+
};
4401+
4402+
var easeOutBounce = function (x) {
4403+
const n1 = 7.5625;
4404+
const d1 = 2.75;
4405+
if (x < 1 / d1) {
4406+
return n1 * x * x;
4407+
} else if (x < 2 / d1) {
4408+
return n1 * (x -= 1.5 / d1) * x + 0.75;
4409+
} else if (x < 2.5 / d1) {
4410+
return n1 * (x -= 2.25 / d1) * x + 0.9375;
4411+
}
4412+
return n1 * (x -= 2.625 / d1) * x + 0.984375;
4413+
};
4414+
4415+
var easeInBounce = function (x) {
4416+
return 1 - easeOutBounce(1 - x);
4417+
};
4418+
4419+
var easeInOutBounce = function (x) {
4420+
return x < 0.5 ? (1 - easeOutBounce(1 - 2 * x)) / 2 : (1 + easeOutBounce(2 * x - 1)) / 2;
4421+
};

0 commit comments

Comments
 (0)