Exemplo n.º 1
0
        private void onZoneCompleted(ZoneController zoneController)
        {
            if (zoneController.ZoneModel.IsFinalZone)
            {
                Log.Info("World completed!");
                handleGameCompleted();
                return;
            }

            addPlayersToNextZone(zoneController.AllPlayersinZone);
            zoneController.Destroy();
        }
Exemplo n.º 2
0
        private void addPlayersToNextZone(List <ServerPlayerModel> serverPlayerModels)
        {
            // TODO: determine zone. For now, first incomplete
            ZoneController zoneController = null;

            for (int z = 0; z < zoneControllers.Length; z++)
            {
                if (!worldModel.ZoneModels[z].IsCompleted)
                {
                    zoneController = zoneControllers[z];
                    break;
                }
            }

            if (zoneController == null)
            {
                throw new Exception("Couldn't determine a starting zone.");
            }

            zoneController.AddPlayers(serverPlayerModels);
        }
Exemplo n.º 3
0
        public void StartGame(List <ServerPlayerModel> initialServerPlayerModels)
        {
            Log.InfoHeader("Starting Game");

            // Build world and send load events.
            worldModel      = worldBuilder.Build(initialServerPlayerModels, gameDifficultyType, NPC_TEAM_ID);
            zoneControllers = new ZoneController[worldModel.ZoneModels.Length];
            for (int i = 0; i < zoneControllers.Length; i++)
            {
                zoneControllers[i]            = new ZoneController(worldModel.ZoneModels[i]);
                zoneControllers[i].Completed += onZoneCompleted;
            }

            Log.Info("Built World: " + worldModel.ToString());

            new SendLoadWorldEventsCMD(worldModel, initialServerPlayerModels, completedPlayers => {
                // Players who are able to finish loading the world are considered original players and can re-join
                for (int i = 0; i < initialServerPlayerModels.Count; i++)
                {
                    originalPlayerIDToModel.Add(initialServerPlayerModels[i].PlayerID, initialServerPlayerModels[i]);
                }
                onPlayersLoadedWorld(completedPlayers);
            }).Execute();
        }