2009scape-website/site/candybox/scripts/shop.js
2020-11-29 20:55:42 -05:00

186 lines
7.6 KiB
JavaScript

var shop = {
// Variables
buy10LollipopsButtonShown : false, // True if the buy 10 lollipops button should be shown
shown : false, // True if the shop is currently shown
ticklingStep : 0, // Tickling step (increase when we click on the merchant's hat
clickingOnLollipopStep : 0, // Clicking on lollipop step (increase when we clicked on the top of the lollipop sold at the shop)
oneLollipopPrice : 0, // Price of one lollipop, calculated depending on the clicking on lollipop step
tenLollipopsPrice : 0, // Price of ten lollipops, calculated the same way as above
currentSwordButtonId : "none", // Contains the id of the current sword buying button
currentSwordPrice : 0, // Contains the price of the current sword being sold by the merchant
// Functions
onload : function(){
lollipops.delivery(); // The merchant must have some lollipops in stock at the beginning, so we make a delivery
this.setClickingOnLollipopStep(0); // This also set the lollipops price !
},
check : function(){
if(candies.nbrOwned >= this.oneLollipopPrice){
this.setShown(true);
}
if(candies.nbrOwned >= 150){
// If we don't have any sword and there's no sword to sell yet, we show the wooden sword
if(sword.name == "none" && this.currentSwordButtonId == "none"){
this.showProduct("wooden_sword");
}
}
},
setBuy10LollipopsButtonShown : function(value){
this.buy10LollipopsButtonShown = value;
},
clickedOnHat : function(){
switch(this.ticklingStep){
case 0:
this.setMerchantSpeech("Hey ! You touched my hat !");
break;
case 1:
this.setMerchantSpeech("Stop that, stop that ! You're tickling me !");
break;
case 2:
this.setMerchantSpeech("Hahahaha ! I'm so ticklish !");
break;
case 3:
this.setMerchantSpeech("Listen, listen : I give you 100 candies ! But stop that please !");
candies.setNbrOwned(candies.nbrOwned + 100);
break;
}
this.setTicklingStep(this.ticklingStep + 1);
},
setTicklingStep : function(value){
this.ticklingStep = value;
},
setClickingOnLollipopStep : function(value){
this.clickingOnLollipopStep = value;
// Set the buttons value if the step is 0 or the price is reducing or is reduced
if(this.clickingOnLollipopStep <= 4){
this.oneLollipopPrice = 60;
this.tenLollipopsPrice = 500;
htmlInteraction.setInnerHtml("buy_1_lollipop", "Buy a lollipop (60 candies)");
htmlInteraction.setInnerHtml("buy_10_lollipops", "Buy 10 lollipop (500 candies)");
}
else if(this.clickingOnLollipopStep >= 5 && this.clickingOnLollipopStep < 15){
this.oneLollipopPrice = 60 - (this.clickingOnLollipopStep - 4);
this.tenLollipopsPrice = 500 - (this.clickingOnLollipopStep - 4) * 5;
htmlInteraction.setInnerHtml("buy_1_lollipop", "Buy a lollipop (" + this.oneLollipopPrice + " candies)");
htmlInteraction.setInnerHtml("buy_10_lollipops", "Buy 10 lollipop (" + this.tenLollipopsPrice + " candies)");
}
else{
this.oneLollipopPrice = 60 - (14 - 4);
this.tenLollipopsPrice = 500 - (14 - 4) * 5;
htmlInteraction.setInnerHtml("buy_1_lollipop", "Buy a lollipop (" + this.oneLollipopPrice + " candies)");
htmlInteraction.setInnerHtml("buy_10_lollipops", "Buy 10 lollipop (" + this.tenLollipopsPrice + " candies)");
}
},
clickedOnLollipop : function(){
this.setClickingOnLollipopStep(this.clickingOnLollipopStep + 1);
// Possibly change the merchant speech
switch(this.clickingOnLollipopStep){
case 1:
this.setMerchantSpeech("Hey ! Don't touch the products !");
break;
case 2:
this.setMerchantSpeech("Seriously, don't touch this lollipop.");
break;
case 3:
this.setMerchantSpeech("Don't touch it ! Other customers may lick it after that, that's gross !");
break;
case 4:
this.setMerchantSpeech("Stop now or I'll be force to do something.");
break;
case 15:
this.setMerchantSpeech("I can't make a lower price... Please stop.");
break;
}
if(this.clickingOnLollipopStep >= 5 && this.clickingOnLollipopStep < 15){
this.setMerchantSpeech("Okay, okay, I lower the price, but stop touching it !");
}
},
showProduct : function(id){
switch(id){
// If it's a special product
case "wooden_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiWoodenSwordWithButton);
this.currentSwordButtonId = "buy_wooden_sword";
this.currentSwordPrice = 150;
break;
case "copper_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiCopperSwordWithButton);
this.currentSwordButtonId = "buy_copper_sword";
this.currentSwordPrice = 300;
break;
case "iron_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiIronSwordWithButton);
this.currentSwordButtonId = "buy_iron_sword";
this.currentSwordPrice = 500;
break;
case "silver_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiSilverSwordWithButton);
this.currentSwordButtonId = "buy_silver_sword";
this.currentSwordPrice = 1000;
break;
case "diamond_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiDiamondSwordWithButton);
this.currentSwordButtonId = "buy_diamond_sword";
this.currentSwordPrice = 2000;
break;
// Else, we just show the html element corresponding to the received id
default:
htmlInteraction.setElementVisibility(id, true);
htmlInteraction.setElementDisplay(id, "block");
break;
}
},
show : function(){
// We show the shop
if(htmlInteraction.isElementVisible("shop") == false){ // If the shop isn't already visible
htmlInteraction.setElementVisibility("shop", true);
this.setMerchantSpeech("Hello, I'm the candy merchant. I would do anything for candies. My lollipops are delicious!");
}
// And the lollipop we can buy :)
this.showProduct("lollipop");
},
setShown : function(value){
// If the new value is true but it was false before, we show the shop
if(value == true && this.shown == false)
{
this.show();
}
// We change the value
this.shown = value;
},
hideProduct : function(id){
// If it's a special product
if(id == "sword"){
this.currentSwordButtonId = "none";
htmlInteraction.setInnerHtml("sword_with_button", "");
}
// Else
else{
htmlInteraction.setElementVisibility(id, false);
htmlInteraction.setElementDisplay(id, "none");
}
},
setMerchantSpeech : function(text){
htmlInteraction.setInnerHtml("merchant_speech", speech.makeSpeechFromText(text, 20, " "));
}
};