示例#1
0
文件: Client.cs 项目: webconfig/Ballz
        private void HandleMatchStart(GameStartInfo startInfo)
        {
            var settings = MatchSettings.Deserialize(startInfo.Settings);

            Ballz.The().Network.StartNetworkGame(settings, startInfo.YourPlayerId);
            Ballz.The().Match.IsRemoteControlled = true;
        }
示例#2
0
        public Session(Ballz _game, World.World world, MatchSettings settings)
        {
            World        = world;
            Terrain      = World.StaticGeometry;
            GameSettings = settings;

            Physics         = new Physics.PhysicsControl(_game);
            Physics.Enabled = false;
            _game.Components.Add(Physics);

            GameRenderer         = new Renderer.GameRenderer(_game);
            GameRenderer.Enabled = false;
            GameRenderer.Visible = false;
            _game.Components.Add(GameRenderer);

            DebugRenderer         = new Renderer.DebugRenderer(_game);
            DebugRenderer.Enabled = false;
            DebugRenderer.Visible = false;
            _game.Components.Add(DebugRenderer);

            SessionLogic         = new Logic.GameLogic(_game, this);
            SessionLogic.Enabled = false;
            _game.Components.Add(SessionLogic);

            Logic          = _game.Services.GetService <LogicControl>();
            Logic.Message += Physics.HandleMessage;
            Logic.Message += GameRenderer.HandleMessage;
            Logic.Message += SessionLogic.HandleMessage;
            Logic.Message += DebugRenderer.HandleMessage;

            Input = _game.Services.GetService <Input.InputTranslator>();

            Game = _game;
        }
示例#3
0
 public static void LoadMatchSettings()
 {
     if (!string.IsNullOrEmpty(Properties.Settings.Default.MatchSettings))
     {
         MatchFilter = JsonConvert.DeserializeObject <MatchSettings>(Properties.Settings.Default.MatchSettings);
     }
 }
 private void OnDestroy()
 {
     if (_instance == this)
     {
         _instance = null;
     }
 }
    void StartMatch()
    {
        int numReadyPlayers = 0;

        foreach (PlayerStats stats in players)
        {
            if (stats.playerConfirmed)
            {
                numReadyPlayers++;
            }
        }

        if (numReadyPlayers > 1)                // To be changed [Graham]
        {
            MatchSettings.Reset();

            //MatchSettings.numPlayers = 4;	// TO BE CHANGED
            MatchSettings.numPlayers  = numReadyPlayers;
            MatchSettings.pointsToWin = 3;

            for (int i = 0; i < MatchSettings.numPlayers; i++)
            {
                MatchSettings.playerColors.Add(players[i].colour);
                MatchSettings.playerScores.Add(0);
            }

            // To be changed [Graham]
            //GetComponent<LoadSceneOnClick>().LoadRandom();
            //GetComponent<LoadSceneOnClick>().LoadByName("_Scenes/Debug/Graham_Debug");

            SwitchLobbies();
            FindObjectOfType <LobbyManager>().ShowLevelSelect();
        }
    }
示例#6
0
            public IEnumerator GameControllerKillerTest()
            {
                yield return(TestUtils.WaitUntilSceneIsLoaded("MatchTestScene"));

                var gameController = MonoBehaviour.FindObjectOfType <GameController>();
                var matchManager   = MonoBehaviour.FindObjectOfType <MatchManager>();

                Time.timeScale = 100.0f;
                int iterations = 5;

                while (--iterations > 0)
                {
                    var settings = MatchSettings.CreateRandomMatchConfig(10, 10, 3, new AIType[] { AIType.Aggressive, AIType.RandomWalker, AIType.RandomWalker });
                    settings.PlayerConfigs[0].PlayerType = PlayerType.Bot;
                    foreach (var unit in settings.PlayerConfigs[0].Units)
                    {
                        unit.UnitType = 1;
                    }
                    gameController.InitMatch(settings);
                    while (!gameController.GameFinished())
                    {
                        yield return(gameController.MatchStep());
                    }

                    foreach (var unit in matchManager.Factions[0].Units)
                    {
                        Assert.IsTrue(unit.IsFullHP);
                    }
                    Assert.IsTrue(matchManager.Factions[1].IsDead);
                    Assert.IsTrue(matchManager.Factions[2].IsDead);
                }
            }
