It works, don't know why
This commit is contained in:
104
src/app/Plant.ts
Normal file
104
src/app/Plant.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
import {FarmerDto} from "./farmer.dto";
|
||||
import {FormulasService} from "./formulas.service";
|
||||
import {PlayerService} from "./player.service";
|
||||
import {UtilitiesService} from "./utilities.service";
|
||||
import Plants from "./Plants";
|
||||
import {PlantDto} from "./plant.dto";
|
||||
|
||||
export default class Plant {
|
||||
|
||||
id: number = 0;
|
||||
private level: number = 0;
|
||||
private timePassed: number = 0;
|
||||
farmerBough: boolean = false;
|
||||
|
||||
private readonly plant: PlantDto | null;
|
||||
|
||||
public constructor(
|
||||
data: any,
|
||||
private readonly formulasService: FormulasService,
|
||||
private readonly playerService: PlayerService,
|
||||
private readonly utilitiesService: UtilitiesService,
|
||||
) {
|
||||
this.id = data.id ?? 0;
|
||||
this.level = data.level ?? 0;
|
||||
this.timePassed = data.timePassed ?? 0;
|
||||
this.farmerBough = data.farmerBough ?? false;
|
||||
this.plant = Plants.getPlant(this.id);
|
||||
}
|
||||
|
||||
public isFarmerBought(): boolean {
|
||||
return this.farmerBough;
|
||||
}
|
||||
|
||||
public getLevel(): number {
|
||||
return this.level;
|
||||
}
|
||||
public getFarberBought(): boolean {
|
||||
return this.farmerBough;
|
||||
}
|
||||
public getTimePassed(): number {
|
||||
return this.timePassed;
|
||||
}
|
||||
public addTimePassed(time: number): number {
|
||||
return this.timePassed += time;
|
||||
}
|
||||
|
||||
public getPlantData(): PlantDto {
|
||||
return this.plant!;
|
||||
}
|
||||
|
||||
public getSaveData(): any {
|
||||
return {
|
||||
id: this.id,
|
||||
level: this.level,
|
||||
timePassed: this.timePassed,
|
||||
farmerBough: this.farmerBough,
|
||||
};
|
||||
}
|
||||
|
||||
public getTimeToGrow(): number {
|
||||
if (!this.plant) return 0;
|
||||
return this.plant.timeToGrow;
|
||||
}
|
||||
getPrice() {
|
||||
if (!this.plant) return 0;
|
||||
return this.formulasService.getPrice(this.plant.basePrice, this.plant.growthRate, this.level);
|
||||
}
|
||||
|
||||
buy() {
|
||||
if (this.playerService.seeds >= this.getPrice()) {
|
||||
this.playerService.seeds -= this.getPrice();
|
||||
this.level += 1
|
||||
}
|
||||
}
|
||||
|
||||
harvest() {
|
||||
if (this.getTimeToGrow() < this.timePassed) {
|
||||
this.timePassed = 0;
|
||||
this.playerService.seeds += this.getReward() * this.level;
|
||||
}
|
||||
}
|
||||
|
||||
getReward() {
|
||||
if (!this.plant) return 0;
|
||||
return this.plant.reward;
|
||||
}
|
||||
|
||||
getRewardTotal() {
|
||||
return this.level * this.getReward();
|
||||
}
|
||||
|
||||
progress(): number {
|
||||
return this.timePassed / this.getTimeToGrow() * 100;
|
||||
}
|
||||
|
||||
timeLeft(): string {
|
||||
return this.utilitiesService.convertToTime(this.getTimeToGrow() - this.timePassed);
|
||||
}
|
||||
|
||||
canAfford(): boolean {
|
||||
return this.playerService.seeds >= this.getPrice();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user