/**** 
* Classes
****/ 
// Clean Bar class
var CleanBar = Container.expand(function () {
	var self = Container.call(this);
	// Clean Bar visuals
	var barGraphics = self.attachAsset('cleanBar', {
		anchorX: 0.0,
		anchorY: 0.5
	});
	// Method to update the clean bar
	self.update = function (cleanliness) {
		self.scaleX = cleanliness / 100;
	};
});
// Happiness Bar class
var HappinessBar = Container.expand(function () {
	var self = Container.call(this);
	// Happiness Bar visuals
	var barGraphics = self.attachAsset('happinessBar', {
		anchorX: 0.0,
		anchorY: 0.5
	});
	// Method to update the happiness bar
	self.update = function (happiness) {
		self.scaleX = happiness / 100;
	};
});
// Assets will be automatically generated based on usage in the code.
// Pet class
var Pet = Container.expand(function () {
	var self = Container.call(this);
	// Pet visuals
	var petGraphics = self.attachAsset('pet', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	var tailGraphics = self.attachAsset('tail', {
		anchorX: 0.5,
		anchorY: 1
	});
	tailGraphics.x = petGraphics.width / 2 - 120;
	tailGraphics.y = petGraphics.height / 2 - 400; // Position the tail at the table corner
	self.wagging = false;
	self.wagTail = function () {
		if (LK.ticks % 20 == 0) {
			self.wagging = !self.wagging;
			if (self.wagging) {
				tailGraphics.rotation = 0.3;
				tailGraphics.y = petGraphics.height / 2 - 400 + 10; // Make the tail jump
			} else {
				tailGraphics.rotation = -0.3;
				tailGraphics.y = petGraphics.height / 2 - 400; // Reset the tail position
			}
		}
	};
	// Pet properties
	self.happiness = 100; // Max happiness
	self.health = 100; // Max health
	// Method to feed the pet
	self.feed = function () {
		self.happiness += 10;
		self.health += 5;
		// Ensure values do not exceed 100
		self.happiness = Math.min(self.happiness, 100);
		self.health = Math.min(self.health, 100);
	};
	// Method to play with the pet
	self.play = function () {
		self.happiness += 15;
		// Ensure happiness does not exceed 100
		self.happiness = Math.min(self.happiness, 100);
	};
	// Update pet status
	self.update = function () {
		// Decrease happiness and health over time
		self.happiness -= 0.05;
		self.health -= 0.02;
		// Ensure values do not drop below 0
		self.happiness = Math.max(self.happiness, 0);
		self.health = Math.max(self.health, 0);
	};
	self.bark = function () {
		console.log("Bark!");
	};
	self.jump = function () {
		var jumpHeight = 200;
		var jumpDuration = 60;
		var originalY = self.y;
		var jumpProgress = 0;
		var jumpInterval = LK.setInterval(function () {
			jumpProgress++;
			var progressRatio = jumpProgress / jumpDuration;
			if (progressRatio <= 0.5) {
				self.y = originalY - jumpHeight * (2 * progressRatio);
			} else {
				self.y = originalY - jumpHeight * (2 * (1 - progressRatio));
			}
			if (jumpProgress >= jumpDuration) {
				LK.clearInterval(jumpInterval);
				self.y = originalY;
			}
		}, 1000 / 60);
	};
	var speechBubble = null;
	self.on('down', function () {
		self.jump();
		if (speechBubble) {
			speechBubble.destroy();
		}
		speechBubble = self.addChild(LK.getAsset('speechBubble', {
			x: 0,
			y: -200,
			anchorX: 0.5,
			anchorY: 0.5
		}));
		LK.setTimeout(function () {
			speechBubble.destroy();
			speechBubble = null;
		}, 2000);
	});
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB // Light blue background
});
/**** 
* Game Code
****/ 
var livingRoomBackground = game.addChild(LK.getAsset('livingRoom', {
	x: 0,
	y: 0,
	anchorX: 0,
	anchorY: 0
}));
// Create pet instance
var pet = game.addChild(new Pet());
// Create happiness bar instance
var happinessBar = game.addChild(new HappinessBar());
// Create clean bar instance
var cleanBar = game.addChild(new CleanBar());
// Position the clean bar under the happiness bar
cleanBar.x = 50;
cleanBar.y = 200;
happinessBar.x = 50;
happinessBar.y = 50;
// Position the health bar under the happiness bar
// Position the pet in the center of the screen
pet.x = 2048 / 2;
pet.y = 2000;
// Create interactive buttons for feeding and playing
var feedButton = game.addChild(LK.getAsset('feedButton', {
	x: 300,
	y: 2400,
	anchorX: 0.5,
	anchorY: 0.5
}));
var playButton = game.addChild(LK.getAsset('playButton', {
	x: 1748,
	y: 2400,
	anchorX: 0.5,
	anchorY: 0.5
}));
// Event listener for feed button
feedButton.on('down', function () {
	pet.feed();
	pet.bark();
	happinessBar.update(pet.happiness);
});
// Event listener for play button
playButton.on('down', function () {
	pet.play();
});
// Update game state every tick
LK.on('tick', function () {
	pet.update();
	pet.wagTail();
	// pet.hop(); // Comment out the automatic hopping
	// Update the happiness bar
	happinessBar.update(pet.happiness);
	// Update the clean bar
	cleanBar.update(pet.cleanliness);
	// Decrease happiness by 10% every 5 minutes
	if (LK.ticks % (60 * 60 * 5) == 0) {
		pet.happiness -= pet.happiness * 0.1;
	}
	if (pet.speechBubble) {
		pet.speechBubble.x = pet.x;
		pet.speechBubble.y = pet.y - 300;
	}
});
// Add event listener for game to move pet to location of clicks or taps
var hopInterval = null;
game.on('down', function (obj) {
	var event = obj.event;
	var pos = event.getLocalPosition(game);
	if (hopInterval) {
		LK.clearInterval(hopInterval);
	}
	hopInterval = LK.setInterval(function () {
		if (Math.abs(pet.x - pos.x) < 15 && Math.abs(pet.y - pos.y) < 15) {
			LK.clearInterval(hopInterval);
			return;
		}
		if (pet.x < pos.x) {
			pet.x = Math.min(pet.x + 15, livingRoomBackground.width - pet.width / 2);
			pet.scaleX = -1; // Flip the pet image when moving to the right
		} else {
			pet.x = Math.max(pet.x - 15, pet.width / 2);
			pet.scaleX = 1; // Flip the pet image back to original when moving to the left
		}
		if (pet.y < pos.y) {
			pet.y = Math.min(pet.y + 15, livingRoomBackground.height - pet.height / 2);
		} else {
			pet.y = Math.max(pet.y - 15, livingRoomBackground.height / 2);
		}
	}, 100);
}); /**** 
* Classes
****/ 
// Clean Bar class
var CleanBar = Container.expand(function () {
	var self = Container.call(this);
	// Clean Bar visuals
	var barGraphics = self.attachAsset('cleanBar', {
		anchorX: 0.0,
		anchorY: 0.5
	});
	// Method to update the clean bar
	self.update = function (cleanliness) {
		self.scaleX = cleanliness / 100;
	};
});
// Happiness Bar class
var HappinessBar = Container.expand(function () {
	var self = Container.call(this);
	// Happiness Bar visuals
	var barGraphics = self.attachAsset('happinessBar', {
		anchorX: 0.0,
		anchorY: 0.5
	});
	// Method to update the happiness bar
	self.update = function (happiness) {
		self.scaleX = happiness / 100;
	};
});
// Assets will be automatically generated based on usage in the code.
// Pet class
var Pet = Container.expand(function () {
	var self = Container.call(this);
	// Pet visuals
	var petGraphics = self.attachAsset('pet', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	var tailGraphics = self.attachAsset('tail', {
		anchorX: 0.5,
		anchorY: 1
	});
	tailGraphics.x = petGraphics.width / 2 - 120;
	tailGraphics.y = petGraphics.height / 2 - 400; // Position the tail at the table corner
	self.wagging = false;
	self.wagTail = function () {
		if (LK.ticks % 20 == 0) {
			self.wagging = !self.wagging;
			if (self.wagging) {
				tailGraphics.rotation = 0.3;
				tailGraphics.y = petGraphics.height / 2 - 400 + 10; // Make the tail jump
			} else {
				tailGraphics.rotation = -0.3;
				tailGraphics.y = petGraphics.height / 2 - 400; // Reset the tail position
			}
		}
	};
	// Pet properties
	self.happiness = 100; // Max happiness
	self.health = 100; // Max health
	// Method to feed the pet
	self.feed = function () {
		self.happiness += 10;
		self.health += 5;
		// Ensure values do not exceed 100
		self.happiness = Math.min(self.happiness, 100);
		self.health = Math.min(self.health, 100);
	};
	// Method to play with the pet
	self.play = function () {
		self.happiness += 15;
		// Ensure happiness does not exceed 100
		self.happiness = Math.min(self.happiness, 100);
	};
	// Update pet status
	self.update = function () {
		// Decrease happiness and health over time
		self.happiness -= 0.05;
		self.health -= 0.02;
		// Ensure values do not drop below 0
		self.happiness = Math.max(self.happiness, 0);
		self.health = Math.max(self.health, 0);
	};
	self.bark = function () {
		console.log("Bark!");
	};
	self.jump = function () {
		var jumpHeight = 200;
		var jumpDuration = 60;
		var originalY = self.y;
		var jumpProgress = 0;
		var jumpInterval = LK.setInterval(function () {
			jumpProgress++;
			var progressRatio = jumpProgress / jumpDuration;
			if (progressRatio <= 0.5) {
				self.y = originalY - jumpHeight * (2 * progressRatio);
			} else {
				self.y = originalY - jumpHeight * (2 * (1 - progressRatio));
			}
			if (jumpProgress >= jumpDuration) {
				LK.clearInterval(jumpInterval);
				self.y = originalY;
			}
		}, 1000 / 60);
	};
	var speechBubble = null;
	self.on('down', function () {
		self.jump();
		if (speechBubble) {
			speechBubble.destroy();
		}
		speechBubble = self.addChild(LK.getAsset('speechBubble', {
			x: 0,
			y: -200,
			anchorX: 0.5,
			anchorY: 0.5
		}));
		LK.setTimeout(function () {
			speechBubble.destroy();
			speechBubble = null;
		}, 2000);
	});
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB // Light blue background
});
/**** 
* Game Code
****/ 
var livingRoomBackground = game.addChild(LK.getAsset('livingRoom', {
	x: 0,
	y: 0,
	anchorX: 0,
	anchorY: 0
}));
// Create pet instance
var pet = game.addChild(new Pet());
// Create happiness bar instance
var happinessBar = game.addChild(new HappinessBar());
// Create clean bar instance
var cleanBar = game.addChild(new CleanBar());
// Position the clean bar under the happiness bar
cleanBar.x = 50;
cleanBar.y = 200;
happinessBar.x = 50;
happinessBar.y = 50;
// Position the health bar under the happiness bar
// Position the pet in the center of the screen
pet.x = 2048 / 2;
pet.y = 2000;
// Create interactive buttons for feeding and playing
var feedButton = game.addChild(LK.getAsset('feedButton', {
	x: 300,
	y: 2400,
	anchorX: 0.5,
	anchorY: 0.5
}));
var playButton = game.addChild(LK.getAsset('playButton', {
	x: 1748,
	y: 2400,
	anchorX: 0.5,
	anchorY: 0.5
}));
// Event listener for feed button
feedButton.on('down', function () {
	pet.feed();
	pet.bark();
	happinessBar.update(pet.happiness);
});
// Event listener for play button
playButton.on('down', function () {
	pet.play();
});
// Update game state every tick
LK.on('tick', function () {
	pet.update();
	pet.wagTail();
	// pet.hop(); // Comment out the automatic hopping
	// Update the happiness bar
	happinessBar.update(pet.happiness);
	// Update the clean bar
	cleanBar.update(pet.cleanliness);
	// Decrease happiness by 10% every 5 minutes
	if (LK.ticks % (60 * 60 * 5) == 0) {
		pet.happiness -= pet.happiness * 0.1;
	}
	if (pet.speechBubble) {
		pet.speechBubble.x = pet.x;
		pet.speechBubble.y = pet.y - 300;
	}
});
// Add event listener for game to move pet to location of clicks or taps
var hopInterval = null;
game.on('down', function (obj) {
	var event = obj.event;
	var pos = event.getLocalPosition(game);
	if (hopInterval) {
		LK.clearInterval(hopInterval);
	}
	hopInterval = LK.setInterval(function () {
		if (Math.abs(pet.x - pos.x) < 15 && Math.abs(pet.y - pos.y) < 15) {
			LK.clearInterval(hopInterval);
			return;
		}
		if (pet.x < pos.x) {
			pet.x = Math.min(pet.x + 15, livingRoomBackground.width - pet.width / 2);
			pet.scaleX = -1; // Flip the pet image when moving to the right
		} else {
			pet.x = Math.max(pet.x - 15, pet.width / 2);
			pet.scaleX = 1; // Flip the pet image back to original when moving to the left
		}
		if (pet.y < pos.y) {
			pet.y = Math.min(pet.y + 15, livingRoomBackground.height - pet.height / 2);
		} else {
			pet.y = Math.max(pet.y - 15, livingRoomBackground.height / 2);
		}
	}, 100);
});
 
 
 pixel art living room. Single Game Texture. In-Game asset. 2d. Blank background.
 pixel art dog bowl. Single Game Texture. In-Game asset. 2d. Blank background.
 pixel art window with dog food bags displayed within it. Single Game Texture. In-Game asset. 2d. Blank background.
 pixel art dog bone. Single Game Texture. In-Game asset. 2d. Blank background.
 pixel art horizontal thirst bar that looks like a health bar. Single Game Texture. In-Game asset. 2d. Blank background.
 pixel art heart speech bubble. Single Game Texture. In-Game asset. 2d. Blank background.
 add white backgrund