diff --git a/src/Corporation/Actions.ts b/src/Corporation/Actions.ts index 07e475b6f..820017692 100644 --- a/src/Corporation/Actions.ts +++ b/src/Corporation/Actions.ts @@ -1,8 +1,6 @@ import { Player } from "../Player"; import { MaterialSizes } from "./MaterialSizes"; -import { ICorporation } from "./ICorporation"; import { Corporation } from "./Corporation"; -import { IIndustry } from "./IIndustry"; import { IndustryStartingCosts, IndustryResearchTrees } from "./IndustryData"; import { Industry } from "./Industry"; import { CorporationConstants } from "./data/Constants"; @@ -17,7 +15,7 @@ import { EmployeePositions } from "./EmployeePositions"; import { ResearchMap } from "./ResearchMap"; import { isRelevantMaterial } from "./ui/Helpers"; -export function NewIndustry(corporation: ICorporation, industry: string, name: string): void { +export function NewIndustry(corporation: Corporation, industry: string, name: string): void { if (corporation.divisions.find(({ type }) => industry == type)) throw new Error(`You have already expanded into the ${industry} industry!`); @@ -47,7 +45,7 @@ export function NewIndustry(corporation: ICorporation, industry: string, name: s } } -export function NewCity(corporation: ICorporation, division: IIndustry, city: string): void { +export function NewCity(corporation: Corporation, division: Industry, city: string): void { if (corporation.funds < CorporationConstants.OfficeInitialCost) { throw new Error("You don't have enough company funds to open a new office!"); } @@ -61,7 +59,7 @@ export function NewCity(corporation: ICorporation, division: IIndustry, city: st }); } -export function UnlockUpgrade(corporation: ICorporation, upgrade: CorporationUnlockUpgrade): void { +export function UnlockUpgrade(corporation: Corporation, upgrade: CorporationUnlockUpgrade): void { if (corporation.funds < upgrade.price) { throw new Error("Insufficient funds"); } @@ -71,7 +69,7 @@ export function UnlockUpgrade(corporation: ICorporation, upgrade: CorporationUnl corporation.unlock(upgrade); } -export function LevelUpgrade(corporation: ICorporation, upgrade: CorporationUpgrade): void { +export function LevelUpgrade(corporation: Corporation, upgrade: CorporationUpgrade): void { const baseCost = upgrade.basePrice; const priceMult = upgrade.priceMult; const level = corporation.upgrades[upgrade.index]; @@ -83,7 +81,7 @@ export function LevelUpgrade(corporation: ICorporation, upgrade: CorporationUpgr } } -export function IssueDividends(corporation: ICorporation, rate: number): void { +export function IssueDividends(corporation: Corporation, rate: number): void { if (isNaN(rate) || rate < 0 || rate > CorporationConstants.DividendMaxRate) { throw new Error(`Invalid value. Must be an number between 0 and ${CorporationConstants.DividendMaxRate}`); } @@ -252,7 +250,7 @@ export function BuyMaterial(material: Material, amt: number): void { material.buy = amt; } -export function BulkPurchase(corp: ICorporation, warehouse: Warehouse, material: Material, amt: number): void { +export function BulkPurchase(corp: Corporation, warehouse: Warehouse, material: Material, amt: number): void { const matSize = MaterialSizes[material.name]; const maxAmount = (warehouse.size - warehouse.sizeUsed) / matSize; if (isNaN(amt) || amt < 0) { @@ -270,7 +268,7 @@ export function BulkPurchase(corp: ICorporation, warehouse: Warehouse, material: } } -export function SellShares(corporation: ICorporation, numShares: number): number { +export function SellShares(corporation: Corporation, numShares: number): number { if (isNaN(numShares)) throw new Error("Invalid value for number of shares"); if (numShares < 0) throw new Error("Invalid value for number of shares"); if (numShares > corporation.numShares) throw new Error("You don't have that many shares to sell!"); @@ -290,7 +288,7 @@ export function SellShares(corporation: ICorporation, numShares: number): number return profit; } -export function BuyBackShares(corporation: ICorporation, numShares: number): boolean { +export function BuyBackShares(corporation: Corporation, numShares: number): boolean { if (isNaN(numShares)) throw new Error("Invalid value for number of shares"); if (numShares < 0) throw new Error("Invalid value for number of shares"); if (numShares > corporation.issuedShares) throw new Error("You don't have that many shares to buy!"); @@ -318,7 +316,7 @@ export function AutoAssignJob(office: OfficeSpace, job: string, count: number): return office.autoAssignJob(job, count); } -export function UpgradeOfficeSize(corp: ICorporation, office: OfficeSpace, size: number): void { +export function UpgradeOfficeSize(corp: Corporation, office: OfficeSpace, size: number): void { const initialPriceMult = Math.round(office.size / CorporationConstants.OfficeInitialSize); const costMultiplier = 1.09; // Calculate cost to upgrade size by 15 employees @@ -332,7 +330,7 @@ export function UpgradeOfficeSize(corp: ICorporation, office: OfficeSpace, size: corp.funds = corp.funds - cost; } -export function BuyCoffee(corp: ICorporation, office: OfficeSpace): boolean { +export function BuyCoffee(corp: Corporation, office: OfficeSpace): boolean { const cost = office.getCoffeeCost(); if (corp.funds < cost) { return false; @@ -346,7 +344,7 @@ export function BuyCoffee(corp: ICorporation, office: OfficeSpace): boolean { return true; } -export function ThrowParty(corp: ICorporation, office: OfficeSpace, costPerEmployee: number): number { +export function ThrowParty(corp: Corporation, office: OfficeSpace, costPerEmployee: number): number { const mult = 1 + costPerEmployee / 10e6; const cost = costPerEmployee * office.employees.length; if (corp.funds < cost) { @@ -361,7 +359,7 @@ export function ThrowParty(corp: ICorporation, office: OfficeSpace, costPerEmplo return mult; } -export function PurchaseWarehouse(corp: ICorporation, division: IIndustry, city: string): void { +export function PurchaseWarehouse(corp: Corporation, division: Industry, city: string): void { if (corp.funds < CorporationConstants.WarehouseInitialCost) return; if (division.warehouses[city] instanceof Warehouse) return; division.warehouses[city] = new Warehouse({ @@ -380,7 +378,7 @@ export function UpgradeWarehouseCost(warehouse: Warehouse, amt: number): number ); } -export function UpgradeWarehouse(corp: ICorporation, division: IIndustry, warehouse: Warehouse, amt = 1): void { +export function UpgradeWarehouse(corp: Corporation, division: Industry, warehouse: Warehouse, amt = 1): void { const sizeUpgradeCost = UpgradeWarehouseCost(warehouse, amt); if (corp.funds < sizeUpgradeCost) return; warehouse.level += amt; @@ -388,7 +386,7 @@ export function UpgradeWarehouse(corp: ICorporation, division: IIndustry, wareho corp.funds = corp.funds - sizeUpgradeCost; } -export function HireAdVert(corp: ICorporation, division: IIndustry): void { +export function HireAdVert(corp: Corporation, division: Industry): void { const cost = division.getAdVertCost(); if (corp.funds < cost) return; corp.funds = corp.funds - cost; @@ -396,8 +394,8 @@ export function HireAdVert(corp: ICorporation, division: IIndustry): void { } export function MakeProduct( - corp: ICorporation, - division: IIndustry, + corp: Corporation, + division: Industry, city: string, productName: string, designInvest: number, @@ -449,7 +447,7 @@ export function MakeProduct( products[product.name] = product; } -export function Research(division: IIndustry, researchName: string): void { +export function Research(division: Industry, researchName: string): void { const researchTree = IndustryResearchTrees[division.type]; if (researchTree === undefined) throw new Error(`No research tree for industry '${division.type}'`); const allResearch = researchTree.getAllNodes(); diff --git a/src/Corporation/Employee.ts b/src/Corporation/Employee.ts index a8c71e636..8cbd5e9cb 100644 --- a/src/Corporation/Employee.ts +++ b/src/Corporation/Employee.ts @@ -2,8 +2,8 @@ import { CorporationConstants } from "./data/Constants"; import { getRandomInt } from "../utils/helpers/getRandomInt"; import { Generic_fromJSON, Generic_toJSON, IReviverValue, Reviver } from "../utils/JSONReviver"; import { EmployeePositions } from "./EmployeePositions"; -import { ICorporation } from "./ICorporation"; -import { IIndustry } from "./IIndustry"; +import { Corporation } from "./Corporation"; +import { Industry } from "./Industry"; interface IParams { name?: string; @@ -77,7 +77,7 @@ export class Employee { return salary; } - calculateProductivity(corporation: ICorporation, industry: IIndustry): number { + calculateProductivity(corporation: Corporation, industry: Industry): number { const effCre = this.cre * corporation.getEmployeeCreMultiplier() * industry.getEmployeeCreMultiplier(), effCha = this.cha * corporation.getEmployeeChaMultiplier() * industry.getEmployeeChaMultiplier(), effInt = this.int * corporation.getEmployeeIntMultiplier() * industry.getEmployeeIntMultiplier(), diff --git a/src/Corporation/ICorporation.ts b/src/Corporation/ICorporation.ts deleted file mode 100644 index ea71c6cf5..000000000 --- a/src/Corporation/ICorporation.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Industry } from "./Industry"; -import { CorporationUnlockUpgrade } from "./data/CorporationUnlockUpgrades"; -import { CorporationUpgrade } from "./data/CorporationUpgrades"; -import { CorporationState } from "./CorporationState"; -import { IReviverValue } from "../utils/JSONReviver"; - -export interface ICorporation { - name: string; - - divisions: Industry[]; - - funds: number; - revenue: number; - expenses: number; - fundingRound: number; - public: boolean; - totalShares: number; - numShares: number; - shareSalesUntilPriceUpdate: number; - shareSaleCooldown: number; - issueNewSharesCooldown: number; - dividendRate: number; - dividendTax: number; - issuedShares: number; - sharePrice: number; - storedCycles: number; - valuation: number; - - unlockUpgrades: number[]; - upgrades: number[]; - upgradeMultipliers: number[]; - - state: CorporationState; - - addFunds(amt: number): void; - getState(): string; - storeCycles(numCycles: number): void; - process(): void; - determineValuation(): void; - determineCycleValuation(): number; - getTargetSharePrice(): number; - updateSharePrice(): void; - immediatelyUpdateSharePrice(): void; - calculateShareSale(numShares: number): [number, number, number]; - convertCooldownToString(cd: number): string; - unlock(upgrade: CorporationUnlockUpgrade): void; - upgrade(upgrade: CorporationUpgrade): void; - getProductionMultiplier(): number; - getStorageMultiplier(): number; - getDreamSenseGain(): number; - getAdvertisingMultiplier(): number; - getEmployeeCreMultiplier(): number; - getEmployeeChaMultiplier(): number; - getEmployeeIntMultiplier(): number; - getEmployeeEffMultiplier(): number; - getSalesMultiplier(): number; - getScientificResearchMultiplier(): number; - getStarterGuide(): void; - updateDividendTax(): void; - getCycleDividends(): number; - toJSON(): IReviverValue; -} diff --git a/src/Corporation/IIndustry.ts b/src/Corporation/IIndustry.ts deleted file mode 100644 index 0ea8646a1..000000000 --- a/src/Corporation/IIndustry.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Material } from "./Material"; -import { Warehouse } from "./Warehouse"; -import { ICorporation } from "./ICorporation"; -import { OfficeSpace } from "./OfficeSpace"; -import { Product } from "./Product"; -import { IReviverValue } from "../utils/JSONReviver"; - -export interface IIndustry { - name: string; - type: string; - sciResearch: Material; - researched: { [key: string]: boolean | undefined }; - reqMats: { [key: string]: number | undefined }; - - prodMats: string[]; - - products: { [key: string]: Product | undefined }; - makesProducts: boolean; - - awareness: number; - popularity: number; - startingCost: number; - - reFac: number; - sciFac: number; - hwFac: number; - robFac: number; - aiFac: number; - advFac: number; - - prodMult: number; - - // Decimal - lastCycleRevenue: number; - lastCycleExpenses: number; - thisCycleRevenue: number; - thisCycleExpenses: number; - - state: string; - newInd: boolean; - warehouses: { [key: string]: Warehouse | 0 }; - offices: { [key: string]: OfficeSpace | 0 }; - numAdVerts: number; - - init(): void; - getProductDescriptionText(): string; - getMaximumNumberProducts(): number; - hasMaximumNumberProducts(): boolean; - calculateProductionFactors(): void; - updateWarehouseSizeUsed(warehouse: Warehouse): void; - process(marketCycles: number, state: string, corporation: ICorporation): void; - processMaterialMarket(): void; - processProductMarket(marketCycles: number): void; - processMaterials(marketCycles: number, corporation: ICorporation): [number, number]; - processProducts(marketCycles: number, corporation: ICorporation): [number, number]; - processProduct(marketCycles: number, product: Product, corporation: ICorporation): number; - resetImports(state: string): void; - discontinueProduct(product: Product): void; - getAdVertCost(): number; - applyAdVert(corporation: ICorporation): void; - getOfficeProductivity(office: OfficeSpace, params?: { forProduct?: boolean }): number; - getBusinessFactor(office: OfficeSpace): number; - getAdvertisingFactors(): [number, number, number, number]; - getMarketFactor(mat: { dmd: number; cmp: number }): number; - hasResearch(name: string): boolean; - updateResearchTree(): void; - getAdvertisingMultiplier(): number; - getEmployeeChaMultiplier(): number; - getEmployeeCreMultiplier(): number; - getEmployeeEffMultiplier(): number; - getEmployeeIntMultiplier(): number; - getProductionMultiplier(): number; - getProductProductionMultiplier(): number; - getSalesMultiplier(): number; - getScientificResearchMultiplier(): number; - getStorageMultiplier(): number; - toJSON(): IReviverValue; -} diff --git a/src/Corporation/Industry.ts b/src/Corporation/Industry.ts index affcf04e2..74426c857 100644 --- a/src/Corporation/Industry.ts +++ b/src/Corporation/Industry.ts @@ -12,16 +12,15 @@ import { dialogBoxCreate } from "../ui/React/DialogBox"; import { isString } from "../utils/helpers/isString"; import { MaterialSizes } from "./MaterialSizes"; import { Warehouse } from "./Warehouse"; -import { ICorporation } from "./ICorporation"; -import { IIndustry } from "./IIndustry"; +import { Corporation } from "./Corporation"; interface IParams { name?: string; - corp?: ICorporation; + corp?: Corporation; type?: string; } -export class Industry implements IIndustry { +export class Industry { name = ""; type = Industries.Agriculture; sciResearch = new Material({ name: "Scientific Research" }); @@ -385,7 +384,7 @@ export class Industry implements IIndustry { } } - process(marketCycles = 1, state: string, corporation: ICorporation): void { + process(marketCycles = 1, state: string, corporation: Corporation): void { this.state = state; //At the start of a cycle, store and reset revenue/expenses @@ -518,7 +517,7 @@ export class Industry implements IIndustry { } //Process production, purchase, and import/export of materials - processMaterials(marketCycles = 1, corporation: ICorporation): [number, number] { + processMaterials(marketCycles = 1, corporation: Corporation): [number, number] { let revenue = 0, expenses = 0; this.calculateProductionFactors(); @@ -949,7 +948,7 @@ export class Industry implements IIndustry { } //Process production & sale of this industry's FINISHED products (including all of their stats) - processProducts(marketCycles = 1, corporation: ICorporation): [number, number] { + processProducts(marketCycles = 1, corporation: Corporation): [number, number] { let revenue = 0; const expenses = 0; @@ -985,7 +984,7 @@ export class Industry implements IIndustry { } //Processes FINISHED products - processProduct(marketCycles = 1, product: Product, corporation: ICorporation): number { + processProduct(marketCycles = 1, product: Product, corporation: Corporation): number { let totalProfit = 0; for (let i = 0; i < CorporationConstants.Cities.length; ++i) { const city = CorporationConstants.Cities[i]; @@ -1225,7 +1224,7 @@ export class Industry implements IIndustry { return 1e9 * Math.pow(1.06, this.numAdVerts); } - applyAdVert(corporation: ICorporation): void { + applyAdVert(corporation: Corporation): void { const advMult = corporation.getAdvertisingMultiplier() * this.getAdvertisingMultiplier(); const awareness = (this.awareness + 3 * advMult) * (1.01 * advMult); this.awareness = Math.min(awareness, Number.MAX_VALUE); diff --git a/src/Corporation/IndustryData.tsx b/src/Corporation/IndustryData.tsx index d2ae99dd3..0608129ef 100644 --- a/src/Corporation/IndustryData.tsx +++ b/src/Corporation/IndustryData.tsx @@ -1,6 +1,6 @@ import React from "react"; import { ResearchTree } from "./ResearchTree"; -import { ICorporation } from "./ICorporation"; +import { Corporation } from "./Corporation"; import { getBaseResearchTreeCopy, getProductIndustryResearchTreeCopy } from "./data/BaseResearchTree"; import { MoneyCost } from "./ui/MoneyCost"; @@ -59,8 +59,8 @@ export const IndustryStartingCosts: IIndustryMap = { }; // Map of description for each industry -export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.ReactElement> = { - Energy: (corp: ICorporation) => ( +export const IndustryDescriptions: IIndustryMap<(corp: Corporation) => React.ReactElement> = { + Energy: (corp: Corporation) => ( <> Engage in the production and distribution of energy.
@@ -70,7 +70,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Utilities: (corp: ICorporation) => ( + Utilities: (corp: Corporation) => ( <> Distribute water and provide wastewater services.
@@ -80,7 +80,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Agriculture: (corp: ICorporation) => ( + Agriculture: (corp: Corporation) => ( <> Cultivate crops and breed livestock to produce food.
@@ -90,7 +90,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: YES ), - Fishing: (corp: ICorporation) => ( + Fishing: (corp: Corporation) => ( <> Produce food through the breeding and processing of fish and fish products.
@@ -100,7 +100,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Mining: (corp: ICorporation) => ( + Mining: (corp: Corporation) => ( <> Extract and process metals from the earth.
@@ -110,7 +110,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Food: (corp: ICorporation) => ( + Food: (corp: Corporation) => ( <> Create your own restaurants all around the world.
@@ -120,7 +120,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: YES ), - Tobacco: (corp: ICorporation) => ( + Tobacco: (corp: Corporation) => ( <> Create and distribute tobacco and tobacco-related products.
@@ -130,7 +130,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: YES ), - Chemical: (corp: ICorporation) => ( + Chemical: (corp: Corporation) => ( <> Produce industrial chemicals.
@@ -140,7 +140,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Pharmaceutical: (corp: ICorporation) => ( + Pharmaceutical: (corp: Corporation) => ( <> Discover, develop, and create new pharmaceutical drugs.
@@ -150,7 +150,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Computer: (corp: ICorporation) => ( + Computer: (corp: Corporation) => ( <> Develop and manufacture new computer hardware and networking infrastructures.
@@ -160,7 +160,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Robotics: (corp: ICorporation) => ( + Robotics: (corp: Corporation) => ( <> Develop and create robots.
@@ -170,7 +170,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - Software: (corp: ICorporation) => ( + Software: (corp: Corporation) => ( <> Develop computer software and create AI Cores.
@@ -180,7 +180,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: YES ), - Healthcare: (corp: ICorporation) => ( + Healthcare: (corp: Corporation) => ( <> Create and manage hospitals.
@@ -190,7 +190,7 @@ export const IndustryDescriptions: IIndustryMap<(corp: ICorporation) => React.Re Recommended starting Industry: NO ), - RealEstate: (corp: ICorporation) => ( + RealEstate: (corp: Corporation) => ( <> Develop and manage real estate properties.
diff --git a/src/Corporation/OfficeSpace.ts b/src/Corporation/OfficeSpace.ts index 766e1b670..eba259395 100644 --- a/src/Corporation/OfficeSpace.ts +++ b/src/Corporation/OfficeSpace.ts @@ -4,8 +4,8 @@ import { getRandomInt } from "../utils/helpers/getRandomInt"; import { generateRandomString } from "../utils/StringHelperFunctions"; import { Generic_fromJSON, Generic_toJSON, IReviverValue, Reviver } from "../utils/JSONReviver"; import { Employee } from "./Employee"; -import { IIndustry } from "./IIndustry"; -import { ICorporation } from "./ICorporation"; +import { Industry } from "./Industry"; +import { Corporation } from "./Corporation"; interface IParams { loc?: string; @@ -68,7 +68,7 @@ export class OfficeSpace { return this.employees.length >= this.size; } - process(marketCycles = 1, corporation: ICorporation, industry: IIndustry): number { + process(marketCycles = 1, corporation: Corporation, industry: Industry): number { // HRBuddy AutoRecruitment and training if (industry.hasResearch("HRBuddy-Recruitment") && !this.atCapacity()) { const emp = this.hireRandomEmployee(); @@ -177,7 +177,7 @@ export class OfficeSpace { } } - calculateEmployeeProductivity(corporation: ICorporation, industry: IIndustry): void { + calculateEmployeeProductivity(corporation: Corporation, industry: Industry): void { //Reset for (const name of Object.keys(this.employeeProd)) { this.employeeProd[name] = 0; diff --git a/src/Corporation/Product.ts b/src/Corporation/Product.ts index 815c284c3..e85380372 100644 --- a/src/Corporation/Product.ts +++ b/src/Corporation/Product.ts @@ -1,6 +1,6 @@ import { EmployeePositions } from "./EmployeePositions"; import { MaterialSizes } from "./MaterialSizes"; -import { IIndustry } from "./IIndustry"; +import { Industry } from "./Industry"; import { ProductRatingWeights, IProductRatingWeight } from "./ProductRatingWeights"; import { createCityMap } from "../Locations/createCityMap"; @@ -157,7 +157,7 @@ export class Product { } // @param industry - Industry object. Reference to industry that makes this Product - finishProduct(industry: IIndustry): void { + finishProduct(industry: Industry): void { this.fin = true; // Calculate properties @@ -248,7 +248,7 @@ export class Product { } } - calculateRating(industry: IIndustry): void { + calculateRating(industry: Industry): void { const weights: IProductRatingWeight = ProductRatingWeights[industry.type]; if (weights == null) { console.error(`Could not find product rating weights for: ${industry}`); diff --git a/src/Corporation/Warehouse.ts b/src/Corporation/Warehouse.ts index 03cf81615..874651399 100644 --- a/src/Corporation/Warehouse.ts +++ b/src/Corporation/Warehouse.ts @@ -1,14 +1,14 @@ import { Material } from "./Material"; -import { ICorporation } from "./ICorporation"; -import { IIndustry } from "./IIndustry"; +import { Corporation } from "./Corporation"; +import { Industry } from "./Industry"; import { MaterialSizes } from "./MaterialSizes"; import { IMap } from "../types"; import { Generic_fromJSON, Generic_toJSON, IReviverValue, Reviver } from "../utils/JSONReviver"; import { exceptionAlert } from "../utils/helpers/exceptionAlert"; interface IConstructorParams { - corp?: ICorporation; - industry?: IIndustry; + corp?: Corporation; + industry?: Industry; loc?: string; size?: number; } @@ -96,7 +96,7 @@ export class Warehouse { } } - updateSize(corporation: ICorporation, industry: IIndustry): void { + updateSize(corporation: Corporation, industry: Industry): void { try { this.size = this.level * 100 * corporation.getStorageMultiplier() * industry.getStorageMultiplier(); } catch (e: unknown) { diff --git a/src/Corporation/ui/Context.ts b/src/Corporation/ui/Context.ts index 62e7f50a0..42bcfcf72 100644 --- a/src/Corporation/ui/Context.ts +++ b/src/Corporation/ui/Context.ts @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { ICorporation } from "../ICorporation"; -import { IIndustry } from "../IIndustry"; +import { Corporation } from "../Corporation"; +import { Industry } from "../Industry"; export const Context: { - Corporation: React.Context; - Division: React.Context; + Corporation: React.Context; + Division: React.Context; } = { - Corporation: React.createContext({} as ICorporation), - Division: React.createContext({} as IIndustry), + Corporation: React.createContext({} as Corporation), + Division: React.createContext({} as Industry), }; -export const useCorporation = (): ICorporation => useContext(Context.Corporation); -export const useDivision = (): IIndustry => useContext(Context.Division); +export const useCorporation = (): Corporation => useContext(Context.Corporation); +export const useDivision = (): Industry => useContext(Context.Division); diff --git a/src/Corporation/ui/CorporationRoot.tsx b/src/Corporation/ui/CorporationRoot.tsx index ba24dbae8..3ca775af3 100644 --- a/src/Corporation/ui/CorporationRoot.tsx +++ b/src/Corporation/ui/CorporationRoot.tsx @@ -2,7 +2,7 @@ // These are the tabs at the top of the UI that let you switch to different // divisions, see an overview of your corporation, or create a new industry import React, { useState, useEffect } from "react"; -import { IIndustry } from "../IIndustry"; +import { Industry } from "../Industry"; import { MainPanel } from "./MainPanel"; import { Industries } from "../IndustryData"; import { ExpandIndustryTab } from "./ExpandIndustryTab"; @@ -32,7 +32,7 @@ export function CorporationRoot(): React.ReactElement { const canExpand = Object.keys(Industries).filter( (industryType: string) => - corporation.divisions.find((division: IIndustry) => division.type === industryType) === undefined, + corporation.divisions.find((division: Industry) => division.type === industryType) === undefined, ).length > 0; return ( diff --git a/src/Corporation/ui/ExpandIndustryTab.tsx b/src/Corporation/ui/ExpandIndustryTab.tsx index 74faabadf..8c4a36df5 100644 --- a/src/Corporation/ui/ExpandIndustryTab.tsx +++ b/src/Corporation/ui/ExpandIndustryTab.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import { dialogBoxCreate } from "../../ui/React/DialogBox"; import { IndustryStartingCosts, Industries, IndustryDescriptions } from "../IndustryData"; import { useCorporation } from "./Context"; -import { IIndustry } from "../IIndustry"; +import { Industry } from "../Industry"; import { NewIndustry } from "../Actions"; import Typography from "@mui/material/Typography"; @@ -23,7 +23,7 @@ export function ExpandIndustryTab(props: IProps): React.ReactElement { const possibleIndustries = allIndustries .filter( (industryType: string) => - corp.divisions.find((division: IIndustry) => division.type === industryType) === undefined, + corp.divisions.find((division: Industry) => division.type === industryType) === undefined, ) .sort(); const [industry, setIndustry] = useState(possibleIndustries.length > 0 ? possibleIndustries[0] : ""); diff --git a/src/Corporation/ui/Helpers.tsx b/src/Corporation/ui/Helpers.tsx index 30d116105..9f7b505d5 100644 --- a/src/Corporation/ui/Helpers.tsx +++ b/src/Corporation/ui/Helpers.tsx @@ -1,8 +1,8 @@ -import { IIndustry } from "../IIndustry"; +import { Industry } from "../Industry"; // Returns a boolean indicating whether the given material is relevant for the // current industry. -export function isRelevantMaterial(matName: string, division: IIndustry): boolean { +export function isRelevantMaterial(matName: string, division: Industry): boolean { // Materials that affect Production multiplier const prodMultiplierMats = ["Hardware", "Robots", "AICores", "RealEstate", "AI Cores", "Real Estate"]; diff --git a/src/Corporation/ui/IndustryProductEquation.tsx b/src/Corporation/ui/IndustryProductEquation.tsx index ce43b555e..c245b06b0 100644 --- a/src/Corporation/ui/IndustryProductEquation.tsx +++ b/src/Corporation/ui/IndustryProductEquation.tsx @@ -1,9 +1,9 @@ import React from "react"; -import { IIndustry } from "../IIndustry"; +import { Industry } from "../Industry"; import { MathJaxWrapper } from "../../MathJaxWrapper"; interface IProps { - division: IIndustry; + division: Industry; } export function IndustryProductEquation(props: IProps): React.ReactElement { diff --git a/src/Corporation/ui/IndustryWarehouse.tsx b/src/Corporation/ui/IndustryWarehouse.tsx index 0284e27ad..c60998cec 100644 --- a/src/Corporation/ui/IndustryWarehouse.tsx +++ b/src/Corporation/ui/IndustryWarehouse.tsx @@ -13,8 +13,8 @@ import { MaterialSizes } from "../MaterialSizes"; import { numeralWrapper } from "../../ui/numeralFormat"; -import { ICorporation } from "../ICorporation"; -import { IIndustry } from "../IIndustry"; +import { Corporation } from "../Corporation"; +import { Industry } from "../Industry"; import { MoneyCost } from "./MoneyCost"; import { isRelevantMaterial } from "./Helpers"; import { IndustryProductEquation } from "./IndustryProductEquation"; @@ -30,8 +30,8 @@ import makeStyles from "@mui/styles/makeStyles"; import createStyles from "@mui/styles/createStyles"; interface IProps { - corp: ICorporation; - division: IIndustry; + corp: Corporation; + division: Industry; warehouse: Warehouse | 0; currentCity: string; rerender: () => void; diff --git a/src/Corporation/ui/MainPanel.tsx b/src/Corporation/ui/MainPanel.tsx index 35a2833fd..ac865870d 100644 --- a/src/Corporation/ui/MainPanel.tsx +++ b/src/Corporation/ui/MainPanel.tsx @@ -4,7 +4,7 @@ import React from "react"; import { CityTabs } from "./CityTabs"; -import { IIndustry } from "../IIndustry"; +import { Industry } from "../Industry"; import { Context, useCorporation } from "./Context"; import { CityName } from "../../Locations/data/CityNames"; @@ -18,7 +18,7 @@ export function MainPanel(props: IProps): React.ReactElement { const corp = useCorporation(); const division = props.divisionName !== "Overview" - ? corp.divisions.find((division: IIndustry) => division.name === props.divisionName) + ? corp.divisions.find((division: Industry) => division.name === props.divisionName) : undefined; // use undefined because find returns undefined if (division === undefined) throw new Error("Cannot find division"); diff --git a/src/Corporation/ui/MoneyCost.tsx b/src/Corporation/ui/MoneyCost.tsx index 536ee2b95..8a2f17b6a 100644 --- a/src/Corporation/ui/MoneyCost.tsx +++ b/src/Corporation/ui/MoneyCost.tsx @@ -1,6 +1,6 @@ import * as React from "react"; import { numeralWrapper } from "../../ui/numeralFormat"; -import { ICorporation } from "../ICorporation"; +import { Corporation } from "../Corporation"; import { Theme } from "@mui/material/styles"; import makeStyles from "@mui/styles/makeStyles"; import createStyles from "@mui/styles/createStyles"; @@ -18,7 +18,7 @@ const useStyles = makeStyles((theme: Theme) => interface IProps { money: number; - corp: ICorporation; + corp: Corporation; } export function MoneyCost(props: IProps): React.ReactElement { diff --git a/src/Corporation/ui/modals/ExportModal.tsx b/src/Corporation/ui/modals/ExportModal.tsx index 947e932de..8161261ec 100644 --- a/src/Corporation/ui/modals/ExportModal.tsx +++ b/src/Corporation/ui/modals/ExportModal.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import { dialogBoxCreate } from "../../../ui/React/DialogBox"; import { Material } from "../../Material"; import { Export } from "../../Export"; -import { IIndustry } from "../../IIndustry"; +import { Industry } from "../../Industry"; import { ExportMaterial } from "../../Actions"; import { Modal } from "../../../ui/React/Modal"; import { useCorporation } from "../Context"; @@ -23,7 +23,7 @@ interface IProps { // Create a popup that lets the player manage exports export function ExportModal(props: IProps): React.ReactElement { const corp = useCorporation(); - const possibleDivisions = corp.divisions.filter((division: IIndustry) => + const possibleDivisions = corp.divisions.filter((division: Industry) => isRelevantMaterial(props.mat.name, division), ); if (possibleDivisions.length === 0) throw new Error("Export popup created with no divisions."); @@ -72,7 +72,7 @@ export function ExportModal(props: IProps): React.ReactElement { rerender(); } - const currentDivision = corp.divisions.find((division: IIndustry) => division.name === industry); + const currentDivision = corp.divisions.find((division: Industry) => division.name === industry); if (currentDivision === undefined) throw new Error(`Export popup somehow ended up with undefined division '${currentDivision}'`); const possibleCities = Object.keys(currentDivision.warehouses).filter( @@ -90,8 +90,8 @@ export function ExportModal(props: IProps): React.ReactElement {