public static Task RpcPlayerAsync(this TMGame @this, TMPlayer player, string methodName, params object[] args) { var room = @this.Room; var rpcMethodName = $"TMGame_{@this.Id}_{methodName}"; return(player.Client.RpcAsync(rpcMethodName, args)); }
public async Task NavigateToPlayerPage(TMPlayer player) { TaskCompletionSource <bool> isPlayerPageCompleted = null; const int timeout = 10000; _playerWb.DocumentCompleted += (s, e) => { if (_playerWb.ReadyState != WebBrowserReadyState.Complete) { return; } if (isPlayerPageCompleted.Task.IsCompleted) { return; } AppendLog(string.Format("Player Page is loaded")); isPlayerPageCompleted.SetResult(true); }; while (true) { isPlayerPageCompleted = new TaskCompletionSource <bool>(); //navgiate to player url and wait for notification to parsePlayer var playerUrl = DomainUrl + player.Url; _playerWb.Navigate(playerUrl); var completionTask = isPlayerPageCompleted.Task; if (await Task.WhenAny(completionTask, Task.Delay(timeout)) == completionTask) { var isPlayerOk = ParsePlayer(); if (isPlayerOk) { AppendLog(string.Format("Player is parsed, ID: {0} URL: {1}", _rumorList[GetRumorIndex()].Player.Id, _playerWb.Url.AbsolutePath)); } break; } //Navigate again to the page AppendLog(string.Format("Player Page had a timeout, URL: {0}", _playerWb.Url.AbsolutePath)); } }
public static Task <T> RpcWithChoiceAsync <T>(this TMPlayer @this, string methodName, IEnumerable <T> choices, bool canBeSkip = false, int timeLimitForDefaultResult = 15000) { var rpcMethodName = $"TMPlayer_{@this.Id}_{methodName}"; return(@this.Client.RpcWithChoiceAsync <T>(rpcMethodName, choices, canBeSkip, timeLimitForDefaultResult)); }
public static Task RpcAsync(this TMPlayer @this, string methodName, params object[] args) { var rpcMethodName = $"TMPlayer_{@this.Id}_{methodName}"; return(@this.Client.RpcAsync(rpcMethodName, args)); }
public static Task AlloctAsync(this TMPlayer player, IEnumerable <TMCharacter> characters) { var text = SlarkCorePlugins.Singleton.Encoder.Encode(characters); return(player.Client.SendAsync(text)); }
public bool IfWon(TMIntelligence receiving, IEnumerable <TMIntelligence> received, TMPlayer dying, TMPlayer winning) { var redAlreadyHad = received.CountInColor(TMIntelligence.TMColor.Red); if (receiving.IsRed) { if (redAlreadyHad == 2) { return(true); } } return(false); }