示例#7
0
            public IEnumerator GameControllerRandomWalkerTest()
            {
                yield return(TestUtils.WaitUntilSceneIsLoaded("MatchTestScene"));

                var gameController = MonoBehaviour.FindObjectOfType <GameController>();
                var matchManager   = MonoBehaviour.FindObjectOfType <MatchManager>();

                int iterations = 10;

                Time.timeScale = 100.0f;
                while (--iterations > 0)
                {
                    var settings = MatchSettings.CreateTestMatchConfig(AIType.RandomWalker);
                    settings.PlayerConfigs[0].PlayerType = PlayerType.Bot;
                    gameController.InitMatch(settings);
                    while (!gameController.GameFinished() && gameController.CurrentTurnNumber < 20)
                    {
                        yield return(gameController.MatchStep());
                    }

                    // All units should be alive and with full HP
                    for (int i = 0; i < matchManager.Factions.Count; i++)
                    {
                        Assert.IsTrue(matchManager.Factions[i].Units.Count == settings.PlayerConfigs[i].Units.Count);
                        foreach (var unit in matchManager.AllUnits())
                        {
                            Assert.IsTrue(unit.IsFullHP);
                        }
                    }
                }
            }
示例#8
0
    void Start()
    {
        GameObject matchSettingsHolder;

        matchSettingsHolder = GameObject.FindGameObjectWithTag("GameController");
        if (matchSettingsHolder != null)
        {
            MatchSettings matchSettings = matchSettingsHolder.GetComponent <MatchSettings> ();
            defaultType = matchSettings.matchType;
            SetMatch(matchSettings.matchType, matchSettings.duration);
            LoadNamedMap(matchSettings.levelName);
            SetPlayers(matchSettings.playersColors);
        }
        else
        {
            SetMatch(defaultType, defaultDuration);
            LoadNamedMap("classic1.xml");
            SetPlayers(new Color[] {
                new Color(1, 1, 0, 1),
                new Color(0, 1, 1, 1),
                new Color(1, 0, 1, 1),
                new Color(0.5f, 0.5f, 0.5f, 1f)
            });
        }
        timer = timeBeforeStarting;
        Destroy(matchSettingsHolder);
    }
示例#9
0
    void Start()
    {
        MatchSettings settings = new MatchSettings(1); // defaults

        networkManager = NetworkManager.singleton;
        networkManager.playerPrefab = playerPrefabs[0];
        RegisterSettings(settings);
        RegisterStartPosition(defaultRespawnPosition, Quaternion.identity);

        if (Application.platform == RuntimePlatform.WebGLPlayer)
        {
            Debug.Log("Web Platform detected!");
            platform = "WEB";
        }

        if (platform == "WEB")
        {
            NetworkManager.singleton.useWebSockets = true;
        }
        else
        {
            NetworkManager.singleton.useWebSockets = false;
        }

        if (runAsServer || IsHeadlessMode())
        {
            StartLocalServer();
        }
        else
        {
            SceneManager.LoadScene(loginScene);
        }
    }
