/// <summary> /// Initialized a new World. /// </summary> public void initialize(string saveName, NewWorldSettings settings) { this.saveName = saveName; this.seed = settings.getSeed(); this.preInitialization(); // Create land plots this.plotManager.initializeFirstTime(this.seed); // Generate the map. for (int depth = 0; depth < this.storage.layerCount; depth++) { this.mapGenerator.generateLayer(this, depth); } // Unlock the plot that contains the Dumptruck and set the // Worker spawn point. List <CellBehaviorMasterDepositPoint> masters = this.getAllBehaviors <CellBehaviorMasterDepositPoint>(); if (masters.Count > 0) { CellBehaviorMasterDepositPoint m = masters[0]; this.plotManager.getPlot(m.pos.x, m.pos.y).isOwned = true; this.storage.workerSpawnPoint = m.pos.add(-1, -1); } else { Debug.LogWarning("No MasterDepositPoint could be found when generating a new map, there must always be at least one!"); } // Set starting money. this.money.value = this.mapGenerator.startingMoney; // Setup the new Player. CameraController.instance.initNewPlayer(settings); // Spawn the starting Workers. WorkerFactory factory = Main.instance.workerFactory; foreach (WorkerType workerType in this.mapGenerator.startingWorkers) { if (workerType != null) { int xShift = UnityEngine.Random.Range(-1, 2); int yShift = UnityEngine.Random.Range(0, 2); EntityWorker worker = factory.spawnWorker( this, this.storage.workerSpawnPoint.add(xShift, -yShift), factory.generateWorkerInfo(workerType, Main.instance.personalityRegistry.getDefaultPersonality()), workerType); } } this.postInitialization(); CameraController.instance.changeLayer(this.mapGenerator.playerStartLayer); }