public void QueryClientsAsync( int pageIndex, int pageSize, Guid?groupId, Guid?workId, string minerIp, string minerName, MineStatus mineState, string coin, string pool, string wallet, string version, string kernel, Action <QueryClientsResponse, Exception> callback) { var request = new QueryClientsRequest { LoginName = SingleUser.LoginName, PageIndex = pageIndex, PageSize = pageSize, GroupId = groupId, WorkId = workId, MinerIp = minerIp, MinerName = minerName, MineState = mineState, Coin = coin, Pool = pool, Wallet = wallet, Version = version, Kernel = kernel }; request.SignIt(SingleUser.PasswordSha1); PostAsync(SControllerName, nameof(IControlCenterController.QueryClients), null, request, callback); }
public void QueryClientsAsync( int pageIndex, int pageSize, Guid?groupId, Guid?workId, string minerIp, string minerName, MineStatus mineState, string coin, string pool, string wallet, string version, string kernel, Action <QueryClientsResponse, Exception> callback) { var request = new QueryClientsRequest { PageIndex = pageIndex, PageSize = pageSize, GroupId = groupId, WorkId = workId, MinerIp = minerIp, MinerName = minerName, MineState = mineState, Coin = coin, Pool = pool, Wallet = wallet, Version = version, Kernel = kernel }; RpcRoot.PostAsync(NTMinerRegistry.GetControlCenterHost(), NTKeyword.ControlCenterPort, _controllerName, nameof(IClientController.QueryClients), request, request, callback); }
void Awake() { firstClick = true; renderer.material.color = Color.green; mineText.text = ""; mineCollider = GetComponent <BoxCollider>(); CurrentMineStatus = MineStatus.Normal; }
/* Search current spot for a mine */ public void searchMine(int x, int y) { MineStatus s = data.status[x, y]; /* Start timer on first click */ if (data.clickedCount == 0) { data.startTime = DateTime.Now; timerRunning(true); data.currTime = 0; } /* Update given location status */ if (s == MineStatus.UNCLICKED || s == MineStatus.QUESTION) { data.status[x, y] = MineStatus.CLICKED; if (data.mines[x, y] == 0) { data.clickedCount++; for (int i = Math.Max(0, x - 1); i <= Math.Min(x + 1, data.width - 1); i++) { for (int j = Math.Max(0, y - 1); j <= Math.Min(y + 1, data.height - 1); j++) { searchMine(i, j); } } } else if (data.mines[x, y] == -1) { data.gameStatus = GameStatus.LOST; timerRunning(false); showMines(); } else { data.clickedCount++; } /* Determine if game was won */ if (data.clickedCount + data.mineCount == data.width * data.height) { data.gameStatus = GameStatus.WON; showFlags(); data.flagCount = data.mineCount; data.gameTime = (DateTime.Now - data.startTime).TotalSeconds; timerRunning(false); if (isHighscore(data.gameTime, data.level)) { string name = "Anonymous"; /* prompt user for name */ //name = getPlayerName(); updateHighscore(name, data.gameTime, data.level); } } updateSpot(x, y); } }
public IActionResult MineStatus(Guid mineId) { var mineStatus = new MineStatus() { State = MineStatusCompleted, MessageCount = 100 }; return(Ok(mineStatus)); }
/* Create new game */ public void newGame(int width_, int height_, int mines_) { width = width_; height = height_; mineCount = mines_; flagCount = 0; clickedCount = 0; currTime = 0; gameStatus = GameStatus.PLAY; status = new MineStatus[width, height]; genMines(); }
public void QueryClients( int pageIndex, int pageSize, Guid?mineWorkId, string minerIp, string minerName, MineStatus mineState, string mainCoin, string mainCoinPool, string mainCoinWallet, string dualCoin, string dualCoinPool, string dualCoinWallet, Action <QueryClientsResponse> callback) { Task.Factory.StartNew(() => { Guid messageId = Guid.NewGuid(); try { using (var service = CreateService()) { var request = new QueryClientsRequest { LoginName = LoginName, PageIndex = pageIndex, PageSize = pageSize, MineWorkId = mineWorkId, MinerIp = minerIp, MinerName = minerName, MineState = mineState, MainCoin = mainCoin, MainCoinPool = mainCoinPool, MainCoinWallet = mainCoinWallet, DualCoin = dualCoin, DualCoinPool = dualCoinPool, DualCoinWallet = dualCoinWallet, Timestamp = DateTime.Now }; request.SignIt(Password); QueryClientsResponse response = service.QueryClients(request); callback?.Invoke(response); } } catch (CommunicationException e) { Global.DebugLine(e.Message, ConsoleColor.Red); callback?.Invoke(QueryClientsResponse.ClientError(messageId, e.Message)); } catch (Exception e) { Global.Logger.Error(e.Message, e); callback?.Invoke(QueryClientsResponse.ClientError(messageId, e.Message)); } }); }
void OnMouseOver() { if (CurrentMineStatus != MineStatus.Clear) { if (Input.GetMouseButtonDown(0)) { if (firstClick) { AssignMine(); firstClick = false; } if (IsMine) { Instantiate(gameOverMessageBox); renderer.material.color = Color.red; CurrentMineStatus = MineStatus.Mine; DisableAllMine(); } else { CurrentMineStatus = MineStatus.Clear; renderer.material.color = Color.blue; mineText.text = GetNeighborMineNum().ToString(); if (GetNeighborMineNum() == 0) { CheckNeighborMine(); } } } if (Input.GetMouseButtonDown(1)) { renderer.material.color = Color.yellow; CurrentMineStatus = MineStatus.Flag; mineCount--; if (mineCount == 0) { Instantiate(gameWinMessageBox); } } } }
public void setFlag(int x, int y) { MineStatus s = data.status[x, y]; if (s != MineStatus.CLICKED) { if (s == MineStatus.QUESTION) { data.status[x, y] = MineStatus.UNCLICKED; } else if (s == MineStatus.UNCLICKED) { data.status[x, y] = MineStatus.FLAGGED; data.flagCount++; } else if (s == MineStatus.FLAGGED) { data.status[x, y] = MineStatus.QUESTION; data.flagCount--; } } updateSpot(x, y); }
public List <ClientData> QueryClients( int pageIndex, int pageSize, Guid?groupId, Guid?workId, string minerIp, string minerName, MineStatus mineState, string coin, string pool, string wallet, string version, string kernel, out int total, out int miningCount) { InitOnece(); IQueryable <ClientData> query = _dicByObjectId.Values.AsQueryable(); if (groupId != null && groupId.Value != Guid.Empty) { query = query.Where(a => a.GroupId == groupId.Value); } if (workId != null && workId.Value != Guid.Empty) { query = query.Where(a => a.WorkId == workId.Value); } else { if (workId != null) { query = query.Where(a => a.WorkId == workId.Value); } if (!string.IsNullOrEmpty(coin)) { query = query.Where(a => a.MainCoinCode == coin || a.DualCoinCode == coin); } if (!string.IsNullOrEmpty(pool)) { query = query.Where(a => a.MainCoinPool == pool || a.DualCoinPool == pool); } if (!string.IsNullOrEmpty(wallet)) { query = query.Where(a => a.MainCoinWallet == wallet || a.DualCoinWallet == wallet); } } if (!string.IsNullOrEmpty(minerIp)) { query = query.Where(a => a.MinerIp == minerIp); } if (!string.IsNullOrEmpty(minerName)) { query = query.Where(a => (!string.IsNullOrEmpty(a.MinerName) && a.MinerName.IndexOf(minerName, StringComparison.OrdinalIgnoreCase) != -1) || (!string.IsNullOrEmpty(a.ClientName) && a.ClientName.IndexOf(minerName, StringComparison.OrdinalIgnoreCase) != -1)); } if (mineState != MineStatus.All) { if (mineState == MineStatus.Mining) { query = query.Where(a => a.IsMining == true); } else { query = query.Where(a => a.IsMining == false); } } if (!string.IsNullOrEmpty(version)) { query = query.Where(a => a.Version != null && a.Version.StartsWith(version, StringComparison.OrdinalIgnoreCase)); } if (!string.IsNullOrEmpty(kernel)) { query = query.Where(a => a.Kernel != null && a.Kernel.StartsWith(kernel, StringComparison.OrdinalIgnoreCase)); } total = query.Count(); miningCount = query.Count(a => a.IsMining); var results = query.OrderBy(a => a.MinerName).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); DateTime time = DateTime.Now.AddMinutes(-3); // 3分钟未上报算力视为0算力 foreach (var clientData in results) { if (clientData.ModifiedOn < time) { clientData.DualCoinSpeed = 0; clientData.MainCoinSpeed = 0; } } return(results); }
//设置块状态 public void setMineStatus(MineStatus pMineStatus) { mineStatus = pMineStatus; }
public List <ClientData> QueryClients( int pageIndex, int pageSize, Guid?mineWorkId, string minerIp, string minerName, MineStatus mineState, string mainCoin, string mainCoinPool, string mainCoinWallet, string dualCoin, string dualCoinPool, string dualCoinWallet, out int total) { InitOnece(); lock (_locker) { IQueryable <ClientData> query = _dicById.Values.AsQueryable(); if (mineWorkId != null && mineWorkId.Value != Guid.Empty) { query = query.Where(a => a.WorkId == mineWorkId.Value); } else { if (mineWorkId != null) { query = query.Where(a => a.WorkId == mineWorkId.Value); } if (!string.IsNullOrEmpty(mainCoin)) { query = query.Where(a => a.MainCoinCode == mainCoin); } if (!string.IsNullOrEmpty(mainCoinPool)) { query = query.Where(a => a.MainCoinPool == mainCoinPool); } if (!string.IsNullOrEmpty(dualCoin)) { if (dualCoin == "*") { query = query.Where(a => a.IsDualCoinEnabled); } else { query = query.Where(a => a.DualCoinCode == dualCoin); } } if (!string.IsNullOrEmpty(dualCoinPool)) { query = query.Where(a => a.DualCoinPool == dualCoinPool); } if (!string.IsNullOrEmpty(mainCoinWallet)) { query = query.Where(a => a.MainCoinWallet == mainCoinWallet); } if (!string.IsNullOrEmpty(dualCoinWallet)) { query = query.Where(a => a.DualCoinWallet == dualCoinWallet); } } if (!string.IsNullOrEmpty(minerIp)) { query = query.Where(a => a.MinerIp == minerIp); } if (!string.IsNullOrEmpty(minerName)) { query = query.Where(a => a.MinerName.IndexOf(minerName, StringComparison.OrdinalIgnoreCase) >= 0); } if (mineState != MineStatus.All) { if (mineState == MineStatus.Mining) { query = query.Where(a => a.IsMining == true); } else { query = query.Where(a => a.IsMining == false); } } total = query.Count(); return(query.OrderBy(a => a.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList()); } }