From 1dca4ee599c81d9d91a447267d42437a8d39f27b Mon Sep 17 00:00:00 2001 From: Lumie Date: Tue, 20 Aug 2024 03:51:00 -0700 Subject: [PATCH 1/3] shop and tutorial --- src/assets/assets.ts | 5 +- src/assets/images/temp/buybutton.png | Bin 0 -> 1159 bytes src/assets/images/temp/invbutton.png | Bin 9953 -> 4244 bytes src/assets/images/temp/otter.png | Bin 0 -> 44429 bytes src/assets/images/temp/shopwindow.png | Bin 0 -> 56583 bytes src/components/Customer.ts | 18 ++ src/components/Employee.ts | 18 ++ src/components/Inventory.ts | 4 + src/components/ShopInventory.ts | 387 ++++++++++++++++++++++++ src/components/ShopItem.ts | 127 ++++++++ src/components/Station.ts | 18 ++ src/components/elements/BuyButton.ts | 35 +++ src/components/elements/SimpleButton.ts | 2 + src/components/elements/SquishButton.ts | 166 ++++++++++ src/components/elements/ToggleButton.ts | 2 + src/scenes/GameScene.ts | 289 +++++++++++++++++- 16 files changed, 1069 insertions(+), 2 deletions(-) create mode 100644 src/assets/images/temp/buybutton.png create mode 100644 src/assets/images/temp/otter.png create mode 100644 src/assets/images/temp/shopwindow.png create mode 100644 src/components/ShopInventory.ts create mode 100644 src/components/ShopItem.ts create mode 100644 src/components/elements/BuyButton.ts create mode 100644 src/components/elements/SquishButton.ts diff --git a/src/assets/assets.ts b/src/assets/assets.ts index 8c6cfb9..da30095 100644 --- a/src/assets/assets.ts +++ b/src/assets/assets.ts @@ -78,6 +78,7 @@ const images: Image[] = [ //temp image('temp/invwindow', 'invwindow'), + image('temp/shopwindow', 'shopwindow'), image('temp/lugia', 'lugia'), image('temp/protogen', 'protogen'), image('temp/triceratops', 'triceratops'), @@ -96,7 +97,7 @@ const images: Image[] = [ /* Spritesheets */ const spritesheets: SpriteSheet[] = [ //temp - spritesheet('temp/invbutton', 'invbutton', 128, 128), + spritesheet('temp/invbutton', 'invbutton', 240, 480), spritesheet('temp/fwbutton', 'fwbutton', 64, 262), spritesheet('temp/rock', 'rock', 100, 100), spritesheet('temp/coke', 'coke', 100, 100), @@ -118,6 +119,8 @@ const spritesheets: SpriteSheet[] = [ spritesheet('temp/greensparks', 'greenspark', 64, 64), spritesheet('temp/defaultsparks', 'defaultspark', 64, 64), spritesheet('temp/blankspr', 'blankspr', 100, 100), + spritesheet('temp/buybutton', 'buybutton', 120, 90), + spritesheet('temp/otter', 'otter', 1080, 1080), ]; /* Audios */ diff --git a/src/assets/images/temp/buybutton.png b/src/assets/images/temp/buybutton.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2ec35bf7f8dbc0b29703047112d444a250f751 GIT binary patch literal 1159 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 M7+C1v*L92e4}9KoRsaA1 diff --git a/src/assets/images/temp/otter.png b/src/assets/images/temp/otter.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a003d1cc57f39863453e2016ae436a1776e049 GIT binary patch literal 44429 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/temp/shopwindow.png b/src/assets/images/temp/shopwindow.png new file mode 100644 index 0000000000000000000000000000000000000000..907a45e955c60c9e3c1df85602f711a51abacb26 GIT binary patch literal 56583 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

yG6D8S_dQ`v;=L= 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 0) { this.title.setText(this.itemList[id].name + " x" + i); diff --git a/src/components/ShopInventory.ts b/src/components/ShopInventory.ts new file mode 100644 index 0000000..d60dcae --- /dev/null +++ b/src/components/ShopInventory.ts @@ -0,0 +1,387 @@ +import { BaseScene } from "@/scenes/BaseScene"; +import { GameScene } from "@/scenes/GameScene"; +import { Item } from "./Item"; +import { SimpleButton } from "./elements/SimpleButton"; +import { ShopItem } from "./ShopItem"; +import { SnapType } from "./Item"; +import { BuyButton } from "./elements/BuyButton"; + +export class ShopInventory extends Phaser.GameObjects.Container { + public scene: GameScene; + public isOpen: boolean = false; + public itemList: Item[]; + public display: ShopItem[]; + public window: Phaser.GameObjects.Image; + public fwButton: SimpleButton; + + public buy1: BuyButton; + public buy5: BuyButton; + public buy10: BuyButton; + public buyall: BuyButton; + + public pricedisp: Phaser.GameObjects.Text; + public myinvdisp: Phaser.GameObjects.Text; + + public title: Phaser.GameObjects.Text; + public tdisplay: Phaser.GameObjects.Text; + private highlightIndex: number = -1; + private currentIndices: number[] = [0,8]; + private coordinates: number[][] = [ + [64,64], [148,64], [232,64], + [64,148], [148,148], [232,148], + [64,232], [148,232], [232,232], + ]; + constructor(scene:GameScene, x:number, y:number, stock:number[]){ + super(scene,x,y); + this.scene=scene; + this.itemList = [ + new Item(0,"rock",stock[0],1,["rock","cheap"],["cheap"],"Complimentary Pet Rock","A loving pet rock to cheer up any customer. Works modestly well.", SnapType.CUSTOMER, "doink"), + new Item(1,"coke",stock[1],10,["drug"],["illegal","cool"],"Sugar","A delicious white powder made from plants. Improves working speed a whole bunch!", SnapType.STATION, "chomp"), + new Item(2,"hotdog",stock[2],12,["raptor","meat","bread","skeleton","ketchup","mustard","gay"],["meat","elitist","gay","gluten"],"Hot Dog","A big wiener with sauce, to satisfy any meat lover. You can also buy a bacon-wrapped cheesy version for 69 kr.", SnapType.CUSTOMER, "chomp"), + new Item(3,"brocc",stock[3],12,["triceratops","veggie","healthy","stinky"],["veggie","healthy","stinky"],"Broccoli","This large stalk of free-range broccoli is perfect for vegans and herbivorous animals.", SnapType.CUSTOMER, "chomp"), + new Item(4,"usb",stock[4],15,["protogen","tech","metal","nerd"],["nerd","tech"],"Mini USB Drive", "Additional storage space in a compact unit. I wonder who would want this?", SnapType.CUSTOMER, "doink"), + new Item(5,"milk",stock[5],15,["dragon","horny","creamy","lactose","gay"],["horny","creamy","lactose","gay"],"Fresh Milk","Fresh, creamy milk for dragons to grow strong bones. Still warm and thick.", SnapType.CUSTOMER, "slurp"), + new Item(6,"snowglobe",stock[6],20,["lugia","kitsch","cold","ball"],["kitsch","cold","ball"],"Snowglobe","A cute little snowglobe. A certain type of customer might want this.", SnapType.CUSTOMER, "doink"), + new Item(7,"pocky",stock[7],20,["boykisser","weeb","cringe","sweet","chocolate"],["weeb","cringe","sweet"],"P*cky","Sweet snack made of edible sticks. There's a traditional game where you kiss while biting them. A favorite of virgins.", SnapType.CUSTOMER, "chomp"), + new Item(8,"hourglass",stock[8],30,["time","physics","glass"],["physics"],"Hourglass","Place on a workstation to fully turn back the time on a customer's patience. Might make it hard to work though...", SnapType.STATION, "doink"), + new Item(9,"hypnosis",stock[9],30,["hypno","horny","kinky","weird","psychic"],["horny","kinky","weird"],"Hypnosis","Uses a state of hypnosis to keep a customer's patience constant. You can't increase it any more either though.", SnapType.CUSTOMER, "doink"), + new Item(10,"polish",stock[10],50,["expensive","creamy","musky"],["expensive","musky"],"Extra-Premium Polish","Put this on a station to give scales a wonderful gloss and unique scent. Most customers love it, but comes at a premium.", SnapType.STATION, "slurp"), + new Item(11,"pillowtalk",stock[11],40,["horny","soft","cringe"],["horny","cringe"],"Pillow Talk","Instruct a station to talk to a customer alluringly and have them use more services. Good telemarketing is vital!", SnapType.STATION, "slurp"), + new Item(12,"shuriken",stock[12],25,["sharp","weeb","ninja","cringe","cool"],["cool","cringe","weeb","sharp"],"Shuriken","Equip a station to allow the stylists to critically strike when grooming! It's some type of mysterious fidget spinner that sharpens mental capabilites. ", SnapType.STATION, "meme_explosion_sound"), + ]; + this.display = []; + this.window = new Phaser.GameObjects.Image(this.scene,x,y,"shopwindow"); + this.window.setAlpha(0.85); + //this.window.setVisible(false); + this.window.setOrigin(-1,0); + this.add(this.window); + this.window.setDepth(1); + this.title = this.scene.addText({ + x: 75, + y: 760, + size: 30, + color: "#FFFFFF", + text: "", + }); + this.tdisplay = this.scene.addText({ + x: 75, + y: 845, + size: 25, + color: "#FFFFFF", + text: "", + }); + this.tdisplay.setWordWrapWidth(500); + this.add(this.title); + this.add(this.tdisplay); + this.fwButton = new SimpleButton(this.scene,580,400,"","fwbutton",10); + this.fwButton.on("click", ()=> {this.scroll()}); + this.add(this.fwButton); + this.scene.add.existing(this); + + this.buy1 = new BuyButton(this.scene, 390,602,"Buy 1", "buybutton", this, 1, 20); + this.buyall = new BuyButton(this.scene, 390,690,"Buy All", "buybutton", this, -99, 20); + this.buy5 = new BuyButton(this.scene, 520,602,"Buy 5", "buybutton", this, 5, 20); + this.buy10 = new BuyButton(this.scene, 520,690,"Buy 10", "buybutton", this, 10, 20); + + this.buy1.on("click", ()=> {this.buy(this.buy1.mode)}); + this.buy5.on("click", ()=> {this.buy(this.buy5.mode)}); + this.buy10.on("click", ()=> {this.buy(this.buy10.mode)}); + this.buyall.on("click", ()=> {this.buy(this.buyall.mode)}); + + this.add(this.buy1); + this.add(this.buy5); + this.add(this.buy10); + this.add(this.buyall); + + this.disableAllBuyButtons(); + + this.pricedisp = this.scene.addText({ + x: 80, + y: 594, + size: 24, + color: "#FFFFFF", + text: "", + }); + this.pricedisp.setVisible(false); + this.add(this.pricedisp); + + + this.myinvdisp= this.scene.addText({ + x: 80, + y: 682, + size: 24, + color: "#FFFFFF", + text: "", + }); + //this.myinvdisp.setVisible(false); + this.myinvdisp.setVisible(false); + this.add(this.myinvdisp); + + } + + unhighlight(){ + for(let p=0; p 0 || n == -99) { + if(n == -99) { + nr = this.itemList[this.highlightIndex].quant; + } + + let pr = nr*this.itemList[this.highlightIndex].price; + if(pr > this.scene.money) { + this.scene.sound.play("fail"); + return; + } + + this.scene.buyItem(this.highlightIndex,nr); + this.scene.removeMoney(pr); + this.itemList[this.highlightIndex].quant -= nr; + if(this.itemList[this.highlightIndex].quant <= 0){ + this.itemList[this.highlightIndex].quant = 0; + this.display[this.highlightIndex].shadow(); + this.updateButtons(this.highlightIndex); + this.hideInvDisp(); + this.clearPriceDisp(); + this.clearTextDisplays(); + } else { + this.display[this.highlightIndex].updateAmt(this.itemList[this.highlightIndex].quant); + this.updateButtons(this.highlightIndex); + this.updateInvDisp(this.highlightIndex); + this.updatePriceDisp(n); + } + } + } + + clearTextDisplays(){ + this.title.setVisible(false); + this.tdisplay.setVisible(false); + } + + updateInvDisp(id: number){ + this.myinvdisp.setVisible(true); + this.myinvdisp.setText("Owned: x" + this.scene.getAmountOwned(id)); + } + + hideInvDisp(){ + this.myinvdisp.setVisible(false); + } + + clearInvDisp(){ + this.myinvdisp.setText(""); + this.myinvdisp.setVisible(false); + } + + updatePriceDisp(qt: number){ + this.pricedisp.setColor("White"); + let qr = qt*this.itemList[this.highlightIndex].price; + if(this.highlightIndex > 0) { + if(qt == -99){ + qr = this.itemList[this.highlightIndex].quant*this.itemList[this.highlightIndex].price; + this.pricedisp.setVisible(true); + } else if (qt > 0) { + this.pricedisp.setVisible(true); + } else { + this.pricedisp.setVisible(false); + return; + } + if(qr > this.scene.money) { + this.pricedisp.setColor("Red"); + } + this.pricedisp.setText("Total: $"+qr); + } + } + + clearPriceDisp(){ + this.pricedisp.setColor("White"); + this.pricedisp.setText(""); + this.pricedisp.setVisible(false); + } + + updateButtons(id: number){ + let p = this.itemList[id].quant; + this.enableAllBuyButtons() + if(p <= 0) { + this.disableAllBuyButtons(); + } else { + if(p < 5) { + this.disableButton(this.buy5); + this.disableButton(this.buy10); + } else if (p < 10){ + this.disableButton(this.buy10); + } + } + } + + + updateInvText(id:number){ + this.myinvdisp.setText("Owned: x" + this.scene.getAmountOwned(id)); + } + + + + disableButton(B: SimpleButton){ + B.turnOff(); + B.setVisible(false); + } + + enableAllBuyButtons(){ + this.buy1.turnOn(); + this.buy1.setVisible(true); + this.buy5.turnOn(); + this.buy5.setVisible(true); + this.buy10.turnOn(); + this.buy10.setVisible(true); + this.buyall.turnOn(); + this.buyall.setVisible(true); + } + + + disableAllBuyButtons(){ + this.buy1.turnOff(); + this.buy1.setVisible(false); + this.buy5.turnOff(); + this.buy5.setVisible(false); + this.buy10.turnOff(); + this.buy10.setVisible(false); + this.buyall.turnOff(); + this.buyall.setVisible(false); + } + + populate(){ + //only run on init! + let rs = 0; + for(let np = this.currentIndices[0]; np < this.currentIndices[1]+1; np++){ + if(np < this.itemList.length){ + this.display.push(new ShopItem(this.scene,this.coordinates[rs][0], this.coordinates[rs][1], this, this.itemList[np].id, rs, this.itemList[np].spr, this.itemList[np].quant)); + if(this.itemList[np].quant <= 0) { + this.display[rs].shadow(); + } + this.add(this.display[rs]); + } + else { + this.display[rs] = new ShopItem(this.scene,this.coordinates[rs][0], this.coordinates[rs][1], this, -1, rs, "blankspr", 0); + this.add(this.display[rs]); + this.display[rs].shadow(); + } + rs++; + } + } + + repopulate(){ + let rs = 0; + this.display.forEach((sp) => sp.destroy()); + this.display = []; + for(let np = this.currentIndices[0]; np < this.currentIndices[1]+1; np++){ + if(np < this.itemList.length){ + this.display.push(new ShopItem(this.scene,this.coordinates[rs][0], this.coordinates[rs][1], this, this.itemList[np].id, rs, this.itemList[np].spr, this.itemList[np].quant)); + if(this.itemList[np].quant <= 0) { + this.display[rs].shadow(); + } + this.add(this.display[rs]); + } + else { + this.display.push(new ShopItem(this.scene,this.coordinates[rs][0], this.coordinates[rs][1], this, -1, rs, "blankspr", 0)); + this.display[rs].shadow(); + this.add(this.display[rs]); + } + rs++; + } + } + + toggle(){ + if(!this.isOpen) { + this.open(); + } else { + this.close(); + } + } + + close(){ + this.scene.sound.play("t_rustle"); + this.display.forEach((ib) => ib.destroy()); + this.setPosition(-650,0); + this.isOpen=false; + this.display = []; + this.window.setVisible(false); + this.title.setText(""); + this.tdisplay.setText(""); + this.currentIndices=[0,8]; + this.highlightIndex = -1; + this.clearInvDisp(); + this.disableAllBuyButtons(); + this.clearPriceDisp(); + } + + open(){ + this.scene.sound.play("t_rustle"); + this.window.setVisible(true); + //console.log("Open Processed"); + this.x = 0; + this.y = 0; + this.isOpen=true; + this.populate(); + this.clearInvDisp(); + this.disableAllBuyButtons(); + this.clearPriceDisp(); + } + + returnItem(id: number){ + this.itemList[id].quant++; + //console.log("STATE: " + this.isOpen + " ID: " + id + " HIGHLIGHT: " + this.highlightIndex); + if(this.isOpen){ + if((this.highlightIndex >=0) && (id==this.highlightIndex)){ + //this.scene.sound.play("meme_explosion_sound"); + this.updateAmountText(id,this.itemList[id].quant); + } + } + + } + + updateAmountText(id:number, i: number){ + if(i > 0) { + this.title.setText(this.itemList[id].name); + } else { + this.title.setText(""); + this.tdisplay.setText(""); + } + } + + scroll(){ + if(this.currentIndices[1] < this.itemList.length) { + let b = this.currentIndices[1] + 1; + let e = this.currentIndices[1] + 8; + this.currentIndices = [b,e]; + } else { + this.currentIndices = [0,8]; + } + this.title.setText(""); + this.tdisplay.setText(""); + this.scene.sound.play("button"); + this.clearPriceDisp(); + this.hideInvDisp(); + this.disableAllBuyButtons(); + this.repopulate(); + + } +} \ No newline at end of file diff --git a/src/components/ShopItem.ts b/src/components/ShopItem.ts new file mode 100644 index 0000000..4b3b707 --- /dev/null +++ b/src/components/ShopItem.ts @@ -0,0 +1,127 @@ +import { Item, SnapType } from "./Item"; +import { ShopInventory } from "./ShopInventory"; +import { Button } from "./elements/Button"; +import { BaseScene } from "@/scenes/BaseScene"; + +export class ShopItem extends Button { + public id: number; + public index: number; + public sprname: string; + public spr: Phaser.GameObjects.Sprite; + public default: number[]; + public state: number = 0; + public passivate: boolean = false; + public dragX: number; // Current drag position + public dragY: number; + public doingCuteThing: boolean; + private parent: ShopInventory; + public qt: number; + public qtDisp: Phaser.GameObjects.Text; + constructor(scene:BaseScene,x:number,y:number,parent: ShopInventory, id:number, index:number, spr:string, qt: number){ + super(scene,x,y); + this.parent = parent; + this.default = [x,y]; + this.id=id; + this.index=index; + this.sprname = spr; + this.spr = new Phaser.GameObjects.Sprite(this.scene,x,y,spr,0); + this.spr.setOrigin(0.5,0.5); + this.bindInteractive(this.spr, true); + this.add(this.spr); + this.parent.add(this); + this.setDepth(4); + this.qt = qt; + + this.qtDisp = this.scene.addText({ + x: x+30, + y: y+40, + size: 14, + color: "#FFFFFF", + text: "x" + qt, + }); + this.add(this.qtDisp); + } + + updateQt(qt: number){ + this.qtDisp.setText(""+qt); + } + + onDown( + pointer: Phaser.Input.Pointer, + localX: number, + localY: number, + event: Phaser.Types.Input.EventData + ) { + + super.onDown(pointer,localX,localY,event); + if(this.passivate){ + return; + } else { + this.parseClick(); + } + + } + + update(time: number, delta: number){ + if(this.state == 3) { + this.x = this.dragX-this.default[0]; + this.y = this.dragY-this.default[1]; + + /* + this.x += (this.dragX - this.x) * 0.5; + this.y += (this.dragY - this.y) * 0.5; + */ + } + /* + const factor = this.doingCuteThing ? 0.1 : 0.02; + const squish = 1.0 + factor * Math.sin((6 * time) / 1000); + this.setScale(1.0, squish); + */ + } + + parseClick(){ + if(this.state == 0) { + this.parent.unhighlight(); + this.select(); + this.parent.highlight(this.id); + } + } + + select(){ + this.state = 1; + this.spr.setFrame(1); + } + + unselect(){ + if(this.parent.itemList[this.id].quant <= 0){ + this.shadow(); + } else { + this.state = 0; + this.spr.setFrame(0); + this.passivate = false; + } + } + + updateAmt(n: number){ + this.qt = n; + this.qtDisp.setText("x"+this.qt); + } + + shadow(){ + this.spr.setFrame(2); + this.qtDisp.setText("x"+0); + this.qtDisp.setVisible(false); + this.passivate = true; + this.state = 2; + } + + unshadow(){ + this.state = 1; + this.spr.setFrame(1); + this.qtDisp.setText(""+0); + this.qtDisp.setVisible(false); + this.passivate = false; + } + + +} \ No newline at end of file diff --git a/src/components/Station.ts b/src/components/Station.ts index ca515b1..41d1563 100644 --- a/src/components/Station.ts +++ b/src/components/Station.ts @@ -33,6 +33,8 @@ export class Station extends Button { public appliedSprites: Phaser.GameObjects.Sprite[]; //public admissionFee: number; // Cost to use the station + private jolteon: boolean = false; + private cellSize: number; private spriteCont: Phaser.GameObjects.Container; private sprite: Phaser.GameObjects.Image; @@ -225,6 +227,22 @@ export class Station extends Button { this.sprite.input!.enabled = value; } + pauseClickable(){ + if(!(this.sprite.input!.enabled)){ + this.jolteon = true; + } else { + this.sprite.input!.enabled = false; + } + } + + resumeClickable(){ + if(this.jolteon) { + this.jolteon = false; + } else { + this.sprite.input!.enabled = true; + } + } + upgrade() { // this.scene.sound.play("upgrade"); diff --git a/src/components/elements/BuyButton.ts b/src/components/elements/BuyButton.ts new file mode 100644 index 0000000..3b8a26a --- /dev/null +++ b/src/components/elements/BuyButton.ts @@ -0,0 +1,35 @@ +import { BaseScene } from "@/scenes/BaseScene"; +import { SimpleButton } from "./SimpleButton"; +import { ShopInventory } from "../ShopInventory"; +import { GameScene } from "@/scenes/GameScene"; + + +export class BuyButton extends SimpleButton{ + public scene:GameScene; + public parent:ShopInventory; + private ONE: number = 1; + private FIVE: number = 5; + private TEN: number = 10; + private ALL: number = -99; + public mode: number = 1; + + constructor(scene: GameScene, x: number, y: number, v: string, spr: string, pr: ShopInventory, state: number, fsize: number = 40) { + super(scene,x,y,v,spr,fsize); + this.scene=scene; + this.parent = pr; + this.mode = state; + } + + onOver( pointer: Phaser.Input.Pointer, + localX: number, + localY: number, + event: Phaser.Types.Input.EventData){ + super.onOver(pointer,localX,localY,event); + this.parent.updatePriceDisp(this.mode); + } + + onOut(pointer: Phaser.Input.Pointer, event: Phaser.Types.Input.EventData) { + super.onOut(pointer,event); + this.parent.clearPriceDisp(); + } +} \ No newline at end of file diff --git a/src/components/elements/SimpleButton.ts b/src/components/elements/SimpleButton.ts index 932da97..24bda22 100644 --- a/src/components/elements/SimpleButton.ts +++ b/src/components/elements/SimpleButton.ts @@ -42,11 +42,13 @@ export class SimpleButton extends Button { } turnOff(){ + this.sprite.input!.enabled = false; this.disabled = true; this.resetState(); } turnOn(){ + this.sprite.input!.enabled = true; this.disabled = false; this.resetState(); } diff --git a/src/components/elements/SquishButton.ts b/src/components/elements/SquishButton.ts new file mode 100644 index 0000000..9d5dc1a --- /dev/null +++ b/src/components/elements/SquishButton.ts @@ -0,0 +1,166 @@ +import { BaseScene } from "@/scenes/BaseScene"; + +export class SquishButton extends Phaser.GameObjects.Container { + public scene: BaseScene; + private _hold: boolean; + private _hover: boolean; + protected blocked: boolean; + public liftSmooth: number; + public hoverSmooth: number; + public holdSmooth: number; + public category: number; + public aliveValue: number; + private hoverTween: Phaser.Tweens.Tween; + private holdTween: Phaser.Tweens.Tween; + public enabled: boolean; + public hitSprite:Phaser.GameObjects.Sprite; + + constructor(scene: BaseScene, x: number, y: number, spr:string) { + super(scene, x, y); + this.scene = scene; + scene.add.existing(this); + + this._hover = false; + this._hold = false; + this.blocked = false; + this.enabled = true; + + this.liftSmooth = 0; + this.hoverSmooth = 0; + this.holdSmooth = 0; + this.aliveValue = 0; + + this.hitSprite = new Phaser.GameObjects.Sprite(this.scene,0,0,spr); + this.bindInteractive(this.hitSprite); + this.hitSprite.input!.enabled = true; + this.add(this.hitSprite); + } + + bindInteractive( + gameObject: Phaser.GameObjects.GameObject, + draggable = false + ) { + gameObject.removeInteractive(); + gameObject + .setInteractive({ useHandCursor: true, draggable: draggable }) + .on("pointerout", this.onOut, this) + .on("pointerover", this.onOver, this) + .on("pointerdown", this.onDown, this) + .on("pointerup", this.onUp, this) + .on("dragstart", this.onDragStart, this) + .on("drag", this.onDrag, this) + .on("dragend", this.onDragEnd, this); + return gameObject; + } + + setOrigin(x: number, y: number){ + this.hitSprite.setOrigin(x,y); + } + + setFrame(n: number){ + this.hitSprite.setFrame(n); + } + + get hover(): boolean { + return this._hover; + } + + set hover(value: boolean) { + if (value != this._hover) { + if (this.hoverTween) { + this.hoverTween.stop(); + } + if (value) { + this.hoverTween = this.scene.tweens.add({ + targets: this, + hoverSmooth: { from: 0.0, to: 1.0 }, + ease: 'Cubic.Out', + duration: 100 + }); + } + else { + this.hoverTween = this.scene.tweens.add({ + targets: this, + hoverSmooth: { from: 1.0, to: 0.0 }, + ease: (v: number) => { + return Phaser.Math.Easing.Elastic.Out(v, 1.5, 0.5); + }, + duration: 500 + }); + } + } + + this._hover = value; + } + + get hold(): boolean { + return this._hold; + } + + set hold(value: boolean) { + if (value != this._hold) { + if (this.holdTween) { + this.holdTween.stop(); + } + if (value) { + this.holdTween = this.scene.tweens.add({ + targets: this, + holdSmooth: { from: 0.0, to: 1.0 }, + ease: 'Cubic.Out', + duration: 100 + }); + } + else { + this.holdTween = this.scene.tweens.add({ + targets: this, + holdSmooth: { from: 1.0, to: 0.0 }, + ease: (v: number) => { + return Phaser.Math.Easing.Elastic.Out(v, 1.5, 0.5); + }, + duration: 500 + }); + } + } + + this._hold = value; + } + + onOut(pointer: Phaser.Input.Pointer, event: Phaser.Types.Input.EventData) { + this.hover = false; + this.hold = false; + } + + onOver(pointer: Phaser.Input.Pointer, localX: number, localY: number, event: Phaser.Types.Input.EventData) { + this.hover = true; + } + + onDown(pointer: Phaser.Input.Pointer, localX: number, localY: number, event: Phaser.Types.Input.EventData) { + this.hold = true; + this.blocked = false; + this.emit("down"); + } + + onUp(pointer: Phaser.Input.Pointer, localX: number, localY: number, event: Phaser.Types.Input.EventData) { + if (this.hold && !this.blocked) { + this.hold = false; + this.emit('click'); + } + } + + onDragStart(pointer: Phaser.Input.Pointer, dragX: number, dragY: number) {} + + onDrag(pointer: Phaser.Input.Pointer, dragX: number, dragY: number) { + // this.hold = false; + // if (Math.abs(dragY) > 8) { + // this.hold = false; + // } + } + + onDragEnd(pointer: Phaser.Input.Pointer, dragX: number, dragY: number) {} + + + + block() { + this.blocked = true; + } +} \ No newline at end of file diff --git a/src/components/elements/ToggleButton.ts b/src/components/elements/ToggleButton.ts index c89e0be..82bf570 100644 --- a/src/components/elements/ToggleButton.ts +++ b/src/components/elements/ToggleButton.ts @@ -17,11 +17,13 @@ export class ToggleButton extends Button{ toggleForward(){ this.toggled = true; this.spr.setFrame(1); + console.log("FORWARD"); } toggleBackward(){ this.toggled = false; this.spr.setFrame(0); + console.log("REVERSE"); } } \ No newline at end of file diff --git a/src/scenes/GameScene.ts b/src/scenes/GameScene.ts index b682ba7..e3a6482 100644 --- a/src/scenes/GameScene.ts +++ b/src/scenes/GameScene.ts @@ -23,6 +23,8 @@ import { SnapType } from "@/components/Item"; import { NavMesh } from "navmesh"; import { centerOnSubdividedCoord, GenerateNavMesh } from "@/utils/NavMeshHelper"; +import { Button } from "@/components/elements/Button"; +import { ShopInventory } from "@/components/ShopInventory"; enum GameState { Cutscene, @@ -45,10 +47,43 @@ export class GameScene extends BaseScene { private paused: boolean = false; private browsing: boolean = false; private inventory: Inventory; + private shopinventory: ShopInventory; private invButton: ToggleButton; private iHandler: ItemHandler; public activeItem: ItemButton; + private shopClicker: Button; + private ownerImage: Phaser.GameObjects.Sprite; + private shopSpeech: Phaser.GameObjects.Container; + private shopBubble: Phaser.GameObjects.Image; + private shopText: Phaser.GameObjects.Text; + + private noivern: string[] = ["Like I said, the prices are absolutely fair!", "My old job? I used to be a turret engineer~", + "If you encounter a special customer, use clues to figure out their needs!", "Have you heard of widgets? I might have one in stock.", + "It's alawys so hot in the dragonlands...", "Different customers will have different preferences!", + "That one's popular! Why not pick up a few for your salon?", "Some items can be only given to customers. Others are only equipped at stations.", + "Happy customers tip more! Give them things they like and tend to them quickly!", "Don't forget to upgrade your stations! A well equipped salon succeeds.", + "My favorite items? A tasty hot dog and a box of milk! And I love the widgets too!", "How's the weather been lately? I think it's lovely outside.", + "I saw lots of happy people by your salon! I hope it's doing well.", "Buy a lot and buy often! Think of it as an investment!"] + private viewedShopTutorial: boolean = false; + private shopTutorialText: string[] = ["Hey, going to leave already? Click the left tab and drop by!", "First time? Welcome to my little otter shop!", + "You can pick up all kinds of snacks, trinkets, and widgets here!", "They might be of help for your customers and stations!", + "I left some notes in the descriptions too, if you need any help.", "And you can hit the brown arrow to browse the other shelves!", + "The prices are totally fair, but make sure you have enough money!", "Once you're done, you can hit the tab again to close the shop!", + "Oh, and it works for your inventory too during the day!", "I'll look forward to your visits!"]; + private shopTutorialFrames: number[] = [0, 0, 1, 1, 2, 0, 2, 0, 0, 1]; + private shopTutorialIndex: number = 1; + private shopTutorialInitialized: boolean = false; + private tutorialTimer: number = 0; + private canProceed: boolean[] = [false,false,false]; + private dinonugget: number = 0; + private shopOpenCheck: boolean = false; + private shopOwnerState: number = -1; + private proceedButton: Button; + private hitRectangle: Phaser.GameObjects.Rectangle; + private cycleCount: number = 0; + + public effects: Effect[]; private navmesh: NavMesh; @@ -148,11 +183,21 @@ export class GameScene extends BaseScene { 0, [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10] ); + + this.shopinventory = new ShopInventory( + this, + -650, + 0, + [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10] + ); + this.shopinventory.setDepth(2500); + this.invButton = new ToggleButton(this, 64, 540, "invbutton"); + this.invButton.setScale(0.5); this.invButton.setAlpha(0.85); this.add.existing(this.invButton); this.invButton.on("click", () => { - this.toggleInventory(); + this.togglePanel(); }); this.inventory.setDepth(10); this.invButton.setDepth(9); @@ -194,15 +239,60 @@ export class GameScene extends BaseScene { this.summaryOverlay.setVisible(false); }); + //shop + this.shopClicker = new Button(this,1460,540); + this.add.existing(this.shopClicker); + + this.ownerImage = new Phaser.GameObjects.Sprite(this,0,0,"otter"); + this.ownerImage.setOrigin(0.5,0.5); + this.shopClicker.add(this.ownerImage); + + this.shopClicker.bindInteractive(this.ownerImage); + this.shopClicker.on("click", ()=> this.proceedShopTutorial()); + this.ownerImage.input!.enabled = false; + this.shopSpeech = new Phaser.GameObjects.Container(this, 1010, 450); + this.add.existing(this.shopSpeech); + this.shopBubble = new Phaser.GameObjects.Image(this,0,0,"bubble"); + this.shopBubble.setScale(-3.5, 2.5); + this.shopBubble.setOrigin(0.5,0.5); + this.shopSpeech.add(this.shopBubble); + this.shopClicker.setDepth(1050); + this.shopSpeech.setDepth(1045); + this.shopText = this.addText({ + x: 0, + y: -20, + size: 40, + color: "#000000", + text: "", + }); + this.shopText.setWordWrapWidth(380); + this.shopText.setOrigin(0.5,0.5); + this.shopSpeech.add(this.shopText); + this.proceedButton = new Button(this,960,540); + this.hitRectangle = new Phaser.GameObjects.Rectangle(this,0,0,1980,1100,0x000000); + this.hitRectangle.setOrigin(0.5,0.5); + this.hitRectangle.setAlpha(0.001); + this.proceedButton.add(this.hitRectangle); + this.proceedButton.bindInteractive(this.hitRectangle); + this.add.existing(this.proceedButton); + this.proceedButton.setDepth(5000); + this.proceedButton.setVisible(false); + this.shopClicker.setVisible(false); + this.shopSpeech.setVisible(false); /* Init */ this.loadLevel(LevelId.Level1); this.setState(GameState.Shopping); // this.startDay(); this.intermission.fadeToGame(); // Comment this out to see cutscenes + + this.pauseInvButton(); } update(time: number, delta: number) { + if(!this.viewedShopTutorial || this.shopOwnerState == 2){ + this.updateShopTutorial(time,delta); + } if (this.browsing || this.paused) { this.activeItem.update(time, delta); if (this.activeItem.state == 3) { @@ -346,6 +436,13 @@ export class GameScene extends BaseScene { // Start a new day startDay() { + if((this.cycleCount > 0)) + { + if((!this.viewedShopTutorial)) { + this.beginShopTutorial(0); + return; + } + } this.setState(GameState.Day); this.day += 1; this.ui.setDay(this.day); @@ -385,6 +482,8 @@ export class GameScene extends BaseScene { //this.stations.forEach((s) => s.returnItems()); this.sound.play("endday"); this.employees.forEach((e) => e.walkTo(e.startX, e.startY)); + this.resumeInvButton(); + this.cycleCount++; this.setState(GameState.Shopping); } @@ -487,10 +586,12 @@ export class GameScene extends BaseScene { openInventory() { this.browsing = true; + this.pauseAllClickables(); this.tweens.pauseAll(); } closeInventory() { this.browsing = false; + this.resumeAllClickables(); this.tweens.resumeAll(); } @@ -765,6 +866,14 @@ export class GameScene extends BaseScene { customer.nextActivity(); } + togglePanel(){ + if(this.state === GameState.Shopping) { + this.toggleShop(); + } else { + this.toggleInventory(); + } + } + toggleInventory() { this.inventory.toggle(); if (this.inventory.isOpen) { @@ -778,6 +887,33 @@ export class GameScene extends BaseScene { } } + toggleShop(){ + this.shopinventory.toggle(); + if (this.shopinventory.isOpen) { + this.invButton.setPosition(714, 540); + this.invButton.toggleForward(); + this.openInventory(); + //console.log("VARIABLE STATE: "+this.shopOpenCheck) + if(this.shopTutorialInitialized == false) { + this.beginShopTutorial(1); + this.pauseInvButton(); + } + if(this.shopOpenCheck) { + this.shopOpenCheck = false; + this.pauseInvButton(); + this.proceedShopTutorial(); + } + //console.log(this.invButton); + //this.pauseInvButton(); + + + } else { + this.invButton.setPosition(64, 540); + this.invButton.toggleBackward(); + this.closeInventory(); + } + } + setActiveItem(i: ItemButton) { this.activeItem.destroy(); this.activeItem = i; @@ -873,6 +1009,20 @@ export class GameScene extends BaseScene { this.inventory.returnItem(id); } + buyItem(id: number, qt:number) { + this.inventory.buyItem(id, qt); + } + + pauseInvButton(){ + this.invButton.spr.input!.enabled = false; + this.invButton.setAlpha(0.34); + } + + resumeInvButton(){ + this.invButton.spr.input!.enabled = true; + this.invButton.setAlpha(0.85); + } + parseCustomerItems(i: number, ct: Customer){ this.iHandler.processCustomerItem(this.inventory.itemList[i],ct); this.sound.play(this.inventory.itemList[i].sound); @@ -928,6 +1078,143 @@ export class GameScene extends BaseScene { return closestStation; } + removeMoney(n: number){ + this.money -= n; + this.ui.setMoney(this.money); + this.sound.play("cashmoney"); + /* + this.addEffect( + new TextEffect( + scene, + this.x - 70 + Math.random() * 80, + this.y - 80, + "+" + this.moneySpent + " €", + "yellow", + 40, + true, + "red", + 800, + 100, + 0.7, + 0 + ) + );*/ + } + + beginShopTutorial(n: number){ + this.shopTutorialIndex = n; + this.shopTutorialInitialized = false; + this.ownerImage.input!.enabled = false; + this.ownerImage.setFrame(this.shopTutorialFrames[n]); + this.shopText.setText(this.shopTutorialText[n]); + this.shopClicker.setVisible(true); + this.shopSpeech.setVisible(true); + this.shopSpeech.setAlpha(0); + this.tutorialTimer = 1000; + if(n > 0) { + this.pauseInvButton(); + } + } + + updateShopTutorial(t: number, d: number){ + + if(this.dinonugget > 0) { + this.dinonugget -= d; + //console.log("DINO NUGGET"); + if(this.dinonugget <= 0) { + this.shopClicker.setAlpha(0); + this.shopSpeech.setAlpha(0); + this.shopSpeech.setVisible(false); + this.shopClicker.setVisible(false); + this.shopOwnerState = -1 + } else { + this.shopClicker.setAlpha(this.dinonugget/300); + this.shopSpeech.setAlpha(this.dinonugget/300); + } + } + if(this.viewedShopTutorial){ + return; + } + if(!this.shopTutorialInitialized) { + if(this.tutorialTimer > 0) { + if((this.tutorialTimer > 300)) { + this.tutorialTimer -= d; + if(this.tutorialTimer <= 300) { + this.shopClicker.setPosition(1460, 540); + } else { + this.shopClicker.setPosition(1460,1480+-940*(1-((this.tutorialTimer-300)/700))); + } + } else if (this.tutorialTimer <= 300){ + this.tutorialTimer -= d; + if(this.tutorialTimer <= 0) { + this.shopSpeech.setAlpha(1); + this.shopTutorialInitialized = true; + this.ownerImage.input!.enabled = true; + if(this.shopTutorialIndex == 0){ + this.shopOpenCheck = true; + } + this.canProceed = [true,false,false]; + } + this.shopSpeech.setAlpha(1-(this.tutorialTimer/300)); + } + } + } else if (!this.viewedShopTutorial) { + if(this.tutorialTimer > 0) { + this.tutorialTimer -= d; + if(this.tutorialTimer <= 0){ + this.shopSpeech.setAlpha(1); + this.canProceed = [true,false,false]; + this.ownerImage.input!.enabled = true; + } else { + this.shopSpeech.setAlpha(1-(this.tutorialTimer/300)); + } + } + } + } + + proceedShopTutorial(){ + if(this.shopOpenCheck || (!this.canProceed)) { + return; + } + this.shopTutorialIndex++; + if(this.shopTutorialIndex < this.shopTutorialText.length) { + this.canProceed=[false,false,false]; + this.tutorialTimer=300; + this.shopSpeech.setAlpha(0); + this.shopText.setText(this.shopTutorialText[this.shopTutorialIndex]); + this.ownerImage.setFrame(this.shopTutorialFrames[this.shopTutorialIndex]); + this.ownerImage.input!.enabled = false; + } else { + this.completeShopTutorial(); + } + } + + completeShopTutorial(){ + this.canProceed=[false,false,false]; + this.ownerImage.input!.enabled = false; + this.viewedShopTutorial = true; + this.sound.play("meme_explosion_sound"); + this.dinonugget = 300; + this.shopOwnerState = 2; + this.resumeInvButton(); + } + + pauseAllClickables(){ + this.stations.forEach((s) => s.pauseClickable()); + this.customers.forEach((c) => c.pauseClickable()); + this.employees.forEach((e) => e.pauseClickable()); + } + + resumeAllClickables(){ + this.stations.forEach((s) => s.resumeClickable()); + this.customers.forEach((c) => c.resumeClickable()); + this.employees.forEach((e) => e.resumeClickable()); + } + + getAmountOwned(id: number){ + return this.inventory.itemList[id].quant; + } + veilInvButton(){ this.invButton.setAlpha(0.17); } From f440c739b6651f2787bf2954c35dc991eaaf40ee Mon Sep 17 00:00:00 2001 From: Lumie Date: Tue, 20 Aug 2024 03:58:04 -0700 Subject: [PATCH 2/3] gigamerge --- src/scenes/GameScene.ts | 150 ---------------------------------------- 1 file changed, 150 deletions(-) diff --git a/src/scenes/GameScene.ts b/src/scenes/GameScene.ts index f2b1ba0..a643495 100644 --- a/src/scenes/GameScene.ts +++ b/src/scenes/GameScene.ts @@ -1067,19 +1067,6 @@ export class GameScene extends BaseScene { this.inventory.buyItem(id, qt); } - pauseInvButton(){ - this.invButton.spr.input!.enabled = false; - this.invButton.setAlpha(0.34); - } - - resumeInvButton(){ - this.invButton.spr.input!.enabled = true; - this.invButton.setAlpha(0.85); - } - - buyItem(id: number, qt:number) { - this.inventory.buyItem(id, qt); - } pauseInvButton(){ this.invButton.spr.input!.enabled = false; @@ -1283,143 +1270,6 @@ export class GameScene extends BaseScene { return this.inventory.itemList[id].quant; } - removeMoney(n: number){ - this.money -= n; - this.ui.setMoney(this.money); - this.sound.play("cashmoney"); - /* - this.addEffect( - new TextEffect( - scene, - this.x - 70 + Math.random() * 80, - this.y - 80, - "+" + this.moneySpent + " €", - "yellow", - 40, - true, - "red", - 800, - 100, - 0.7, - 0 - ) - );*/ - } - - beginShopTutorial(n: number){ - this.shopTutorialIndex = n; - this.shopTutorialInitialized = false; - this.ownerImage.input!.enabled = false; - this.ownerImage.setFrame(this.shopTutorialFrames[n]); - this.shopText.setText(this.shopTutorialText[n]); - this.shopClicker.setVisible(true); - this.shopSpeech.setVisible(true); - this.shopSpeech.setAlpha(0); - this.tutorialTimer = 1000; - if(n > 0) { - this.pauseInvButton(); - } - } - - updateShopTutorial(t: number, d: number){ - - if(this.dinonugget > 0) { - this.dinonugget -= d; - //console.log("DINO NUGGET"); - if(this.dinonugget <= 0) { - this.shopClicker.setAlpha(0); - this.shopSpeech.setAlpha(0); - this.shopSpeech.setVisible(false); - this.shopClicker.setVisible(false); - this.shopOwnerState = -1 - } else { - this.shopClicker.setAlpha(this.dinonugget/300); - this.shopSpeech.setAlpha(this.dinonugget/300); - } - } - if(this.viewedShopTutorial){ - return; - } - if(!this.shopTutorialInitialized) { - if(this.tutorialTimer > 0) { - if((this.tutorialTimer > 300)) { - this.tutorialTimer -= d; - if(this.tutorialTimer <= 300) { - this.shopClicker.setPosition(1460, 540); - } else { - this.shopClicker.setPosition(1460,1480+-940*(1-((this.tutorialTimer-300)/700))); - } - } else if (this.tutorialTimer <= 300){ - this.tutorialTimer -= d; - if(this.tutorialTimer <= 0) { - this.shopSpeech.setAlpha(1); - this.shopTutorialInitialized = true; - this.ownerImage.input!.enabled = true; - if(this.shopTutorialIndex == 0){ - this.shopOpenCheck = true; - } - this.canProceed = [true,false,false]; - } - this.shopSpeech.setAlpha(1-(this.tutorialTimer/300)); - } - } - } else if (!this.viewedShopTutorial) { - if(this.tutorialTimer > 0) { - this.tutorialTimer -= d; - if(this.tutorialTimer <= 0){ - this.shopSpeech.setAlpha(1); - this.canProceed = [true,false,false]; - this.ownerImage.input!.enabled = true; - } else { - this.shopSpeech.setAlpha(1-(this.tutorialTimer/300)); - } - } - } - } - - proceedShopTutorial(){ - if(this.shopOpenCheck || (!this.canProceed)) { - return; - } - this.shopTutorialIndex++; - if(this.shopTutorialIndex < this.shopTutorialText.length) { - this.canProceed=[false,false,false]; - this.tutorialTimer=300; - this.shopSpeech.setAlpha(0); - this.shopText.setText(this.shopTutorialText[this.shopTutorialIndex]); - this.ownerImage.setFrame(this.shopTutorialFrames[this.shopTutorialIndex]); - this.ownerImage.input!.enabled = false; - } else { - this.completeShopTutorial(); - } - } - - completeShopTutorial(){ - this.canProceed=[false,false,false]; - this.ownerImage.input!.enabled = false; - this.viewedShopTutorial = true; - this.sound.play("meme_explosion_sound"); - this.dinonugget = 300; - this.shopOwnerState = 2; - this.resumeInvButton(); - } - - pauseAllClickables(){ - this.stations.forEach((s) => s.pauseClickable()); - this.customers.forEach((c) => c.pauseClickable()); - this.employees.forEach((e) => e.pauseClickable()); - } - - resumeAllClickables(){ - this.stations.forEach((s) => s.resumeClickable()); - this.customers.forEach((c) => c.resumeClickable()); - this.employees.forEach((e) => e.resumeClickable()); - } - - getAmountOwned(id: number){ - return this.inventory.itemList[id].quant; - } - veilInvButton() { this.invButton.setAlpha(0.17); } From 4bda25532439846780ee7e68c2dccb0122842763 Mon Sep 17 00:00:00 2001 From: Lumie Date: Tue, 20 Aug 2024 04:40:21 -0700 Subject: [PATCH 3/3] employee balancing and drag drop sounds --- src/assets/assets.ts | 2 + src/assets/sounds/dropcustomer.mp3 | Bin 0 -> 3443 bytes src/assets/sounds/pickupcustomer.mp3 | Bin 0 -> 3156 bytes src/components/Employee.ts | 5 ++ src/components/EmployeeData.ts | 82 +++++++++++++-------------- src/scenes/GameScene.ts | 2 + 6 files changed, 50 insertions(+), 41 deletions(-) create mode 100644 src/assets/sounds/dropcustomer.mp3 create mode 100644 src/assets/sounds/pickupcustomer.mp3 diff --git a/src/assets/assets.ts b/src/assets/assets.ts index 06e8e5a..700e719 100644 --- a/src/assets/assets.ts +++ b/src/assets/assets.ts @@ -185,6 +185,8 @@ const audios: Audio[] = [ sound('bite', 'bite', 0.5), sound('doink', 'doink', 0.5), sound('slurp', 'slurp', 0.5), + sound('pickupcustomer', 'pickup', 0.5), + sound('dropcustomer', 'drop', 0.5), sound('tree/meme_explosion_sound', 'meme_explosion_sound', 0.5), ]; diff --git a/src/assets/sounds/dropcustomer.mp3 b/src/assets/sounds/dropcustomer.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e22d88c3fd8ada8d3e3e37462e844317fe7b9760 GIT binary patch literal 3443 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 KA3{IE>3;*Ip_Eww literal 0 HcmV?d00001 diff --git a/src/assets/sounds/pickupcustomer.mp3 b/src/assets/sounds/pickupcustomer.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c18d01f91e1931749b64da80108f4dc86bb015d6 GIT binary patch literal 3156 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 aulbkQ3cX7eB2xgME5ye9%@qHI;eP>U<=(FV literal 0 HcmV?d00001 diff --git a/src/components/Employee.ts b/src/components/Employee.ts index 36971c5..69246c1 100644 --- a/src/components/Employee.ts +++ b/src/components/Employee.ts @@ -80,6 +80,11 @@ export class Employee extends Button { } this.currentCustomer = customer; + if(this.currentCustomer){ + if(this.currentCustomer.currentStation) { + this.currentCustomer.currentStation.taskHaste*=this.workSpeed; + } + } } walk(path: Phaser.Curves.Path) { diff --git a/src/components/EmployeeData.ts b/src/components/EmployeeData.ts index 3877856..3e81076 100644 --- a/src/components/EmployeeData.ts +++ b/src/components/EmployeeData.ts @@ -132,7 +132,7 @@ export const EmployeeData: { [key in EmployeeId]: EmployeeInterface } = { name: "Raccoon employee", tier: 2, walkSpeed: 3, - workSpeed: 2, + workSpeed: 1.25, cost: 400, upgradeTo: EmployeeId.RaccoonGrayTier3, }, @@ -140,8 +140,8 @@ export const EmployeeData: { [key in EmployeeId]: EmployeeInterface } = { type: EmployeeType.RaccoonGray, name: "Raccoon employee", tier: 3, - walkSpeed: 5, - workSpeed: 3, + walkSpeed: 4, + workSpeed: 1.5, cost: 800, }, @@ -149,54 +149,54 @@ export const EmployeeData: { [key in EmployeeId]: EmployeeInterface } = { type: EmployeeType.RaccoonBrown, name: "Raccoon employee", tier: 1, - walkSpeed: 2, + walkSpeed: 2.5, workSpeed: 1, - cost: 300, + cost: 350, upgradeTo: EmployeeId.RaccoonBrownTier2, }, [EmployeeId.RaccoonBrownTier2]: { type: EmployeeType.RaccoonBrown, name: "Raccoon employee", tier: 2, - walkSpeed: 3, - workSpeed: 2, - cost: 400, + walkSpeed: 4, + workSpeed: 1.125, + cost: 475, upgradeTo: EmployeeId.RaccoonBrownTier3, }, [EmployeeId.RaccoonBrownTier3]: { type: EmployeeType.RaccoonBrown, name: "Raccoon employee", tier: 3, - walkSpeed: 5, - workSpeed: 3, - cost: 800, + walkSpeed: 5.5, + workSpeed: 1.25, + cost: 950, }, [EmployeeId.RaccoonYellowTier1]: { type: EmployeeType.RaccoonYellow, name: "Raccoon employee", tier: 1, - walkSpeed: 2, + walkSpeed: 1, workSpeed: 1, - cost: 300, + cost: 375, upgradeTo: EmployeeId.RaccoonYellowTier2, }, [EmployeeId.RaccoonYellowTier2]: { type: EmployeeType.RaccoonYellow, name: "Raccoon employee", tier: 2, - walkSpeed: 3, - workSpeed: 2, - cost: 400, + walkSpeed: 2.5, + workSpeed: 1.5, + cost: 525, upgradeTo: EmployeeId.RaccoonYellowTier3, }, [EmployeeId.RaccoonYellowTier3]: { type: EmployeeType.RaccoonYellow, name: "Raccoon employee", tier: 3, - walkSpeed: 5, - workSpeed: 3, - cost: 800, + walkSpeed: 4, + workSpeed: 2, + cost: 1050, }, [EmployeeId.RaccoonPurpleTier1]: { @@ -205,78 +205,78 @@ export const EmployeeData: { [key in EmployeeId]: EmployeeInterface } = { tier: 1, walkSpeed: 2, workSpeed: 1, - cost: 300, + cost: 600, upgradeTo: EmployeeId.RaccoonPurpleTier2, }, [EmployeeId.RaccoonPurpleTier2]: { type: EmployeeType.RaccoonPurple, name: "Raccoon employee", tier: 2, - walkSpeed: 3, - workSpeed: 2, - cost: 400, + walkSpeed: 3.5, + workSpeed: 1.5, + cost: 900, upgradeTo: EmployeeId.RaccoonPurpleTier3, }, [EmployeeId.RaccoonPurpleTier3]: { type: EmployeeType.RaccoonPurple, name: "Raccoon employee", tier: 3, - walkSpeed: 5, - workSpeed: 3, - cost: 800, + walkSpeed: 6, + workSpeed: 2, + cost: 1800, }, [EmployeeId.RaccoonGreenTier1]: { type: EmployeeType.RaccoonGreen, name: "Raccoon employee", - tier: 1, - walkSpeed: 2, + tier: 4, + walkSpeed: 3, workSpeed: 1, - cost: 300, + cost: 800, upgradeTo: EmployeeId.RaccoonGreenTier2, }, [EmployeeId.RaccoonGreenTier2]: { type: EmployeeType.RaccoonGreen, name: "Raccoon employee", tier: 2, - walkSpeed: 3, + walkSpeed: 6, workSpeed: 2, - cost: 400, + cost: 1600, upgradeTo: EmployeeId.RaccoonGreenTier3, }, [EmployeeId.RaccoonGreenTier3]: { type: EmployeeType.RaccoonGreen, name: "Raccoon employee", tier: 3, - walkSpeed: 5, + walkSpeed: 9, workSpeed: 3, - cost: 800, + cost: 2400, }, [EmployeeId.HumanTier1]: { type: EmployeeType.Human, name: "Human employee", tier: 1, - walkSpeed: 2, + walkSpeed: 1, workSpeed: 1, - cost: 1000, + cost: 2500, upgradeTo: EmployeeId.HumanTier2, }, [EmployeeId.HumanTier2]: { type: EmployeeType.Human, name: "Human employee", tier: 2, - walkSpeed: 3, - workSpeed: 2, - cost: 400, + walkSpeed: 1.25, + workSpeed: 1.05, + cost: 5000, upgradeTo: EmployeeId.HumanTier3, }, [EmployeeId.HumanTier3]: { type: EmployeeType.Human, name: "Human employee", tier: 3, - walkSpeed: 5, - workSpeed: 3, - cost: 800, + walkSpeed: 1.5, + workSpeed: 1.15, + cost: 9999, }, }; diff --git a/src/scenes/GameScene.ts b/src/scenes/GameScene.ts index a643495..33b5094 100644 --- a/src/scenes/GameScene.ts +++ b/src/scenes/GameScene.ts @@ -687,6 +687,7 @@ export class GameScene extends BaseScene { // Picking up a customer customer.on("pickup", () => { + this.sound.play("pickup"); if (customer.currentStation) { // customer.currentStation.setCustomer(null); // customer.setStation(null); @@ -703,6 +704,7 @@ export class GameScene extends BaseScene { // Dropping a customer customer.on("drop", () => { + this.sound.play("drop"); let station = this.getClosestStation(customer); if (station) { // Let go of previous station