public void Reconnect(MatchEngineCliEvent <bool> callback) { if (!m_isInitialized) { throw new InvalidOperationException("Unable to reconnect because wasn't initialized"); } if (!m_matchServer.IsConnectionStateChanging && !m_matchServer.IsConnected) { m_matchServer.Connect(); callback(new Error(StatusCode.OK), true); } else { callback(new Error(StatusCode.NotAllowed), false); } }
public IEnumerator FindPathClientSidePreprocessingTest() { BeginTest(TestEnv0, 4, 0, () => { MapRoot map = Dependencies.Map.Map; IMatchEngineCli matchEngineCli = Dependencies.MatchEngine; const int playerId = 3; Coordinate[] coords = map.FindDataOfType((int)KnownVoxelTypes.Eater, playerId); VoxelData data = map.Get(coords[0]); Coordinate targetCoordinate = coords[0].Add(-1, -1); MovementCmd moveCmd = new MovementCmd(CmdCode.Move, data.UnitOrAssetIndex, 0); moveCmd.Coordinates = new[] { coords[0], targetCoordinate }; MatchEngineCliEvent <long, CommandsBundle> eventHandler = null; eventHandler = (e, tick, commandsBundle) => { if (commandsBundle.TasksStateInfo != null) { TaskStateInfo taskStateInfo = commandsBundle.TasksStateInfo[0]; Assert.AreEqual(taskStateInfo.PlayerId, playerId); if (taskStateInfo.State == TaskState.Completed) { matchEngineCli.ExecuteCommands -= eventHandler; Coordinate[] newCoords = map.FindDataOfType((int)KnownVoxelTypes.Eater, playerId); Assert.AreEqual(targetCoordinate, newCoords[0]); EndTest(); } else { Assert.AreEqual(TaskState.Active, taskStateInfo.State); } } }; matchEngineCli.ExecuteCommands += eventHandler; TaskInfo taskInfo = new TaskInfo(moveCmd); taskInfo.RequiresClientSidePreprocessing = true; matchEngineCli.GetClientTaskEngine(playerId).GenerateIdentitifers(taskInfo); matchEngineCli.Submit(playerId, new TaskCmd(SerializedTask.FromTaskInfo(taskInfo))); }); yield return(Run()); }
public void Pause(bool pause, MatchEngineCliEvent callback) { if (!m_isInitialized) { throw new InvalidOperationException("Wait for ReadyToPlayAll event"); } enabled = !pause; if (enabled) { m_nextTickTime += (Time.realtimeSinceStartup - m_pauseTime); } else { m_pauseTime = Time.realtimeSinceStartup; } m_matchServer.Pause(m_gSettings.ClientId, pause, error => callback(error)); }
public void ReadyToPlay(MatchEngineCliEvent callback) { m_matchServer.ReadyToPlay(m_gSettings.ClientId, error => callback(error)); }
public void DownloadMapData(MatchEngineCliEvent <MapData> callback) { m_matchServer.DownloadMapData(m_gSettings.ClientId, (error, data) => callback(error, data)); }