private void HandleItemBought(GameObject item) { FactoryShopApplier factoryShopApplier = item.GetComponent <FactoryShopApplier>(); if (shopItemBuyer.PlayerHasEnoughScore(factoryShopApplier.cost)) { float totalScore = totalScoreHandler.DecreaseTotalScore(factoryShopApplier.cost); totalScoreVisual.SetTotalScoreText(totalScore); playerProgressHandler.SaveTotalScore(totalScore); BasicFactory basicFactory = boughtItemSpawner.SpawnFactory(factoryShopApplier.gameObject).GetComponent <BasicFactory>(); basicFactory.GetComponent <FactoryVisualTextSpawner>().SetVisualFactoryObjectsHolder(factoryVisualTextsHolder); basicFactory.SetTotalScoreHandler(totalScoreHandler); basicFactory.SetTotalScoreVisual(totalScoreVisual); basicFactory.SetProductionValues(factoryShopApplier.scorePerUnitOfTime, factoryShopApplier.unitOfTime); basicFactory.SetOnUnitOfTimePassedEventHandlers(); basicFactory.StartFactory(); } }