User prompt
Make it Windows 98 again
User prompt
Make a new app called Windows XP simulation and when you open it, it’s simulates Windows XP
User prompt
Make it so the sound stops playing after 25 seconds
User prompt
Make it so the virus sound stops playing if entered set up
User prompt
OK, well only add a download to the window up screen
User prompt
I’m sorry I meant Windows 98
User prompt
The virus ends after after 25 seconds it starts rotating the screen and all rotates after 15 seconds it says it’s restarting Windows 95 and bring you towards a set up not the desktop the set up ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
L Cruces it starts sinking your screen in after 20 seconds of the virus and then after five seconds of syncing your screen in it on sync it and then sync it again
User prompt
no makes a fatal error screen after the command prompt thing still black
User prompt
Add a background to every app including errors like the white background on every single app and not transparent
User prompt
if the virus is left for five seconds on a virus song starts playing it’s like glitchy jumbles of noise
User prompt
When you press the free download button, it makes the background the glitch color
User prompt
Once you press free, download, it puts glitchy particles on your screen and puts your background as the glitch colors and there’s a random virus song that always happens when you get a virus and it’s starts sinking your screen in and when it’s fully synced in it un sync and then keeps doing that ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
If you press free, download it does what viruses do and gives you a virus
User prompt
Another app you have to add chrome again with the free download, but without the game in chrome
User prompt
on the thing that says, drag me on Google make that an app that says game and except it being on Google it’s an app on the screen
User prompt
Add a button that says free download on the Google page
User prompt
Make the text ball in Google work on iOS and every single device, including Nintendo
User prompt
Add a Google Chrome
User prompt
Make it so you still have the mouse after the restart
User prompt
After 10 seconds of saying starting Windows 98 it says getting things ready and then after that, it says almost done five seconds later after getting things ready and then it goes to your desktop
User prompt
Make it so after it says that there’s only one more button after 10 seconds of it saying that text and the button says remove everything and restart Windows 98
User prompt
Make it so 10 seconds after the errors with CMD. It says it’s restarting Windows 98 and it doesn’t solve the desktop anymore. It only sells system file removed in text with a black background.
User prompt
Make it have more error than that, like an error, every single millisecond when you click that
User prompt
Make it so there’s a CMD but if you press any button on it, it will say it’s deleting system 32 and you would get a bunch of errors with the sounds at once
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var DesktopIcon = Container.expand(function (iconName, x, y) {
var self = Container.call(this);
// Create icon background for selection effect
var iconBg = self.attachAsset('desktopIcon', {
anchorX: 0.5,
anchorY: 0.5,
width: 72,
height: 88
});
iconBg.alpha = 0; // Initially transparent
// Create the actual icon
var icon = self.attachAsset('desktopIcon', {
anchorX: 0.5,
anchorY: 0.5
});
// Set icon color based on type
if (iconName === "My Computer") {
icon.tint = 0x87CEEB; // Light blue
} else if (iconName === "Recycle Bin") {
icon.tint = 0x00FF00; // Green
} else if (iconName === "Notepad") {
icon.tint = 0xFFFFFF; // White
} else if (iconName === "Calculator") {
icon.tint = 0xDDDDDD; // Light gray
} else if (iconName === "Explorer") {
icon.tint = 0xFFD700; // Gold
} else if (iconName === "Corrupted") {
icon.tint = 0xFF0000;
} else if (iconName === "CMD") {
icon.tint = 0x000000; // Black for command prompt
}
var label = new Text2(iconName, {
size: 24,
fill: 0xFFFFFF
});
label.anchor.set(0.5, 0);
label.y = 40;
self.addChild(label);
self.x = x;
self.y = y;
self.name = iconName;
self.interactive = true;
self.isSelected = false;
self.down = function () {
// Show blue selection background
iconBg.alpha = 0.3;
iconBg.tint = 0x0000FF;
self.isSelected = true;
icon.alpha = 0.7;
LK.getSound('click').play();
};
self.up = function () {
icon.alpha = 1;
// Double-click effect (simplified)
if (self.isSelected) {
createWindow(iconName);
// Reset selection after opening window
LK.setTimeout(function () {
iconBg.alpha = 0;
self.isSelected = false;
}, 300);
}
};
return self;
});
var MouseCursor = Container.expand(function () {
var self = Container.call(this);
// Create arrow pointer shape
var cursorContainer = new Container();
self.addChild(cursorContainer);
// Create white arrow outline
var arrowBody = LK.getAsset('desktopIcon', {
anchorX: 0,
anchorY: 0,
width: 20,
height: 24
});
arrowBody.tint = 0xFFFFFF;
arrowBody.rotation = Math.PI / 6; // Slight tilt
cursorContainer.addChild(arrowBody);
// Create black inner arrow (slightly smaller)
var arrowInner = LK.getAsset('desktopIcon', {
anchorX: 0,
anchorY: 0,
width: 16,
height: 20
});
arrowInner.tint = 0x000000;
arrowInner.x = 2;
arrowInner.y = 2;
arrowInner.rotation = Math.PI / 6; // Same tilt
cursorContainer.addChild(arrowInner);
// Create left ear
var leftEar = LK.getAsset('desktopIcon', {
anchorX: 0.5,
anchorY: 1,
width: 8,
height: 12
});
leftEar.tint = 0x888888;
leftEar.x = 6;
leftEar.y = 0;
cursorContainer.addChild(leftEar);
// Create right ear
var rightEar = LK.getAsset('desktopIcon', {
anchorX: 0.5,
anchorY: 1,
width: 8,
height: 12
});
rightEar.tint = 0x888888;
rightEar.x = 14;
rightEar.y = 0;
cursorContainer.addChild(rightEar);
// Track if the cursor is over a clickable element
self.isOverClickable = false;
// Update cursor position
self.updatePosition = function (x, y) {
self.x = x;
self.y = y;
};
// Change cursor when over clickable elements
self.setPointer = function (isPointer) {
self.isOverClickable = isPointer;
if (isPointer) {
tween(cursorContainer, {
rotation: 0,
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 100
});
leftEar.tint = 0xCCCCCC;
rightEar.tint = 0xCCCCCC;
} else {
tween(cursorContainer, {
rotation: 0,
scaleX: 1.0,
scaleY: 1.0
}, {
duration: 100
});
leftEar.tint = 0x888888;
rightEar.tint = 0x888888;
}
};
return self;
});
var StartMenu = Container.expand(function () {
var self = Container.call(this);
var menu = self.attachAsset('startMenu', {
anchorX: 0,
anchorY: 1
});
var menuItems = ["Programs", "Documents", "Settings", "Find", "Help", "Run...", "Log Off...", "Shut Down..."];
for (var i = 0; i < menuItems.length; i++) {
var itemText = new Text2(menuItems[i], {
size: 24,
fill: 0x000000
});
itemText.x = 34;
itemText.y = 10 + i * 40;
self.addChild(itemText);
}
self.x = 0;
self.y = 2732; // Bottom of screen
self.visible = false;
return self;
});
var SystemCrashScreen = Container.expand(function () {
var self = Container.call(this);
// Create black background
var blackBg = self.attachAsset('desktop', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732
});
blackBg.tint = 0x000000;
// Create error text
var errorText = new Text2("FATAL ERROR: System files removed\n\nUnable to locate C:\\WINDOWS\\SYSTEM32\n\nSystem restart failed.\n\nPress any key to continue...", {
size: 32,
fill: 0xFFFFFF
});
errorText.anchor.set(0.5, 0.5);
errorText.x = 2048 / 2;
errorText.y = 2732 / 2;
self.addChild(errorText);
self.interactive = true;
// Make entire screen clickable
self.down = function () {
LK.getSound('error').play();
};
// Show restart button after 10 seconds
LK.setTimeout(function () {
// Change error text
errorText.setText("FATAL ERROR: System files removed\n\nUnable to locate C:\\WINDOWS\\SYSTEM32\n\nSystem restart failed.");
// Add restart button
var restartButton = new Container();
restartButton.interactive = true;
var buttonBg = LK.getAsset('startButton', {
anchorX: 0.5,
anchorY: 0.5,
width: 220,
height: 60
});
buttonBg.tint = 0xFF0000;
var buttonText = new Text2("Remove everything and restart Windows 98", {
size: 18,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
restartButton.addChild(buttonBg);
restartButton.addChild(buttonText);
restartButton.x = 2048 / 2;
restartButton.y = 2732 / 2 + 200;
// Add click functionality to button
restartButton.down = function () {
buttonBg.tint = 0xAA0000;
LK.getSound('error').play();
};
restartButton.up = function () {
buttonBg.tint = 0xFF0000;
// Play multiple error sounds
for (var i = 0; i < 10; i++) {
LK.setTimeout(function () {
LK.getSound('error').play();
}, i * 100);
}
// Reset the OS (recreate the game)
LK.setTimeout(function () {
// Clear everything and restart
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
// Add "Restarting..." text in a black background
var desktop = game.addChild(LK.getAsset('desktop', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732
}));
desktop.tint = 0x000000;
var restartText = new Text2("Restarting Windows 98...", {
size: 40,
fill: 0xFFFFFF
});
restartText.anchor.set(0.5, 0.5);
restartText.x = 2048 / 2;
restartText.y = 2732 / 2;
game.addChild(restartText);
// Play startup sound
LK.setTimeout(function () {
LK.getSound('startup').play();
// Create and start the system startup sequence
LK.setTimeout(function () {
// Remove restart text and black background
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
// Add SystemStart screen
var startScreen = new SystemStart();
game.addChild(startScreen);
startScreen.startSequence();
}, 3000);
}, 2000);
}, 2000);
};
self.addChild(restartButton);
}, 10000);
return self;
});
var SystemStart = Container.expand(function () {
var self = Container.call(this);
// Black background
var blackBg = self.attachAsset('desktop', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732
});
blackBg.tint = 0x000000;
// Starting Windows 98 text
var startingText = new Text2("Starting Windows 98...", {
size: 40,
fill: 0xFFFFFF
});
startingText.anchor.set(0.5, 0.5);
startingText.x = 2048 / 2;
startingText.y = 2732 / 2;
self.addChild(startingText);
// Progress to different stages
self.startSequence = function () {
// After 10 seconds, show "Getting things ready"
LK.setTimeout(function () {
startingText.setText("Getting things ready...");
// After 5 more seconds, show "Almost done"
LK.setTimeout(function () {
startingText.setText("Almost done...");
// After 5 more seconds, load desktop
LK.setTimeout(function () {
// Remove SystemStart screen
game.removeChild(self);
// Recreate desktop
initializeDesktop();
}, 5000);
}, 5000);
}, 10000);
};
return self;
});
var Window = Container.expand(function (title, width, height) {
var self = Container.call(this);
self.isActive = true;
self.width = width || 800;
self.height = height || 600;
var windowBg = self.attachAsset('window', {
anchorX: 0,
anchorY: 0,
width: self.width,
height: self.height
});
var titleBar = self.attachAsset('windowTitle', {
anchorX: 0,
anchorY: 0,
width: self.width,
height: 28
});
var titleText = new Text2(title, {
size: 20,
fill: 0xFFFFFF
});
titleText.x = 10;
titleText.y = 4;
self.addChild(titleText);
var closeButton = self.attachAsset('closeButton', {
anchorX: 0,
anchorY: 0
});
closeButton.x = self.width - 28;
closeButton.y = 2;
closeButton.interactive = true;
var minimizeButton = self.attachAsset('minimizeButton', {
anchorX: 0,
anchorY: 0
});
minimizeButton.x = self.width - 56;
minimizeButton.y = 2;
minimizeButton.interactive = true;
var content = self.attachAsset('programContent', {
anchorX: 0,
anchorY: 0,
width: self.width - 20,
height: self.height - 50
});
content.x = 10;
content.y = 40;
// Program specific content
self.contentArea = new Container();
self.contentArea.x = 10;
self.contentArea.y = 40;
self.addChild(self.contentArea);
self.isDragging = false;
self.dragOffsetX = 0;
self.dragOffsetY = 0;
titleBar.interactive = true;
titleBar.down = function (x, y) {
self.isDragging = true;
self.dragOffsetX = x;
self.dragOffsetY = y;
// Bring window to front
if (self.parent) {
var index = self.parent.children.indexOf(self);
if (index >= 0) {
// Remove from current position
self.parent.children.splice(index, 1);
// Add to end (top)
self.parent.children.push(self);
}
}
};
titleBar.up = function () {
self.isDragging = false;
};
closeButton.down = function () {
closeButton.alpha = 0.7;
LK.getSound('click').play();
};
closeButton.up = function () {
closeWindow(self);
};
minimizeButton.down = function () {
minimizeButton.alpha = 0.7;
LK.getSound('click').play();
};
minimizeButton.up = function () {
minimizeButton.alpha = 1;
minimizeWindow(self);
};
return self;
});
var NotepadWindow = Window.expand(function () {
var self = Window.call(this, "Notepad", 700, 500);
var textArea = new Text2("Start typing here...", {
size: 24,
fill: 0x000000
});
textArea.x = 10;
textArea.y = 10;
self.contentArea.addChild(textArea);
return self;
});
var ExplorerWindow = Window.expand(function () {
var self = Window.call(this, "File Explorer", 800, 600);
var folderStructure = ["My Documents", "My Computer", "Network Neighborhood", "Recycle Bin"];
for (var i = 0; i < folderStructure.length; i++) {
// Create a container for each folder item to handle interactions
var folderItem = new Container();
folderItem.interactive = true;
folderItem.x = 10;
folderItem.y = i * 60 + 10;
var folderIcon = LK.getAsset('desktopIcon', {
anchorX: 0,
anchorY: 0,
width: 48,
height: 48
});
folderIcon.tint = 0xFFFF00;
folderIcon.x = 0;
folderIcon.y = 0;
var folderName = new Text2(folderStructure[i], {
size: 20,
fill: 0x000000
});
folderName.x = 60;
folderName.y = 14;
folderItem.addChild(folderIcon);
folderItem.addChild(folderName);
// Add click functionality
folderItem.name = folderStructure[i];
folderItem.lastSelected = false;
folderItem.down = function () {
this.children[0].tint = 0xCCCC00; // Darker yellow when clicked
LK.getSound('click').play();
};
folderItem.up = function () {
this.children[0].tint = 0xFFFF00; // Back to normal yellow
// Open a new Explorer window or perform folder-specific action
if (this.name === "My Computer") {
createWindow("Explorer");
} else if (this.name === "Recycle Bin") {
var emptyBinWindow = new Window("Empty Recycle Bin?", 400, 200);
emptyBinWindow.x = (2048 - 400) / 2;
emptyBinWindow.y = (2732 - 200) / 2;
game.addChild(emptyBinWindow);
activeWindows.push(emptyBinWindow);
}
};
self.contentArea.addChild(folderItem);
}
return self;
});
// Red for corrupted app
var CorruptedWindow = Window.expand(function () {
var self = Window.call(this, "Error", 500, 300);
var errorMessage = new Text2("A fatal exception has occurred.\nThe current application will be terminated.\n\nPress OK to close this window.", {
size: 24,
fill: 0x000000
});
errorMessage.x = 20;
errorMessage.y = 30;
self.contentArea.addChild(errorMessage);
var okButton = new Container();
okButton.interactive = true;
okButton.x = 200;
okButton.y = 180;
var buttonGraphic = LK.getAsset('startButton', {
anchorX: 0.5,
anchorY: 0.5,
width: 100,
height: 40
});
buttonGraphic.tint = 0xDDDDDD;
var buttonText = new Text2("OK", {
size: 24,
fill: 0x000000
});
buttonText.anchor.set(0.5, 0.5);
buttonText.x = 0;
buttonText.y = 0;
okButton.addChild(buttonGraphic);
okButton.addChild(buttonText);
okButton.down = function () {
buttonGraphic.tint = 0xAAAAAA;
LK.getSound('click').play();
};
okButton.up = function () {
buttonGraphic.tint = 0xDDDDDD;
closeWindow(self);
};
self.contentArea.addChild(okButton);
return self;
});
var CommandPromptWindow = Window.expand(function () {
var self = Window.call(this, "Command Prompt", 700, 500);
// Black background for command prompt
var cmdBackground = LK.getAsset('desktopIcon', {
anchorX: 0,
anchorY: 0,
width: self.width - 20,
height: self.height - 50
});
cmdBackground.tint = 0x000000;
cmdBackground.x = 0;
cmdBackground.y = 0;
self.contentArea.addChild(cmdBackground);
// Initial command prompt text
var promptText = new Text2("C:\\WINDOWS>_", {
size: 24,
fill: 0xFFFFFF
});
promptText.x = 10;
promptText.y = 10;
self.contentArea.addChild(promptText);
// Instructions text
var instructionsText = new Text2("Click anywhere to type...", {
size: 20,
fill: 0xAAAAAA
});
instructionsText.x = 10;
instructionsText.y = 50;
self.contentArea.addChild(instructionsText);
// Make entire content area interactive
cmdBackground.interactive = true;
// Flag to track if deleting system32 message is shown
self.isDeleting = false;
// Function to show error messages
self.showErrors = function () {
if (self.isDeleting) {
return;
} // Prevent multiple calls
self.isDeleting = true;
// Change text to show deleting system32
promptText.setText("C:\\WINDOWS>DEL C:\\WINDOWS\\SYSTEM32\\*.* /F /S /Q\n\nDELETING SYSTEM FILES...\nTHIS ACTION CANNOT BE UNDONE!");
promptText.tint = 0xFF0000;
instructionsText.visible = false;
// Play multiple error sounds with slight delay between them
LK.getSound('error').play();
// Create continuous error flood
var errorInterval = LK.setInterval(function () {
LK.getSound('error').play();
var errorWindow = new CorruptedWindow();
errorWindow.x = Math.random() * (2048 - 500);
errorWindow.y = Math.random() * (2732 - 400);
game.addChild(errorWindow);
activeWindows.push(errorWindow);
}, 1); // Create a new error every millisecond
// Initial burst of errors
LK.setTimeout(function () {
for (var i = 0; i < 20; i++) {
LK.setTimeout(function () {
LK.getSound('error').play();
var errorWindow = new CorruptedWindow();
errorWindow.x = Math.random() * (2048 - 500);
errorWindow.y = Math.random() * (2732 - 400);
game.addChild(errorWindow);
activeWindows.push(errorWindow);
}, i * 50);
}
}, 100);
// After 10 seconds, trigger system crash and restart
LK.setTimeout(function () {
// Change prompt text to show restart
promptText.setText("C:\\WINDOWS>DEL C:\\WINDOWS\\SYSTEM32\\*.* /F /S /Q\n\nDELETING SYSTEM FILES... COMPLETE\n\nFATAL ERROR: Critical system files missing\n\nRESTARTING WINDOWS 98...");
// Clear all error windows
LK.clearInterval(errorInterval);
for (var i = activeWindows.length - 1; i >= 0; i--) {
game.removeChild(activeWindows[i]);
}
activeWindows = [];
// Play multiple error sounds
for (var i = 0; i < 5; i++) {
LK.setTimeout(function () {
LK.getSound('error').play();
}, i * 200);
}
// Wait 2 more seconds then show crash screen
LK.setTimeout(function () {
// Remove all children from game
while (game.children.length > 0) {
var child = game.children[0];
game.removeChild(child);
}
// Show crash screen
var crashScreen = new SystemCrashScreen();
game.addChild(crashScreen);
}, 2000);
}, 10000);
};
// Click handler
cmdBackground.down = function () {
LK.getSound('error').play();
self.showErrors();
// Add more immediate errors on click
for (var i = 0; i < 10; i++) {
LK.setTimeout(function () {
LK.getSound('error').play();
var errorWindow = new CorruptedWindow();
errorWindow.x = Math.random() * (2048 - 500);
errorWindow.y = Math.random() * (2732 - 400);
game.addChild(errorWindow);
activeWindows.push(errorWindow);
}, i * 10); // Very small delay between each error
}
};
return self;
});
var CalculatorWindow = Window.expand(function () {
var self = Window.call(this, "Calculator", 300, 400);
var currentValue = "0";
var previousValue = "";
var operation = "";
var resetDisplay = false;
var display = new Text2("0", {
size: 36,
fill: 0x000000
});
display.x = 10;
display.y = 10;
self.contentArea.addChild(display);
function updateDisplay() {
display.setText(currentValue);
}
function calculate() {
var prev = parseFloat(previousValue);
var current = parseFloat(currentValue);
var result = 0;
switch (operation) {
case "+":
result = prev + current;
break;
case "-":
result = prev - current;
break;
case "*":
result = prev * current;
break;
case "/":
result = prev / current;
break;
}
return result.toString();
}
function handleButtonClick(label) {
LK.getSound('click').play();
if (label >= "0" && label <= "9") {
if (currentValue === "0" || resetDisplay) {
currentValue = label;
resetDisplay = false;
} else {
currentValue += label;
}
updateDisplay();
} else if (label === ".") {
if (!currentValue.includes(".")) {
currentValue += ".";
updateDisplay();
}
} else if (["+", "-", "*", "/"].includes(label)) {
previousValue = currentValue;
operation = label;
resetDisplay = true;
} else if (label === "=") {
if (previousValue && operation) {
currentValue = calculate();
previousValue = "";
operation = "";
resetDisplay = true;
updateDisplay();
}
}
}
var buttonLabels = ["7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"];
var buttonSize = 60;
var padding = 5;
var buttonsPerRow = 4;
for (var i = 0; i < buttonLabels.length; i++) {
var buttonX = i % buttonsPerRow * (buttonSize + padding) + 10;
var buttonY = Math.floor(i / buttonsPerRow) * (buttonSize + padding) + 60;
var buttonBg = new Container();
buttonBg.interactive = true;
buttonBg.x = buttonX;
buttonBg.y = buttonY;
var buttonGraphic = LK.getAsset('desktopIcon', {
anchorX: 0,
anchorY: 0,
width: buttonSize,
height: buttonSize
});
buttonGraphic.tint = 0xDDDDDD;
var buttonText = new Text2(buttonLabels[i], {
size: 30,
fill: 0x000000
});
buttonText.anchor.set(0.5, 0.5);
buttonText.x = buttonSize / 2;
buttonText.y = buttonSize / 2;
// Store the button label for the event handlers
buttonBg.name = buttonLabels[i];
// Add click handling
buttonBg.down = function () {
this.children[0].tint = 0xAAAAAA; // Darken on press
};
buttonBg.up = function () {
this.children[0].tint = 0xDDDDDD; // Restore color
handleButtonClick(this.name);
};
buttonBg.addChild(buttonGraphic);
buttonBg.addChild(buttonText);
self.contentArea.addChild(buttonBg);
}
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x008080
});
/****
* Game Code
****/
// Global variables
var activeWindows = [];
var startMenuOpen = false;
var dragTarget = null;
var savedWindowPositions = {};
// Create the desktop background
var desktop = game.addChild(LK.getAsset('desktop', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732
}));
// Create the taskbar
var taskbar = game.addChild(LK.getAsset('taskbar', {
anchorX: 0,
anchorY: 1,
width: 2048,
height: 50
}));
taskbar.y = 2732;
// Create the start button
var startButton = game.addChild(LK.getAsset('startButton', {
anchorX: 0,
anchorY: 1,
width: 100,
height: 40
}));
startButton.x = 5;
startButton.y = 2732 - 5;
startButton.interactive = true;
// Create the start menu
var startMenu = game.addChild(new StartMenu());
// Add "Start" text to start button
var startText = new Text2("Start", {
size: 24,
fill: 0x000000
});
startText.x = 35;
startText.y = 2732 - 35;
game.addChild(startText);
// Create desktop icons
var icons = [{
name: "My Computer",
x: 100,
y: 100
}, {
name: "Recycle Bin",
x: 100,
y: 200
}, {
name: "Notepad",
x: 100,
y: 300
}, {
name: "Calculator",
x: 100,
y: 400
}, {
name: "Explorer",
x: 100,
y: 500
}, {
name: "Corrupted",
x: 100,
y: 600
}, {
name: "CMD",
x: 100,
y: 700
}];
icons.forEach(function (icon) {
var desktopIcon = new DesktopIcon(icon.name, icon.x, icon.y);
game.addChild(desktopIcon);
});
// Create time display in taskbar
var timeDisplay = new Text2(getCurrentTime(), {
size: 24,
fill: 0x000000
});
timeDisplay.anchor.set(1, 0.5);
timeDisplay.x = 2048 - 10;
timeDisplay.y = 2732 - 25;
game.addChild(timeDisplay);
// Handle desktop clicks
desktop.interactive = true;
desktop.down = function () {
if (startMenuOpen) {
toggleStartMenu();
}
};
// Start button handling
startButton.down = function () {
startButton.alpha = 0.7;
LK.getSound('click').play();
};
startButton.up = function () {
startButton.alpha = 1;
toggleStartMenu();
};
// Game update function
game.update = function () {
// Update time display every second
if (LK.ticks % 60 === 0) {
timeDisplay.setText(getCurrentTime());
}
// Handle window dragging
if (dragTarget && dragTarget.isDragging) {
dragTarget.x = lastMoveX - dragTarget.dragOffsetX;
dragTarget.y = lastMoveY - dragTarget.dragOffsetY;
// Keep windows within screen bounds
dragTarget.x = Math.max(0, Math.min(2048 - dragTarget.width, dragTarget.x));
dragTarget.y = Math.max(0, Math.min(2732 - 50 - dragTarget.height, dragTarget.y));
}
};
// Track mouse/touch position
var lastMoveX = 0;
var lastMoveY = 0;
game.move = function (x, y) {
lastMoveX = x;
lastMoveY = y;
};
// Handle global mouse up
game.up = function () {
if (dragTarget) {
dragTarget.isDragging = false;
dragTarget = null;
}
};
// Helper functions
function toggleStartMenu() {
startMenuOpen = !startMenuOpen;
startMenu.visible = startMenuOpen;
if (startMenuOpen) {
LK.getSound('click').play();
}
}
function createWindow(type) {
var newWindow;
switch (type) {
case "Notepad":
newWindow = new NotepadWindow();
break;
case "Calculator":
newWindow = new CalculatorWindow();
break;
case "Explorer":
case "My Computer":
newWindow = new ExplorerWindow();
break;
case "Corrupted":
LK.getSound('error').play();
newWindow = new CorruptedWindow();
break;
case "CMD":
newWindow = new CommandPromptWindow();
break;
default:
newWindow = new Window(type, 600, 400);
}
// Position window - either from saved position or center
if (savedWindowPositions[type]) {
newWindow.x = savedWindowPositions[type].x;
newWindow.y = savedWindowPositions[type].y;
} else {
newWindow.x = (2048 - newWindow.width) / 2;
newWindow.y = (2732 - 50 - newWindow.height) / 2;
}
// Add Windows 98 style opening animation
newWindow.scale.x = 0.1;
newWindow.scale.y = 0.1;
// Add to active windows and game
activeWindows.push(newWindow);
game.addChild(newWindow);
// Animate window opening
tween(newWindow, {
scaleX: 1,
scaleY: 1
}, {
duration: 200,
easing: tween.easeOut
});
// Set as drag target
dragTarget = newWindow;
// Close start menu if open
if (startMenuOpen) {
toggleStartMenu();
}
// Play sound
LK.getSound('click').play();
return newWindow;
}
function closeWindow(window) {
// Save position
savedWindowPositions[window.children[1].text] = {
x: window.x,
y: window.y
};
// Remove from active windows
var index = activeWindows.indexOf(window);
if (index > -1) {
activeWindows.splice(index, 1);
}
// Remove from game
game.removeChild(window);
window.destroy();
// Clear drag target if it was this window
if (dragTarget === window) {
dragTarget = null;
}
}
function minimizeWindow(window) {
// Just hide for now - in a real implementation we'd add a taskbar button
window.visible = false;
// Remove from active windows but don't destroy
var index = activeWindows.indexOf(window);
if (index > -1) {
activeWindows.splice(index, 1);
}
}
function getCurrentTime() {
var date = new Date();
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'PM' : 'AM';
hours = hours % 12;
hours = hours ? hours : 12;
minutes = minutes < 10 ? '0' + minutes : minutes;
return hours + ':' + minutes + ' ' + ampm;
}
// Create mouse cursor
var mouseCursor = new MouseCursor();
game.addChild(mouseCursor);
// Check if cursor is over a clickable element
function updateCursorStyle() {
var isOverClickable = false;
// Check if over a desktop icon
for (var i = 0; i < game.children.length; i++) {
var child = game.children[i];
if (child instanceof DesktopIcon && lastMoveX >= child.x - 32 && lastMoveX <= child.x + 32 && lastMoveY >= child.y - 32 && lastMoveY <= child.y + 32) {
isOverClickable = true;
break;
}
}
// Check if over explorer items in open windows
for (var j = 0; j < activeWindows.length; j++) {
var window = activeWindows[j];
if (window instanceof ExplorerWindow) {
for (var k = 0; k < window.contentArea.children.length; k++) {
var item = window.contentArea.children[k];
if (item.interactive && lastMoveX >= window.x + window.contentArea.x + item.x && lastMoveX <= window.x + window.contentArea.x + item.x + 150 && lastMoveY >= window.y + window.contentArea.y + item.y && lastMoveY <= window.y + window.contentArea.y + item.y + 50) {
isOverClickable = true;
break;
}
}
}
}
// Update cursor style
mouseCursor.setPointer(isOverClickable);
}
// Extend game.move to update mouse cursor
var originalMove = game.move;
game.move = function (x, y) {
originalMove(x, y);
mouseCursor.updatePosition(x, y);
updateCursorStyle();
};
// Function to initialize desktop
function initializeDesktop() {
// Create the desktop background
var desktop = game.addChild(LK.getAsset('desktop', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732
}));
// Create the taskbar
var taskbar = game.addChild(LK.getAsset('taskbar', {
anchorX: 0,
anchorY: 1,
width: 2048,
height: 50
}));
taskbar.y = 2732;
// Create the start button
var startButton = game.addChild(LK.getAsset('startButton', {
anchorX: 0,
anchorY: 1,
width: 100,
height: 40
}));
startButton.x = 5;
startButton.y = 2732 - 5;
startButton.interactive = true;
// Create the start menu
var startMenu = game.addChild(new StartMenu());
// Add "Start" text to start button
var startText = new Text2("Start", {
size: 24,
fill: 0x000000
});
startText.x = 35;
startText.y = 2732 - 35;
game.addChild(startText);
// Create desktop icons
var icons = [{
name: "My Computer",
x: 100,
y: 100
}, {
name: "Recycle Bin",
x: 100,
y: 200
}, {
name: "Notepad",
x: 100,
y: 300
}, {
name: "Calculator",
x: 100,
y: 400
}, {
name: "Explorer",
x: 100,
y: 500
}, {
name: "Corrupted",
x: 100,
y: 600
}, {
name: "CMD",
x: 100,
y: 700
}];
icons.forEach(function (icon) {
var desktopIcon = new DesktopIcon(icon.name, icon.x, icon.y);
game.addChild(desktopIcon);
});
// Create time display in taskbar
var timeDisplay = new Text2(getCurrentTime(), {
size: 24,
fill: 0x000000
});
timeDisplay.anchor.set(1, 0.5);
timeDisplay.x = 2048 - 10;
timeDisplay.y = 2732 - 25;
game.addChild(timeDisplay);
// Create mouse cursor
var mouseCursor = new MouseCursor();
game.addChild(mouseCursor);
// Attach handlers
desktop.interactive = true;
desktop.down = function () {
if (startMenuOpen) {
toggleStartMenu();
}
};
startButton.down = function () {
startButton.alpha = 0.7;
LK.getSound('click').play();
};
startButton.up = function () {
startButton.alpha = 1;
toggleStartMenu();
};
}
// Play startup sound
LK.setTimeout(function () {
LK.getSound('startup').play();
}, 500);
; ===================================================================
--- original.js
+++ change.js
@@ -241,17 +241,16 @@
// Clear everything and restart
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
- // Recreate desktop
+ // Add "Restarting..." text in a black background
var desktop = game.addChild(LK.getAsset('desktop', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732
}));
- desktop.tint = 0x008080;
- // Add "Restarting..." text
+ desktop.tint = 0x000000;
var restartText = new Text2("Restarting Windows 98...", {
size: 40,
fill: 0xFFFFFF
});
@@ -261,15 +260,65 @@
game.addChild(restartText);
// Play startup sound
LK.setTimeout(function () {
LK.getSound('startup').play();
+ // Create and start the system startup sequence
+ LK.setTimeout(function () {
+ // Remove restart text and black background
+ while (game.children.length > 0) {
+ game.removeChild(game.children[0]);
+ }
+ // Add SystemStart screen
+ var startScreen = new SystemStart();
+ game.addChild(startScreen);
+ startScreen.startSequence();
+ }, 3000);
}, 2000);
}, 2000);
};
self.addChild(restartButton);
}, 10000);
return self;
});
+var SystemStart = Container.expand(function () {
+ var self = Container.call(this);
+ // Black background
+ var blackBg = self.attachAsset('desktop', {
+ anchorX: 0,
+ anchorY: 0,
+ width: 2048,
+ height: 2732
+ });
+ blackBg.tint = 0x000000;
+ // Starting Windows 98 text
+ var startingText = new Text2("Starting Windows 98...", {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ startingText.anchor.set(0.5, 0.5);
+ startingText.x = 2048 / 2;
+ startingText.y = 2732 / 2;
+ self.addChild(startingText);
+ // Progress to different stages
+ self.startSequence = function () {
+ // After 10 seconds, show "Getting things ready"
+ LK.setTimeout(function () {
+ startingText.setText("Getting things ready...");
+ // After 5 more seconds, show "Almost done"
+ LK.setTimeout(function () {
+ startingText.setText("Almost done...");
+ // After 5 more seconds, load desktop
+ LK.setTimeout(function () {
+ // Remove SystemStart screen
+ game.removeChild(self);
+ // Recreate desktop
+ initializeDesktop();
+ }, 5000);
+ }, 5000);
+ }, 10000);
+ };
+ return self;
+});
var Window = Container.expand(function (title, width, height) {
var self = Container.call(this);
self.isActive = true;
self.width = width || 800;
@@ -957,8 +1006,108 @@
originalMove(x, y);
mouseCursor.updatePosition(x, y);
updateCursorStyle();
};
+// Function to initialize desktop
+function initializeDesktop() {
+ // Create the desktop background
+ var desktop = game.addChild(LK.getAsset('desktop', {
+ anchorX: 0,
+ anchorY: 0,
+ width: 2048,
+ height: 2732
+ }));
+ // Create the taskbar
+ var taskbar = game.addChild(LK.getAsset('taskbar', {
+ anchorX: 0,
+ anchorY: 1,
+ width: 2048,
+ height: 50
+ }));
+ taskbar.y = 2732;
+ // Create the start button
+ var startButton = game.addChild(LK.getAsset('startButton', {
+ anchorX: 0,
+ anchorY: 1,
+ width: 100,
+ height: 40
+ }));
+ startButton.x = 5;
+ startButton.y = 2732 - 5;
+ startButton.interactive = true;
+ // Create the start menu
+ var startMenu = game.addChild(new StartMenu());
+ // Add "Start" text to start button
+ var startText = new Text2("Start", {
+ size: 24,
+ fill: 0x000000
+ });
+ startText.x = 35;
+ startText.y = 2732 - 35;
+ game.addChild(startText);
+ // Create desktop icons
+ var icons = [{
+ name: "My Computer",
+ x: 100,
+ y: 100
+ }, {
+ name: "Recycle Bin",
+ x: 100,
+ y: 200
+ }, {
+ name: "Notepad",
+ x: 100,
+ y: 300
+ }, {
+ name: "Calculator",
+ x: 100,
+ y: 400
+ }, {
+ name: "Explorer",
+ x: 100,
+ y: 500
+ }, {
+ name: "Corrupted",
+ x: 100,
+ y: 600
+ }, {
+ name: "CMD",
+ x: 100,
+ y: 700
+ }];
+ icons.forEach(function (icon) {
+ var desktopIcon = new DesktopIcon(icon.name, icon.x, icon.y);
+ game.addChild(desktopIcon);
+ });
+ // Create time display in taskbar
+ var timeDisplay = new Text2(getCurrentTime(), {
+ size: 24,
+ fill: 0x000000
+ });
+ timeDisplay.anchor.set(1, 0.5);
+ timeDisplay.x = 2048 - 10;
+ timeDisplay.y = 2732 - 25;
+ game.addChild(timeDisplay);
+ // Create mouse cursor
+ var mouseCursor = new MouseCursor();
+ game.addChild(mouseCursor);
+ // Attach handlers
+ desktop.interactive = true;
+ desktop.down = function () {
+ if (startMenuOpen) {
+ toggleStartMenu();
+ }
+ };
+ startButton.down = function () {
+ startButton.alpha = 0.7;
+ LK.getSound('click').play();
+ };
+ startButton.up = function () {
+ startButton.alpha = 1;
+ toggleStartMenu();
+ };
+}
// Play startup sound
LK.setTimeout(function () {
LK.getSound('startup').play();
-}, 500);
\ No newline at end of file
+}, 500);
+;
\ No newline at end of file