diff --git a/.DS_Store b/.DS_Store index 658f0e2..c04815a 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91dfed8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +node_modules \ No newline at end of file diff --git a/src/Base.ts b/src/Base.ts new file mode 100644 index 0000000..648f68c --- /dev/null +++ b/src/Base.ts @@ -0,0 +1,21 @@ +export abstract class Base { + protected count: number; + constructor(readonly name: string){ + this.count = 0; + } + getName(){ + return this.name; + } + getCount(){ + return this.count; + } + setCount(newCount: number){ + this.count = newCount; + } + incrementCount(amount = 1){ + this.count += amount; + } + decrementCount(amount = 1){ + this.count -= amount; + } +} \ No newline at end of file diff --git a/src/Engine.ts b/src/Engine.ts new file mode 100644 index 0000000..76149da --- /dev/null +++ b/src/Engine.ts @@ -0,0 +1,4 @@ +import { Harvester } from "./Harvester"; +import { Resource } from "./Resource"; +import { Upgrade } from "./Upgrade"; + diff --git a/src/Harvester.ts b/src/Harvester.ts new file mode 100644 index 0000000..9b918d3 --- /dev/null +++ b/src/Harvester.ts @@ -0,0 +1,21 @@ +import { Base } from "./Base"; + +export class Harvester extends Base{ + private multiplier: number; + constructor(name: string, public cost: Function, public update: Function){ + super(name); + this.multiplier = 1; + } + getMultiplier(){ + return this.multiplier; + } + setMultiplier(newMultiplier: number){ + this.multiplier = newMultiplier; + } + incrementMultiplier(amount = 1){ + this.multiplier += amount; + } + decrementMultiplier(amount = 1){ + this.multiplier -= amount; + } +} \ No newline at end of file diff --git a/src/Resource.ts b/src/Resource.ts index 526dbfd..eaedb96 100644 --- a/src/Resource.ts +++ b/src/Resource.ts @@ -1,6 +1,15 @@ -export class Resource { - constructor(private name: string){} - getName(){ - return `Name: ${this.name}` +import { Base } from "./Base"; + +export class Resource extends Base { + constructor(name: string){ + super(name); } + decrementCount(num: number){ + if(num > this.count){ + throw("Not enough " + this.name); + }else{ + this.count -= num; + } + } + } \ No newline at end of file diff --git a/src/Upgrade.ts b/src/Upgrade.ts new file mode 100644 index 0000000..adab290 --- /dev/null +++ b/src/Upgrade.ts @@ -0,0 +1,22 @@ +import { Base } from "./Base"; + +export class Upgrade extends Base{ + private maxCount: number; + constructor( name: string, theCount: number, theMax: number, public cost: Function, public effect: Function){ + super(name); + this.maxCount = 0; + } + getMaxCount(){ + return this.maxCount; + } + setMaxCount(newMax: number){ + this.maxCount = newMax; + } + incrementMaxCount(amount = 1){ + this.maxCount += amount; + } + decrementMaxCount(amount = 1){ + this.maxCount -= amount; + } + +} \ No newline at end of file diff --git a/src/__tests__/Harvester.spec.ts b/src/__tests__/Harvester.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/__tests__/Upgrade.spec.ts b/src/__tests__/Upgrade.spec.ts new file mode 100644 index 0000000..e69de29