diff --git a/src/app/Farmers.ts b/src/app/Farmers.ts
new file mode 100644
index 0000000..f56dbe0
--- /dev/null
+++ b/src/app/Farmers.ts
@@ -0,0 +1,62 @@
+import {FarmerDto} from "./farmer.dto";
+
+export default class Farmers {
+
+ private static farmerList: FarmerDto[] = [
+ {
+ id: 1,
+ name: "Farmer 1",
+ price: 1000,
+ },
+ {
+ id: 2,
+ name: "Farmer 2",
+ price: 10000,
+ },
+ {
+ id: 3,
+ name: "Farmer 3",
+ price: 100000,
+ },
+ {
+ id: 4,
+ name: "Farmer 4",
+ price: 1000000,
+ },
+ {
+ id: 5,
+ name: "Farmer 5",
+ price: 10000000,
+ },
+ {
+ id: 6,
+ name: "Farmer 6",
+ price: 100000000,
+ },
+ {
+ id: 7,
+ name: "Farmer 7",
+ price: 1000000000,
+ },
+ {
+ id: 8,
+ name: "Farmer 8",
+ price: 10000000000,
+ },
+ {
+ id: 9,
+ name: "Farmer 9",
+ price: 100000000000,
+ },
+ {
+ id: 10,
+ name: "Farmer 10",
+ price: 1000000000000,
+ }
+ ];
+
+ public static getFarmer(id: number): FarmerDto | null {
+ return this.farmerList.find(x => x.id === id) ?? null;
+ }
+
+}
diff --git a/src/app/Plant.ts b/src/app/Plant.ts
new file mode 100644
index 0000000..52f26b3
--- /dev/null
+++ b/src/app/Plant.ts
@@ -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();
+ }
+
+}
diff --git a/src/app/Plants.ts b/src/app/Plants.ts
new file mode 100644
index 0000000..8c30427
--- /dev/null
+++ b/src/app/Plants.ts
@@ -0,0 +1,105 @@
+import {PlantDto} from "./plant.dto";
+import Farmers from "./Farmers";
+
+export default class Plants {
+
+ private static plantList: PlantDto[] = [
+ {
+ id: 1,
+ name: 'Plant 1',
+ level: 1,
+ basePrice: 4,
+ growthRate: 1.07,
+ timeToGrow: 600,
+ timePassed: 0,
+ reward: 1,
+ farmer: Farmers.getFarmer(1)!,
+ },
+ {
+ id: 2,
+ name: 'Plant 2',
+ level: 0,
+ basePrice: 60,
+ growthRate: 1.15,
+ timeToGrow: 3000,
+ timePassed: 0,
+ reward: 60,
+ farmer: Farmers.getFarmer(2)!,
+ },
+ {
+ id: 3,
+ name: 'Plant 3',
+ level: 0,
+ basePrice: 720,
+ growthRate: 1.14,
+ timeToGrow: 6000,
+ timePassed: 0,
+ reward: 540,
+ farmer: Farmers.getFarmer(3)!,
+ },
+ {
+ id: 4,
+ name: 'Plant 4',
+ level: 0,
+ basePrice: 8640,
+ growthRate: 1.13,
+ timeToGrow: 12000,
+ timePassed: 0,
+ reward: 4320,
+ farmer: Farmers.getFarmer(4)!,
+ },
+ {
+ id: 5,
+ name: 'Plant 5',
+ level: 0,
+ basePrice: 103680,
+ growthRate: 1.12,
+ timeToGrow: 24000,
+ timePassed: 0,
+ reward: 51840,
+ farmer: Farmers.getFarmer(5)!,
+ },
+ {
+ id: 6,
+ name: 'Plant 6',
+ level: 0,
+ basePrice: 51200,
+ growthRate: 1.11,
+ timeToGrow: 45000,
+ timePassed: 0,
+ reward: 102400,
+ farmer: Farmers.getFarmer(6)!,
+ },
+ {
+ id: 7,
+ name: 'Plant 7',
+ level: 0,
+ basePrice: 1000000,
+ growthRate: 1.106,
+ timeToGrow: 60000,
+ timePassed: 0,
+ reward: 204800,
+ farmer: Farmers.getFarmer(7)!,
+ },
+ {
+ id: 8,
+ name: 'Plant 8',
+ level: 0,
+ basePrice: 5000000,
+ growthRate: 1.10,
+ timeToGrow: 60000,
+ timePassed: 0,
+ reward: 614150,
+ farmer: Farmers.getFarmer(8)!,
+ }
+ ]
+
+ public static getPlantCount() {
+ return this.plantList.length;
+ }
+
+ public static getPlant(id: number): PlantDto | null {
+ return this.plantList.find(x => x.id === id) ?? null;
+ }
+
+}
diff --git a/src/app/farmer-container/farmer-container.component.html b/src/app/farmer-container/farmer-container.component.html
new file mode 100644
index 0000000..ecc03c1
--- /dev/null
+++ b/src/app/farmer-container/farmer-container.component.html
@@ -0,0 +1,14 @@
+
+
+

