/****
* Classes
****/
// Class for Connection
var Connection = Container.expand(function () {
var self = Container.call(this);
var connectionGraphics = self.attachAsset('connection', {
anchorX: 0.5,
anchorY: 0.5
});
self.updatePosition = function (startX, startY, endX, endY) {
self.x = (startX + endX) / 2;
self.y = (startY + endY) / 2;
// Calculate rotation and length based on start and end points
var dx = endX - startX;
var dy = endY - startY;
self.rotation = Math.atan2(dy, dx);
connectionGraphics.width = Math.sqrt(dx * dx + dy * dy);
};
});
// Class for Letter N
var LetterN = Container.expand(function () {
var self = Container.call(this);
var letterNGraphics = self.attachAsset('dot', {
anchorX: 0.5,
anchorY: 0.5
});
self.isConnected = false;
self.connect = function () {
self.isConnected = true;
letterNGraphics.tint = 0x00ff00; // Change color to green when connected
};
self.disconnect = function () {
self.isConnected = false;
letterNGraphics.tint = 0xff0000; // Change color to red when disconnected
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for Machine
var Machine = Container.expand(function () {
var self = Container.call(this);
var machineGraphics = self.attachAsset('dot', {
anchorX: 0.5,
anchorY: 0.5
});
self.isConnected = false;
self.connect = function () {
self.isConnected = true;
machineGraphics.tint = 0x00ff00; // Change color to green when connected
};
self.disconnect = function () {
self.isConnected = false;
machineGraphics.tint = 0xff0000; // Change color to red when disconnected
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Initialize machines and connections
var machines = [];
var connections = [];
var selectedMachine = null;
// Create machines and letter N
for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
var dot = new Machine();
dot.x = 250 + i * 250 + 520;
dot.y = 250 + j * 250 + 1500;
machines.push(dot);
game.addChild(dot);
if (i == 1 && j == 1) {
var letterN = new LetterN();
letterN.x = dot.x;
letterN.y = dot.y;
machines.push(letterN);
game.addChild(letterN);
}
}
}
// Handle touch events for machines
machines.forEach(function (machine) {
machine.down = function (x, y, obj) {
if (!selectedMachine) {
selectedMachine = machine;
} else {
if (selectedMachine !== machine) {
var connection = new Connection();
connection.updatePosition(selectedMachine.x, selectedMachine.y, machine.x, machine.y);
connections.push(connection);
game.addChild(connection);
selectedMachine.connect();
machine.connect();
selectedMachine = null;
}
}
};
});
// Add phone asset to the center bottom of the map
var M1 = LK.getAsset('M1', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChildAt(M1, 0);
var phone = LK.getAsset('phone', {
anchorX: 0.5,
anchorY: 1.0,
x: 2048 / 2,
y: 2732
});
game.addChildAt(phone, 1);
// Create a Text2 object to display the current time
var timeText = new Text2('', {
size: 40,
fill: 0xFFFFFF
});
timeText.anchor.set(0.5, 0.5);
timeText.x = phone.x;
timeText.y = phone.y - phone.height / 2 + timeText.height / 2 - 680; // Position the time text at the top of the phone screen
game.addChild(timeText);
// Update the time text every second
var updateTime = function updateTime() {
var date = new Date();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
// Format the time as HH:MM:SS
var timeString = (hours < 10 ? '0' : '') + hours + ':' + (minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
timeText.setText(timeString);
};
updateTime();
LK.setInterval(updateTime, 1000); // Update the time every second
// Update game logic
game.update = function () {
// Check if all machines and the letter N are connected
var allConnected = machines.every(function (machine) {
return machine.isConnected;
});
var letterNConnected = machines.some(function (machine) {
return machine instanceof LetterN && machine.isConnected;
});
if (allConnected && letterNConnected) {
// Display success message
var successTxt = new Text2('Unlocked', {
size: 100,
fill: 0x00FF00
});
successTxt.anchor.set(0.5, 0.5);
LK.gui.center.addChild(successTxt);
}
}; /****
* Classes
****/
// Class for Connection
var Connection = Container.expand(function () {
var self = Container.call(this);
var connectionGraphics = self.attachAsset('connection', {
anchorX: 0.5,
anchorY: 0.5
});
self.updatePosition = function (startX, startY, endX, endY) {
self.x = (startX + endX) / 2;
self.y = (startY + endY) / 2;
// Calculate rotation and length based on start and end points
var dx = endX - startX;
var dy = endY - startY;
self.rotation = Math.atan2(dy, dx);
connectionGraphics.width = Math.sqrt(dx * dx + dy * dy);
};
});
// Class for Letter N
var LetterN = Container.expand(function () {
var self = Container.call(this);
var letterNGraphics = self.attachAsset('dot', {
anchorX: 0.5,
anchorY: 0.5
});
self.isConnected = false;
self.connect = function () {
self.isConnected = true;
letterNGraphics.tint = 0x00ff00; // Change color to green when connected
};
self.disconnect = function () {
self.isConnected = false;
letterNGraphics.tint = 0xff0000; // Change color to red when disconnected
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for Machine
var Machine = Container.expand(function () {
var self = Container.call(this);
var machineGraphics = self.attachAsset('dot', {
anchorX: 0.5,
anchorY: 0.5
});
self.isConnected = false;
self.connect = function () {
self.isConnected = true;
machineGraphics.tint = 0x00ff00; // Change color to green when connected
};
self.disconnect = function () {
self.isConnected = false;
machineGraphics.tint = 0xff0000; // Change color to red when disconnected
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Initialize machines and connections
var machines = [];
var connections = [];
var selectedMachine = null;
// Create machines and letter N
for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
var dot = new Machine();
dot.x = 250 + i * 250 + 520;
dot.y = 250 + j * 250 + 1500;
machines.push(dot);
game.addChild(dot);
if (i == 1 && j == 1) {
var letterN = new LetterN();
letterN.x = dot.x;
letterN.y = dot.y;
machines.push(letterN);
game.addChild(letterN);
}
}
}
// Handle touch events for machines
machines.forEach(function (machine) {
machine.down = function (x, y, obj) {
if (!selectedMachine) {
selectedMachine = machine;
} else {
if (selectedMachine !== machine) {
var connection = new Connection();
connection.updatePosition(selectedMachine.x, selectedMachine.y, machine.x, machine.y);
connections.push(connection);
game.addChild(connection);
selectedMachine.connect();
machine.connect();
selectedMachine = null;
}
}
};
});
// Add phone asset to the center bottom of the map
var M1 = LK.getAsset('M1', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChildAt(M1, 0);
var phone = LK.getAsset('phone', {
anchorX: 0.5,
anchorY: 1.0,
x: 2048 / 2,
y: 2732
});
game.addChildAt(phone, 1);
// Create a Text2 object to display the current time
var timeText = new Text2('', {
size: 40,
fill: 0xFFFFFF
});
timeText.anchor.set(0.5, 0.5);
timeText.x = phone.x;
timeText.y = phone.y - phone.height / 2 + timeText.height / 2 - 680; // Position the time text at the top of the phone screen
game.addChild(timeText);
// Update the time text every second
var updateTime = function updateTime() {
var date = new Date();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
// Format the time as HH:MM:SS
var timeString = (hours < 10 ? '0' : '') + hours + ':' + (minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
timeText.setText(timeString);
};
updateTime();
LK.setInterval(updateTime, 1000); // Update the time every second
// Update game logic
game.update = function () {
// Check if all machines and the letter N are connected
var allConnected = machines.every(function (machine) {
return machine.isConnected;
});
var letterNConnected = machines.some(function (machine) {
return machine instanceof LetterN && machine.isConnected;
});
if (allConnected && letterNConnected) {
// Display success message
var successTxt = new Text2('Unlocked', {
size: 100,
fill: 0x00FF00
});
successTxt.anchor.set(0.5, 0.5);
LK.gui.center.addChild(successTxt);
}
};