public Factory(Root root) { mServer = root.mServer; mSyncContext = root.SyncContext; mGame = root.mGame; mMap = root.MapView; mRangedWarriorPrefab = root.RangedWarriorPrefab; mMeeleeWarriorPrefab = root.MeeleeWarriorPrefab; mWorkerPrefab = root.WorkerPrefab; mBuildingTemplatePrefab = root.BuildingTemplatePrefab; mCentralBuildingPrefab = root.CentralBuildingPrefab; mMiningCampPrefab = root.MiningCampPrefab; mBarrakPrefab = root.BarrakPrefab; }
void Start() { if (GameUtils.CurrentMode == GameMode.Server) { mGame = new Game(); mServer = new RtsServer(); MapView = CreateMap(mGame.Map.Data, true); var enemyFactory = new Factory(this); var controlledFactory = new Factory(this); controlledFactory.ViewCreated += ControlledFactoryOnViewCreated; enemyFactory.ViewCreated += EnemyFactoryOnViewCreated; var player = new Player(controlledFactory); Player = player; mGame.AddPlayer(player); mServer.MessageRecived += OnChatMessageRecived; mServer.Listen(SyncContext, enemyFactory, mGame); var basePos = GameUtils.CreateBase(mGame, player); PlaseCamera(basePos); } if (GameUtils.CurrentMode == GameMode.Client) { mClient = new RtsClient(SyncContext); mClient.MapLoaded += data => MapView = CreateMap(data, false); mClient.BaseCreated += pos => PlaseCamera(pos); mClient.PlayerConnected += state => Player = state; mClient.DisconnectedFromServer += () => SceneManager.LoadScene(GuiSceneName); mClient.MeeleeWarriorCreated += ClientOnMeeleeWarriorCreated; mClient.RangedWarriorCreated += ClientOnRangedWarriorCreated; mClient.WorkerCreated += ClientOnWorkerCreated; mClient.BuildingTemplateCreated += ClientOnBuildingTemplateCreated; mClient.CentralBuildingCreated += ClientOnCentralBuildingCreated; mClient.MiningCampCreated += ClientOnMiningCampCreated; mClient.BarrakCreated += ClientOnBarrakCreated; mClient.ObjectDestroyed += ClientOnObjectDestroyed; mClient.ChatMessageRecived += OnChatMessageRecived; mClient.Listen(); } }