+
+
+ {{ getPrice() }} seeds
+
+
+ {{ plant.getPlantData().farmer.name }}
+
+
+ Automated crops gathering for {{plant.getPlantData().name}}
+
+
diff --git a/src/app/farmer-container/farmer-container.component.scss b/src/app/farmer-container/farmer-container.component.scss
new file mode 100644
index 0000000..97df885
--- /dev/null
+++ b/src/app/farmer-container/farmer-container.component.scss
@@ -0,0 +1,53 @@
+.farmer-container {
+ position: relative;
+ width: 100%;
+ height: calc(100vh / 8);
+ background: #005BBB;
+ margin-top: 1vh;
+}
+
+.farmer-image {
+ position: absolute;
+ top: 1vh;
+ right: 1vh;
+ height: calc(100vh / 8 - 2vh);
+ width: calc(100vh / 8 - 2vh);
+}
+
+.upgrade-button {
+ position: absolute;
+ top: 1vh;
+ left: 1vh;
+ text-align: center;
+ height: calc(100vh / 8 - 2vh);
+ line-height: calc((100vh / 8 - 2vh) / 2);
+ background: #FFD500;
+ width: 20vh;
+ color: black;
+ font-weight: bold;
+}
+
+.name {
+ position: absolute;
+ top: 1vh;
+ left: 22vh;
+ text-align: center;
+ height: calc(100vh / 16 - 3vh);
+ line-height: calc(100vh / 16 - 3vh);
+ width: calc(100% - 1vh - 100vh / 8 - 21vh);
+}
+
+.reward {
+ position: absolute;
+ top: calc(100vh / 16 - 2vh);
+ left: 22vh;
+ text-align: center;
+ height: calc(100vh / 16 - 3vh);
+ line-height: calc(100vh / 16 - 3vh);
+ width: calc(100% - 1vh - 100vh / 8 - 21vh);
+}
+
+
+.disabled {
+ background: #cacaca;
+}
diff --git a/src/app/farmer-container/farmer-container.component.spec.ts b/src/app/farmer-container/farmer-container.component.spec.ts
new file mode 100644
index 0000000..b319c22
--- /dev/null
+++ b/src/app/farmer-container/farmer-container.component.spec.ts
@@ -0,0 +1,24 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+import { IonicModule } from '@ionic/angular';
+
+import { FarmerContainerComponent } from './farmer-container.component';
+
+describe('FarmerContainerComponent', () => {
+ let component: FarmerContainerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ FarmerContainerComponent ],
+ imports: [IonicModule.forRoot()]
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(FarmerContainerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ }));
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/farmer-container/farmer-container.component.ts b/src/app/farmer-container/farmer-container.component.ts
new file mode 100644
index 0000000..7eee4a4
--- /dev/null
+++ b/src/app/farmer-container/farmer-container.component.ts
@@ -0,0 +1,30 @@
+import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
+import {PlantDto} from "../plant.dto";
+import {PlayerService} from "../player.service";
+import Plant from "../Plant";
+
+@Component({
+ selector: 'app-farmer-container',
+ templateUrl: './farmer-container.component.html',
+ styleUrls: ['./farmer-container.component.scss'],
+})
+export class FarmerContainerComponent implements OnInit {
+
+ @Input('plant') plant!: Plant;
+ constructor(private playerService: PlayerService) { }
+
+ getPrice() {
+ if (!this.plant) return 0;
+ return this.plant.getPlantData().farmer.price;
+ }
+ buy() {
+ this.playerService.buyFarmer(this.plant.id);
+ }
+
+ canAfford(): boolean {
+ return this.playerService.canAffordFarmer(this.plant.id);
+ }
+
+ ngOnInit() {}
+
+}
diff --git a/src/app/farmer.dto.ts b/src/app/farmer.dto.ts
index 205ef84..8f4efbf 100644
--- a/src/app/farmer.dto.ts
+++ b/src/app/farmer.dto.ts
@@ -1,6 +1,5 @@
export type FarmerDto = {
+ id: number;
name: string,
- level: number,
- basePrice: number,
- boost: number,
+ price: number,
}
diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts
index 776b3f1..df5fb90 100644
--- a/src/app/home/home.module.ts
+++ b/src/app/home/home.module.ts
@@ -7,6 +7,7 @@ import { HomePage } from './home.page';
import { HomePageRoutingModule } from './home-routing.module';
import {PlantContainerComponent} from "../plant-container/plant-container.component";
import {ProgressBarComponent} from "../progress-bar/progress-bar.component";
+import {FarmerContainerComponent} from "../farmer-container/farmer-container.component";
@NgModule({
@@ -16,6 +17,6 @@ import {ProgressBarComponent} from "../progress-bar/progress-bar.component";
IonicModule,
HomePageRoutingModule
],
- declarations: [HomePage, PlantContainerComponent, ProgressBarComponent]
+ declarations: [HomePage, PlantContainerComponent, ProgressBarComponent, FarmerContainerComponent]
})
export class HomePageModule {}
diff --git a/src/app/home/home.page.html b/src/app/home/home.page.html
index b9542d2..273173c 100644
--- a/src/app/home/home.page.html
+++ b/src/app/home/home.page.html
@@ -14,19 +14,25 @@
-
Plants
-
Farmers
+
Plants
+
Farmers
Boosters
Upgrades
Stats
-
diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts
index 569a0c9..a71df62 100644
--- a/src/app/home/home.page.ts
+++ b/src/app/home/home.page.ts
@@ -3,6 +3,8 @@ import {PlayerService} from "../player.service";
import {FormulasService} from "../formulas.service";
import {UtilitiesService} from "../utilities.service";
import {PlantDto} from "../plant.dto";
+import {PlayerPlantDto} from "../playerPlant.dto";
+import Plant from "../Plant";
@Component({
selector: 'app-home',
@@ -12,6 +14,8 @@ import {PlantDto} from "../plant.dto";
})
export class HomePage {
+ public activeTab: number = 0;
+
constructor(
private playerService: PlayerService,
private formulasService: FormulasService
@@ -23,18 +27,10 @@ export class HomePage {
return this.playerService.seeds;
}
- getPlants(): PlantDto[] {
+ getPlants(): Plant[] {
return this.playerService.plants;
}
- onBuy(plant: PlantDto) {
- const price = this.formulasService.getPrice(plant.basePrice, plant.growthRate, plant.level);
- if (price <= this.playerService.seeds) {
- plant.level += 1;
- this.playerService.seeds -= price;
- }
- }
-
gameLoop() {
const currentTime = Date.now();
@@ -42,12 +38,14 @@ export class HomePage {
this.playerService.lastTime = currentTime;
for(let plant of this.playerService.plants) {
- if (plant.level > 0) {
- plant.timePassed += dt;
+ if (plant.getLevel() > 0) {
+ plant.addTimePassed(dt);
- while (plant.timePassed >= plant.timeToGrow) {
- this.playerService.seeds += plant.reward * plant.level;
- plant.timePassed -= plant.timeToGrow;
+ if (plant.getFarberBought()) {
+ while (plant.getTimePassed() >= plant.getPlantData().timeToGrow) {
+ this.playerService.seeds += plant.getRewardTotal();
+ plant.addTimePassed(-plant.getTimeToGrow());
+ }
}
}
}
diff --git a/src/app/plant-container/plant-container.component.html b/src/app/plant-container/plant-container.component.html
index 1a7e665..c0ffcbf 100644
--- a/src/app/plant-container/plant-container.component.html
+++ b/src/app/plant-container/plant-container.component.html
@@ -1,26 +1,27 @@
-
+

-
Lv. {{ plant.level }}
+
Lv. {{ plant.getLevel() }}
-
diff --git a/src/app/plant-container/plant-container.component.scss b/src/app/plant-container/plant-container.component.scss
index 6fae6c5..94e7156 100644
--- a/src/app/plant-container/plant-container.component.scss
+++ b/src/app/plant-container/plant-container.component.scss
@@ -76,3 +76,20 @@
line-height: calc(100vh / 16 - 3vh);
width: calc(100% - 1vh - 100vh / 8 - 21vh);
}
+
+.ready-to-harvest {
+ position: absolute;
+ top: 1vh;
+ right: 1vh;
+ height: calc(100vh / 8 - 2vh);
+ width: calc(100vh / 8 - 2vh);
+ background: #1a1a1acc;
+ color: white;
+ line-height: calc(100vh / 25);
+ text-align: center;
+}
+
+
+.disabled {
+ background: #cacaca;
+}
diff --git a/src/app/plant-container/plant-container.component.ts b/src/app/plant-container/plant-container.component.ts
index 371e977..b67064e 100644
--- a/src/app/plant-container/plant-container.component.ts
+++ b/src/app/plant-container/plant-container.component.ts
@@ -1,53 +1,18 @@
-import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {FormulasService} from "../formulas.service";
-import {UtilitiesService} from "../utilities.service";
-import {PlantDto} from "../plant.dto";
+import {Component, Input, OnInit} from '@angular/core';
+import Plant from "../Plant";
@Component({
selector: 'app-plant-container',
templateUrl: './plant-container.component.html',
styleUrls: ['./plant-container.component.scss'],
- // changeDetection: ChangeDetectionStrategy.OnPush,
})
export class PlantContainerComponent implements OnInit {
- @Input('plant') plant: PlantDto | undefined;
- @Output('onBuy') onBuy = new EventEmitter
();
+ @Input('plant') plant!: Plant;
- constructor(
- private formulasService: FormulasService,
- private utilitiesService: UtilitiesService
- ) { }
+ constructor() { }
ngOnInit() {}
- buy() {
- this.onBuy.emit(this.plant);
- }
-
- getPrice() {
- if (!this.plant) return 0;
- return this.formulasService.getPrice(this.plant.basePrice, this.plant.growthRate, this.plant.level);
- }
-
- getReward() {
- if (!this.plant) return 0;
- return this.plant.reward;
- }
-
- getRewardTotal() {
- if (!this.plant) return 0;
- return this.plant.level * this.plant.reward;
- }
-
- progress(): number {
- if (!this.plant) return 0;
- return this.plant.timePassed / this.plant.timeToGrow * 100;
- }
-
- timeLeft(): string {
- if (!this.plant) return '';
- return this.utilitiesService.convertToTime(this.plant.timeToGrow - this.plant.timePassed);
- }
}
diff --git a/src/app/plant.dto.ts b/src/app/plant.dto.ts
index cf8bf7f..c552a7d 100644
--- a/src/app/plant.dto.ts
+++ b/src/app/plant.dto.ts
@@ -1,4 +1,7 @@
+import {FarmerDto} from "./farmer.dto";
+
export type PlantDto = {
+ id: number,
name: string,
level: number,
basePrice: number,
@@ -6,4 +9,5 @@ export type PlantDto = {
timeToGrow: number,
timePassed: number,
reward: number,
+ farmer: FarmerDto,
}
diff --git a/src/app/player.service.ts b/src/app/player.service.ts
index aa9671d..94a4a34 100644
--- a/src/app/player.service.ts
+++ b/src/app/player.service.ts
@@ -1,102 +1,63 @@
import { Injectable } from '@angular/core';
import {PlantDto} from "./plant.dto";
+import Plant from "./Plant";
+import Plants from "./Plants";
+import {FormulasService} from "./formulas.service";
+import {UtilitiesService} from "./utilities.service";
@Injectable({
providedIn: 'root'
})
export class PlayerService {
+ private lastSaved = Date.now();
public lastTime = Date.now();
public seeds: number = 0;
- public plants: PlantDto[] = [
- {
- name: 'Plant 1',
- level: 1,
- basePrice: 4,
- growthRate: 1.07,
- timeToGrow: 600,
- timePassed: 0,
- reward: 1,
- },
- {
- name: 'Plant 2',
- level: 0,
- basePrice: 60,
- growthRate: 1.15,
- timeToGrow: 3000,
- timePassed: 0,
- reward: 60,
- },
- {
- name: 'Plant 3',
- level: 0,
- basePrice: 720,
- growthRate: 1.14,
- timeToGrow: 6000,
- timePassed: 0,
- reward: 540,
- },
- {
- name: 'Plant 4',
- level: 0,
- basePrice: 8640,
- growthRate: 1.13,
- timeToGrow: 12000,
- timePassed: 0,
- reward: 4320,
- },
- {
- name: 'Plant 5',
- level: 0,
- basePrice: 103680,
- growthRate: 1.12,
- timeToGrow: 24000,
- timePassed: 0,
- reward: 51840,
- },
- {
- name: 'Plant 6',
- level: 0,
- basePrice: 51200,
- growthRate: 1.11,
- timeToGrow: 45000,
- timePassed: 0,
- reward: 102400,
- },
- {
- name: 'Plant 7',
- level: 0,
- basePrice: 1000000,
- growthRate: 1.106,
- timeToGrow: 60000,
- timePassed: 0,
- reward: 204800,
- },
- {
- name: 'Plant 8',
- level: 0,
- basePrice: 5000000,
- growthRate: 1.10,
- timeToGrow: 60000,
- timePassed: 0,
- reward: 614150,
- }
- ];
- constructor() {
+ public plants: Plant[] = [];
+ constructor(
+ private readonly formulasService: FormulasService,
+ private readonly utilitiesService: UtilitiesService,
+ ) {
const data = localStorage.getItem('PlayerSave');
if (data) {
const parsed = JSON.parse(data);
- this.plants = parsed.plants;
+
+ for (let index = 1; index < Plants.getPlantCount(); index++) {
+ this.plants.push(new Plant({...(parsed.plants.find((x: any) => x.id === index) ?? {}), id: index}, formulasService, this, utilitiesService));
+ }
+
+ // this.plants = parsed.plants.map((plant: PlantDto) => ({...this.BlankPlant, ...plant}));
this.seeds = parsed.seeds;
this.lastTime = parsed.lastTime ? parsed.lastTime : Date.now();
+ } else {
+ // add default plants
}
}
save() {
+ if (this.lastSaved + 1000 > Date.now()) return;
+ this.lastSaved = Date.now();
localStorage.setItem('PlayerSave', JSON.stringify({
seeds: this.seeds,
- plants: this.plants,
+ plants: this.plants.map(plant => plant.getSaveData()),
lastTime: this.lastTime
}));
}
+
+
+
+ public canAffordFarmer(id: number): boolean {
+ const plant = this.plants.find(x => x.id === id);
+ if (!plant) return false;
+ return this.seeds >= plant.getPlantData().farmer.price;
+ }
+
+ public buyFarmer(id: number) {
+ const plant = this.plants.find(x => x.id === id);
+ if (!plant) return;
+ if (!this.canAffordFarmer(id)) return;
+ if (plant.isFarmerBought()) return;
+ this.seeds -= plant.getPlantData().farmer.price;
+ plant.farmerBough = true;
+ }
}
diff --git a/src/app/playerPlant.dto.ts b/src/app/playerPlant.dto.ts
new file mode 100644
index 0000000..059465c
--- /dev/null
+++ b/src/app/playerPlant.dto.ts
@@ -0,0 +1,8 @@
+import {FarmerDto} from "./farmer.dto";
+
+export type PlayerPlantDto = {
+ id: number,
+ level: number,
+ timePassed: number,
+ farmerBought: boolean,
+}
diff --git a/src/app/progress-bar/progress-bar.component.html b/src/app/progress-bar/progress-bar.component.html
index 262e002..6e485e3 100644
--- a/src/app/progress-bar/progress-bar.component.html
+++ b/src/app/progress-bar/progress-bar.component.html
@@ -1,4 +1,4 @@
-
+
{{ progressBarText }}
diff --git a/src/app/progress-bar/progress-bar.component.ts b/src/app/progress-bar/progress-bar.component.ts
index 8d5b4fe..173c760 100644
--- a/src/app/progress-bar/progress-bar.component.ts
+++ b/src/app/progress-bar/progress-bar.component.ts
@@ -17,4 +17,10 @@ export class ProgressBarComponent implements OnInit {
ngOnInit() {}
+ getFill(): number {
+ if (this.fill < 0) return 0;
+ if (this.fill > 100) return 100;
+ return this.fill;
+ }
+
}
diff --git a/src/app/utilities.service.ts b/src/app/utilities.service.ts
index 170879c..3cbfba0 100644
--- a/src/app/utilities.service.ts
+++ b/src/app/utilities.service.ts
@@ -8,6 +8,7 @@ export class UtilitiesService {
constructor() { }
convertToTime(num: number) {
+ if (num < 0) num = 0;
num = Math.round(num / 1000);
const days = Math.floor(num / 60 / 60 / 24);
num -= days * 60 * 60 * 24;
diff --git a/src/assets/.pfp-default.kra-autosave.kra b/src/assets/.pfp-default.kra-autosave.kra
new file mode 100644
index 0000000..7e88c78
Binary files /dev/null and b/src/assets/.pfp-default.kra-autosave.kra differ