示例#10
0
    void MatchList_OnTopicMessage(object sender, NTopicMessageEventArgs e)
    {
        ManualResetEvent updateEvent = new ManualResetEvent(false);

        var  bytesAsString = Encoding.ASCII.GetString(e.Message.Data);
        var  chatJson      = JsonUtility.FromJson <MatchRoomClass>(bytesAsString);
        Guid tempMatchID   = new Guid(chatJson.matchIDGUID);

        MatchSettings newSettings = new MatchSettings();

        newSettings.matchCreator = chatJson.userName;
        newSettings.maxHealth    = chatJson.matchMaxHealth;
        //newSettings.matchGuid = new Guid(chatJson.matchIDGUID);


        if (chatJson.addRemove == "add")
        {
            Debug.Log("Adding match");
            newSettings.matchStatus = "open";
            //matchNameMatchGuid.Add(chatJson.matchName, tempMatchID.ToByteArray());
            matchGuidMatchSettings.Add(tempMatchID, newSettings);
            Debug.Log("Added matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
            updateEvent.Set();
        }
        else
        {
            Debug.Log("Removing matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
            //matchNameMatchGuid.Remove(chatJson.matchName);
            matchGuidMatchSettings[tempMatchID].matchStatus = "closed";
            //matchGuidMatchSettings.Remove(chatJson.matchName);
            Debug.Log("Removed matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
            updateEvent.Set();
        }
        updateEvent.WaitOne(1000, false);
    }
 protected override OnlinePlayComposite CreateSettings()
 => settings = new MatchSettings
 {
     RelativeSizeAxes     = Axes.Both,
     RelativePositionAxes = Axes.Y,
     SettingsApplied      = Hide
 };
        public void UpdateSettings(MatchSettings matchSettings, SampleSettings sampleSettings)
        {
            // get settings from server to compare with new ones - avoid loss
            var oldsettings = GetSettings();
            var oldSamples  = GetSampleSettings();

            if (matchSettings != null)
            {
                oldsettings.TargetLanguage = matchSettings.TargetLanguage;

                oldsettings.Speaker            = matchSettings.Speaker;
                oldsettings.Characters         = matchSettings.Characters;
                oldsettings.Formal             = matchSettings.Formal;
                oldsettings.Polite             = matchSettings.Polite;
                oldsettings.IllocutionaryForce = matchSettings.IllocutionaryForce;
                oldsettings.PersonChange       = matchSettings.PersonChange;

                oldsettings.ShowSentences = matchSettings.ShowSentences;
                oldsettings.SimpleView    = matchSettings.SimpleView;
            }

            if (sampleSettings != null)
            {
                oldSamples.SampleFiles = sampleSettings.SampleFiles;
            }

            SetSettings(oldsettings);
            SetSampleFile(oldSamples.SampleFiles);
        }
        public void UpdateSettings(MatchSettings matchSettings, SampleSettings sampleSettings)
        {
            // get settings from server to compare with new ones - avoid loss
            var oldsettings = GetSettings();
            var oldSamples = GetSampleSettings();

            if (matchSettings != null)
            {
                oldsettings.TargetLanguage = matchSettings.TargetLanguage;

                oldsettings.Speaker = matchSettings.Speaker;
                oldsettings.Characters = matchSettings.Characters;
                oldsettings.Formal = matchSettings.Formal;
                oldsettings.Polite = matchSettings.Polite;
                oldsettings.IllocutionaryForce = matchSettings.IllocutionaryForce;

                oldsettings.ShowSentences = matchSettings.ShowSentences;
                oldsettings.SimpleView = matchSettings.SimpleView;
            }

            if (sampleSettings != null)
            {
                oldSamples.SampleFiles = sampleSettings.SampleFiles;
            }

            SetSettings(oldsettings);
            SetSampleFile(oldSamples.SampleFiles);
        }
示例#14
0
 // Use this for initialization
 void Start()
 {
     matchInfo = GetComponent <MatchInfo>();
     timer     = GetComponent <MatchTimer>();
     settings  = GetComponent <MatchSettings>();
     GUIUtils.ScaleFonts(skin, GUIUtils.conversionRatio.y);
 }
示例#15
0
        protected override void ImplInitializeSession(Ballz game, MatchSettings settings)
        {
            var mapTexture = MapName == "Generated" ? TerrainGenerator.GenerateTerrain(width, height): game.Content.Load <Texture2D>("Worlds/" + MapName);

            settings.MapName    = MapName;
            settings.MapTexture = mapTexture;
        }
示例#16
0
        /// <summary>
        /// Handles a click on the "Start" button.
        /// </summary>
        private void HandleStart()
        {
            if (_needsExtraInfo && !TryGetExtraInfo())
            {
                _popup.Message = $"PROVIDE THE MODE {_matchMode.InfoName().ToUpper()} BEFORE STARTING A MATCH";
                _popup.Show();
                return;
            }

            MatchSettings settings;

            if (_needsExtraInfo)
            {
                settings = new MatchSettings(_matchMode, _extraInfo);
            }
            else
            {
                settings = new MatchSettings(_matchMode);
            }
            OnStartMatch?.Invoke(settings);

            bool TryGetExtraInfo()
            {
                var culture = CultureInfo.InvariantCulture;

                if (int.TryParse(_extraInfoInput.text, NumberStyles.Integer, culture, out var value) && value > 0)
                {
                    _extraInfo = (uint)value;
                    return(true);
                }
                return(false);
            }
        }
 protected override OnlinePlayComposite CreateSettings()
 => settings = new MatchSettings
 {
     RelativeSizeAxes     = Axes.Both,
     RelativePositionAxes = Axes.Y,
     EditPlaylist         = () => EditPlaylist?.Invoke()
 };
示例#18
0
 public void InitMatch()
 {
     currentMatch            = new MatchSettings();
     currentMatch.matchName  = "Game";
     currentMatch.map        = 0;
     currentMatch.maxPlayers = 2;
     currentMatch.status     = 4;
 }
示例#19
0
 // StartSession must _not_ modify GameSettings
 public Session StartSession(Ballz game, MatchSettings settings, bool isMultiplayer, int localPlayerId)
 {
     if (!IsInitialized)
     {
         InitializeSession(game, settings);
     }
     return(ImplStartSession(game, settings, isMultiplayer, localPlayerId));
 }
示例#20
0
 private void SettingsChangedCallback(SettingsChangedMessage msg, float travelTime)
 {
     currentSettings = msg.NewMatchSettings;
     if (MatchSettingsChanged != null)
     {
         MatchSettingsChanged(this, EventArgs.Empty);
     }
 }
示例#21
0
        public LobbyMenu(bool isHost, MatchSettings settings = null) : base("Lobby")
        {
            if (isHost && settings == null)
            {
                throw new ArgumentNullException("settings must not be null when isHost is true");
            }

            IsHost        = isHost;
            MatchSettings = settings;

            Close += (s, e) =>
            {
                if (isHost)
                {
                    Lobby?.CloseHostedGameAsync();
                    Lobby?.Dispose();
                    Lobby = null;
                }

                Ballz.The().Network.PlayerListChanged -= UpdatePlayerList;
            };

            Open += (s, e) =>
            {
                Ballz.The().Network.PlayerListChanged += UpdatePlayerList;

                UpdatePlayerList(this, Ballz.The().Network.PlayerList);

                if (isHost)
                {
                    Lobby = new LobbyClient();
                    var gameInfo = Lobby.MakeGameInfo(MatchSettings.GameName, MatchSettings.IsPrivate);
                    Ballz.The().Network.StartServer(gameInfo);
                    Lobby.OpenGame(gameInfo, Ballz.The().Network.NetworkPeer);
                }
            };

            AddItem(new Label("Players in Lobby:"));
            PlayerList = new SelectList();
            PlayerList.LockSelection = true;
            AddItem(PlayerList);

            if (isHost)
            {
                var startGameBtn = new Button("Start Game");
                startGameBtn.OnClick += (e) =>
                {
                    Ballz.The().Network.StartNetworkGame(MatchSettings, 0);
                };
                AddItem(startGameBtn);
            }
            else
            {
                AddItem(new Label("Waiting for Host to start the Game"));
            }

            AddItem(new BackButton(text: "Leave Game"));
        }
        protected override void SetSettings(MatchSettings settings)
        {
            var settingsReturned = new SettingsPresentation();

            var request = new ChangeSettingsRequest { UserKey = WindowsContext.UserKey, Settings = settings };
            var response = _settingsClientProxy.SetSettings(request);
            settingsReturned.Settings = response.Settings;
            settingsReturned.SettingsChanged = response.Success;
        }
 private void load()
 {
     Child = Settings = new MatchSettings
     {
         RelativeSizeAxes     = Axes.Both,
         RelativePositionAxes = Axes.Y,
         SettingsApplied      = Hide
     };
 }
示例#24
0
        public void InitLocalMatch()
        {
            currentSettings = ActiveData.MatchSettings;

            messenger = new LocalMatchMessenger();

            showSettingsOnLobbyLoad = true;
            GoToLobby();
        }
示例#25
0
        public void StringComparison_Set_IsSet(StringComparison setting)
        {
            var matchSettings = new MatchSettings
            {
                StringComparison = setting
            };

            matchSettings.StringComparison.Should().Be(setting);
        }
示例#26
0
 private void load()
 {
     Child = Settings = new MatchSettings
     {
         RelativeSizeAxes     = Axes.Both,
         RelativePositionAxes = Axes.Y,
         EditPlaylist         = () => EditPlaylist?.Invoke()
     };
 }
        public void RevertSettings()
        {
            var manager = FindObjectOfType <MatchManager>();

            if (manager)
            {
                tempSettings = manager.CurrentSettings;
            }
            UpdateUiFields();
        }
示例#28
0
        private void load()
        {
            Masking = true;

            Child = Settings = new MatchSettings
            {
                RelativeSizeAxes     = Axes.Both,
                RelativePositionAxes = Axes.Y
            };
        }
示例#29
0
        public void IsMatch_Ordinal_MatchesOrdinal(string str, string pattern)
        {
            var matchSettings = new MatchSettings {
                StringComparison = StringComparison.Ordinal
            };

            var result = FastWildcard.IsMatch(str, pattern, matchSettings);

            result.Should().BeTrue();
        }
示例#30
0
        public void IsMatch_OrdinalIgnoreCase_MatchesOrdinalAndDifferentCase(string str, string pattern)
        {
            var matchSettings = new MatchSettings {
                StringComparison = StringComparison.OrdinalIgnoreCase
            };

            var result = FastWildcard.IsMatch(str, pattern, matchSettings);

            result.Should().BeTrue();
        }
示例#31
0
        public void IsMatch_Ordinal_DoesNotMatchDifferentCase(string str, string pattern)
        {
            var matchSettings = new MatchSettings {
                StringComparison = StringComparison.Ordinal
            };

            var result = FastWildcard.IsMatch(str, pattern, matchSettings);

            result.Should().BeFalse();
        }
示例#32
0
        public void InitOnlineMatch(Lidgren.Network.NetClient client, MatchState matchState)
        {
            //Create existing clients
            foreach (var clientInfo in matchState.Clients)
            {
                clients.Add(new MatchClient(clientInfo.Guid, clientInfo.Name));
            }

            //Create existing players
            foreach (var playerInfo in matchState.Players)
            {
                MatchPlayer p = new MatchPlayer(playerInfo.ClientGuid, playerInfo.CtrlType, playerInfo.CharacterId);
                p.ReadyToRace = playerInfo.ReadyToRace;
                players.Add(p);

                if (inLobby)
                {
                    SpawnLobbyBall(p);
                }
            }

            //Set settings
            currentSettings = matchState.Settings;

            //Set auto start timer
            //TODO Get and apply travel time
            autoStartTimerOn = matchState.CurAutoStartTime != 0;
            autoStartTimer   = matchState.CurAutoStartTime;

            //Create messenger
            OnlineMatchMessenger messenger = new OnlineMatchMessenger(client);

            this.messenger          = messenger;
            messenger.Disconnected += (sender, e) =>
            {
                QuitMatch(e.Reason);
            };
            messenger.OnPlayerMovement += OnlinePlayerMovement;

            //Create chat
            activeChat              = Instantiate(chatPrefab);
            activeChat.MessageSent += LocalChatMessageSent;

            //Enter the lobby or stage
            if (matchState.InRace)
            {
                joiningRaceInProgress = true;
                GoToStage();
            }
            else
            {
                //showSettingsOnLobbyLoad = true;
                GoToLobby();
            }
        }
        private void SetFormality(MatchSettings settings, string target, string formality)
        {
            settings.Characters = true;

            if (target == "Korean")
            {
                if (formality == "Informal-Polite")
                {
                    settings.Polite = Politenesses.Polite;
                    settings.Formal = Formalities.Informal;
                }
                if (formality == "Informal-Intimate")
                {
                    settings.Polite = Politenesses.Familiar;
                    settings.Formal = Formalities.Informal;
                }
                if (formality == "Formal")
                {
                    settings.Polite = Politenesses.Polite;
                    settings.Formal = Formalities.Formal;
                }
            }

            if (target == "Japanese")
            {
                settings.Characters = true;

                if (formality == "Polite")
                {
                    settings.Polite = Politenesses.Polite;
                    settings.Formal = Formalities.Informal;
                }
                if (formality == "Formal")
                {
                    settings.Polite = Politenesses.Polite;
                    settings.Formal = Formalities.Formal;
                }
            }
        }
示例#34
0
 public MyMatchSettings(LevelSystem levelSystem, Modes mode, MatchSettings.MatchLengths matchLength)
     : base(levelSystem, mode, matchLength)
 {
 }
 protected abstract void SetSettings(MatchSettings settings);