public void ShowInformation() { if (isLocalPlayer) { GameObject canvas = GameObject.Find("Canvas"); if (MyLobbyManager.s_Singleton.isInGame) { Animator anim = canvas.GetComponent <Animator>(); anim.SetTrigger("LobbyToGame"); } ArenaInfo local = GameObject.Find("Main User").GetComponent <ArenaInfo>(); ArenaInfo opp = GameObject.Find("Enemy").GetComponent <ArenaInfo>(); for (int i = 0; i < MyLobbyManager.s_Singleton.lobbySlots.Length; ++i) { MyLobbyPlayer cur = MyLobbyManager.s_Singleton.lobbySlots[i] as MyLobbyPlayer; if (cur.isLocalPlayer) { local.rank.text = cur.rank; local.rating.text = cur.rating; local.nickname.text = MyLobbyManager.s_Singleton.localNick = cur.nickname; } else { FishVSContainer fishVSContainer = FindObjectOfType <FishVSContainer>(); fishVSContainer.instantiateFish(cur.fishName); opp.rank.text = cur.rank; opp.rating.text = cur.rating; opp.nickname.text = MyLobbyManager.s_Singleton.oppNick = cur.nickname; } } } }
public RankingSimulator( IRandom random, Player player, EnemyPlayerDigest enemyPlayerDigest, List <Guid> foods, RankingSimulatorSheets rankingSimulatorSheets, int stageId, ArenaInfo arenaInfo, ArenaInfo enemyInfo, CostumeStatSheet costumeStatSheet ) : base( random, player, foods, rankingSimulatorSheets ) { _enemyPlayer = new EnemyPlayer(enemyPlayerDigest, CharacterSheet, CharacterLevelSheet, EquipmentItemSetEffectSheet) { Simulator = this }; _enemyPlayer.Stats.EqualizeCurrentHPWithHP(); _stageId = stageId; _arenaInfo = arenaInfo; _enemyInfo = enemyInfo; WeeklyArenaRewardSheet = rankingSimulatorSheets.WeeklyArenaRewardSheet; if (!(costumeStatSheet is null)) { Player.SetCostumeStat(costumeStatSheet); _enemyPlayer.SetCostumeStat(costumeStatSheet); } }
public async Task Query(bool active) { const string query = @" { avatarAddress arenaRecord { win lose draw } active dailyChallengeCount score }"; var arenaInfo = new ArenaInfo(Fixtures.AvatarStateFX, Fixtures.TableSheetsFX.CharacterSheet, active); var queryResult = await ExecuteQueryAsync <ArenaInfoType>(query, source : arenaInfo); Assert.Equal( new Dictionary <string, object> { ["avatarAddress"] = "0x983c3Fbfe8243a0e36D55C6C1aE26A7c8Bb6CBd4", ["arenaRecord"] = new Dictionary <string, object> { ["win"] = 0, ["lose"] = 0, ["draw"] = 0, }, ["active"] = active, ["dailyChallengeCount"] = 5, ["score"] = 1000, }, queryResult.Data ); }
public void onGetArenaRankValue(List <object> list, object obj) { List <object> listObj = new List <object>(); RankMediator.ArenaRankList.Clear(); ArenaInfo arenaInfo; for (int i = 0; i < list.Count; ++i) { Dictionary <string, object> info = list[i] as Dictionary <string, object>; arenaInfo = new ArenaInfo(); arenaInfo.dbid = UtilTools.IntParse(info["dbid"].ToString()); arenaInfo.ranking = UtilTools.IntParse(info["rank"].ToString()); if (arenaInfo.ranking > 100) { break; } arenaInfo.fightValue = UtilTools.IntParse(info["fightValue"].ToString()); arenaInfo.formation = UtilTools.IntParse(info["formation"].ToString()); arenaInfo.camp = UtilTools.IntParse(info["camp"].ToString()); arenaInfo.playerName = info["name"].ToString(); arenaInfo.club = info["club"].ToString(); RankMediator.ArenaRankList.Add(arenaInfo.dbid, arenaInfo); listObj.Add(arenaInfo); } RankMediator.arenaPage = 17; if (RankMediator.rankMediator != null) { RankMediator.rankMediator.GetArenaRank(listObj); return; } Facade.SendNotification(NotificationID.Rank_Show, listObj); }
/// <summary> /// 释放 /// </summary> protected override void OnDestroy() { arenaInfo = null; rankMediator = null; firstOpenUI = false; base.OnDestroy(); }
public static bool AutoImportArena(ArenaImportingBehaviour behaviour, ArenaInfo info = null) { var deck = info ?? DeckImporter.FromArena(); if (deck?.Deck.Cards.Sum(x => x.Count) != 30) { return(false); } Log.Info($"Found new complete {deck.Deck.Hero} arena deck!"); var recentArenaDecks = DeckList.Instance.Decks.Where(d => d.IsArenaDeck && d.Cards.Sum(x => x.Count) == 30).OrderByDescending( d => d.LastPlayedNewFirst).Take(15); if (recentArenaDecks.Any(d => d.Cards.All(c => deck.Deck.Cards.Any(c2 => c.Id == c2.Id && c.Count == c2.Count)))) { Log.Info("...but we already have that one. Discarding."); } else if (Core.Game.IgnoredArenaDecks.Contains(deck.Deck.Id)) { Log.Info("...but it was already discarded by the user. No automatic action taken."); } else if (behaviour == ArenaImportingBehaviour.AutoAsk) { Core.MainWindow.ShowNewArenaDeckMessageAsync(deck.Deck); return(true); } else if (behaviour == ArenaImportingBehaviour.AutoImportSave) { Log.Info("...auto saving new arena deck."); Core.MainWindow.ImportArenaDeck(deck.Deck); return(true); } return(false); }
internal void OnRoundEnd(int round, ArenaInfo arena) { Debug.LogFormat("ArenaManager.OnRoundEnd :{0} round: {1}", arenaInfo.ArenaId, round); if (UIArenacs.Instance != null) { UIArenacs.Instance.ShowRoundResult(round, arena); } }
public void GetArenaRank(List <object> listObj) { arenaInfo = null; panel.arenaGrid.AddCustomDataList(listObj); string text = string.Format("[00FF00]{0}[-]", currentPage); panel.arenaPage.text = text + "/" + arenaPage.ToString(); }
public static bool TryGetThisWeekStateAndArenaInfo(long blockIndex, Address avatarAddress, out WeeklyArenaState weeklyArenaState, out ArenaInfo arenaInfo) { arenaInfo = null; return(TryGetThisWeekState(blockIndex, out weeklyArenaState) && weeklyArenaState.TryGetValue(avatarAddress, out arenaInfo)); }
public bool Update() { var arenaInfo = _arenaProvider.GetArenaInfo(); if (arenaInfo == null) { return(false); } var numCards = arenaInfo.Deck.Cards.Sum(x => x.Count); if (numCards == MaxDeckSize) { if (_prevSlot == MaxDeckSize) { CardPicked(arenaInfo); } OnCompleteDeck?.Invoke(this, new CompleteDeckEventArgs(arenaInfo)); if (arenaInfo.Rewards?.Any() ?? false) { OnRewards?.Invoke(this, new RewardsEventArgs(arenaInfo)); } _watch = false; return(true); } if (HasChanged(arenaInfo, arenaInfo.CurrentSlot)) { var choices = _arenaProvider.GetDraftChoices(); if (choices == null || choices.Length == 0) { return(false); } if (arenaInfo.CurrentSlot > _prevSlot) { if (ChoicesChanged(choices) || _sameChoices) { _sameChoices = false; OnChoicesChanged?.Invoke(this, new ChoicesChangedEventArgs(choices, arenaInfo.Deck)); } else { _sameChoices = true; return(false); } } if (_prevSlot == 0 && arenaInfo.CurrentSlot == 1) { HeroPicked(arenaInfo); } else if (_prevSlot > 0 && arenaInfo.CurrentSlot > _prevSlot) { CardPicked(arenaInfo); } _prevSlot = arenaInfo.CurrentSlot; _prevInfo = arenaInfo; _prevChoices = choices; } return(false); }
public override UpdateResult Update() { var arenaInfo = _gameDataProvider.GetArenaInfo(); if (arenaInfo == null) { return(UpdateResult.Continue); } var numCards = arenaInfo.Deck.Cards.Sum(x => x.Count); if (numCards == MaxDeckSize) { if (_prevSlot == MaxDeckSize) { OnCardPicked(arenaInfo); } DeckComplete?.Invoke(new ArenaDeckComlpeteEventArgs(arenaInfo)); if (arenaInfo.Rewards?.Any() ?? false) { RunComplete?.Invoke(new ArenaRunCompleteEventArgs(arenaInfo)); } return(UpdateResult.Break); } if (HasChanged(arenaInfo, arenaInfo.CurrentSlot)) { var choices = _gameDataProvider.GetDraftChoices(); if (choices == null || choices.Length == 0) { return(UpdateResult.Continue); } if (arenaInfo.CurrentSlot > _prevSlot) { if (ChoicesHaveChanged(choices) || _sameChoices) { _sameChoices = false; ChoicesChanged?.Invoke(new ArenaChoicesChangedEventArgs(choices, arenaInfo.Deck)); } else { _sameChoices = true; return(UpdateResult.Continue); } } if (_prevSlot == 0 && arenaInfo.CurrentSlot == 1) { OnHeroPicked(arenaInfo); } else if (_prevSlot > 0 && arenaInfo.CurrentSlot > _prevSlot) { OnCardPicked(arenaInfo); } _prevSlot = arenaInfo.CurrentSlot; _prevInfo = arenaInfo; _prevChoices = choices; } return(UpdateResult.Continue); }
internal void OnReady(int round, ArenaInfo arenaInfo) { Debug.LogFormat("ArenaManager.SendRea :{0}", arenaInfo.ArenaId); this.Round = round; if (UIArenacs.Instance != null) { UIArenacs.Instance.ShowCountDown(); } }
private void OnHeroPicked(ArenaInfo arenaInfo) { var hero = _prevChoices.FirstOrDefault(x => x.Id == arenaInfo.Deck.Hero); if (hero != null) { CardPicked?.Invoke(new ArenaCardPickedEventArgs(hero, _prevChoices)); } }
private void CardPicked(ArenaInfo arenaInfo) { var pick = arenaInfo.Deck.Cards.FirstOrDefault(x => !_prevInfo?.Deck.Cards.Any(c => x.Id == c.Id && x.Count == c.Count) ?? false); if (pick != null) { OnCardPicked?.Invoke(this, new CardPickedEventArgs(new Card(pick.Id, 1, pick.Premium), _prevChoices)); } }
private void Update(ArenaInfo info) { Deck = new Deck(DeckType.Arena, info.Deck); Slot = info.CurrentSlot; Losses = info.Losses; Wins = info.Wins; Season = info.Season; Rewards.AddRange(info.Rewards); }
public Arena(Map map, ArenaInfo arena, NetConnection <NetSession> red, NetConnection <NetSession> blue) { this.map = map; this.ArenaInfo = arena; this.Red = red; this.Blue = blue; arena.ArenaId = map.InstanceId; this.ArenaStatus = ArenaStatus.Wait; this.RoundStatus = ArenaRoundStatus.None; }
public Arena NewArena(ArenaInfo info, NetConnection <NetSession> red, NetConnection <NetSession> blue = null) { var instance = InstanceIndexes.Dequeue(); var map = MapManager.Instance.GetInstance(ArenaMapID, instance); Arena arena = new Arena(map, info, red, blue); this.Areans[instance] = arena; arena.PlayerEnter(); return(arena); }
public void UpdateArenaRankGrid(UIGridItem item) { if (item == null || item.mScripts == null || item.oData == null) { return; } ArenaInfo info = item.oData as ArenaInfo; UILabel ranking = item.mScripts[0] as UILabel; UITexture head = item.mScripts[1] as UITexture; UILabel name = item.mScripts[2] as UILabel; UILabel formation = item.mScripts[3] as UILabel; UILabel fight = item.mScripts[4] as UILabel; UISprite select = item.mScripts[5] as UISprite; UITexture clubHead = item.mScripts[6] as UITexture; UILabel clubName = item.mScripts[7] as UILabel; UILabel dimaondLabel = item.mScripts[8] as UILabel; UILabel blackLabel = item.mScripts[9] as UILabel; UISprite rankSprite = item.mScripts[10] as UISprite; item.onClick = OnClickArenaItem; LoadSprite.LoaderHead(head, "jueshetouxiang1", false); LoadSprite.LoaderHead(clubHead, "jueshetouxiang1", false); select.gameObject.SetActive(info.dbid == PlayerMediator.playerInfo.roleId && info.playerName == PlayerMediator.playerInfo.name); if (select.gameObject.activeSelf) { arenaInfo = info; } clubName.text = info.club; rankSprite.gameObject.SetActive(info.ranking <= 3); ranking.gameObject.SetActive(info.ranking > 3); if (info.ranking <= 3) { rankSprite.spriteName = info.ranking.ToString(); } else { ranking.text = info.ranking.ToString(); } name.text = info.playerName; formation.text = info.formation.ToString(); fight.text = info.fightValue.ToString(); ArenaReward reward = ArenaConfig.GetArenaRewardByRank(info.ranking); if (reward == null) { dimaondLabel.text = "0"; blackLabel.text = "0"; } else { dimaondLabel.text = reward.arenaReward.Split(';')[1].ToString(); blackLabel.text = reward.arenaReward.Split(';')[0].ToString(); } }
public void Show(ArenaInfo enemyInfo) { var player = Game.Game.instance.Stage.GetPlayer(); var sprite = SpriteHelper.GetItemIcon(player.Model.armor?.Id ?? GameConfig.DefaultAvatarArmorId); profile.Set(player.Level, States.Instance.CurrentAvatarState.NameWithHash, sprite); var enemySprite = SpriteHelper.GetItemIcon(enemyInfo.ArmorId); enemyProfile.Set(enemyInfo.Level, enemyInfo.AvatarName, enemySprite); base.Show(); }
public void ArenaInfoGetRewardCount(int minScore, int maxScore, int expected) { var score = new Random().Next(minScore, maxScore); var serialized = new Dictionary(new Dictionary <IKey, IValue> { [(Text)"score"] = score.Serialize(), [(Text)"receive"] = false.Serialize(), }); var info = new ArenaInfo(serialized); Assert.Equal(expected, info.GetRewardCount()); }
private void OnGetPVPData(short state, ArenaInfo down = null) { if (state != 0) { StateManager.Instance.StateShow(state, 0); return; } if (down != null) { this.PVPData = down; EventDispatcher.Broadcast(EventNames.PVPUpdateUI); } }
public void Show(ArenaInfo enemyInfo) { player = Game.Game.instance.Stage.GetPlayer(); var sprite = SpriteHelper.GetItemIcon(player.Model.armor? .Id ?? GameConfig.DefaultAvatarArmorId); playerProfile.Set(player.Level, States.Instance.CurrentAvatarState.NameWithHash, sprite); player.gameObject.SetActive(false); var enemySprite = SpriteHelper.GetItemIcon(enemyInfo.ArmorId); enemyProfile.Set(enemyInfo.Level, enemyInfo.AvatarName, enemySprite); loadingText.text = L10nManager.Localize("UI_MATCHING_OPPONENT"); Show(); }
private async void Watch() { _running = true; _prevSlot = -1; _prevInfo = null; while(_watch) { await Task.Delay(_delay); if(!_watch) break; if(Update()) break; } _running = false; }
/// <summary> /// 界面显示 /// </summary> protected override void OnShow(INotification notification) { if (notification.Body != null) { arenaInfo = null; List <object> listObj = notification.Body as List <object>; panel.arenaRank.gameObject.SetActive(true); panel.arenaGrid.AddCustomDataList(listObj); string text = string.Format("[00FF00]{0}[-]", currentPage); panel.arenaPage.text = text + "/" + arenaPage.ToString(); return; } LoadSprite.LoaderBGTexture(panel.beijing.material, "qiuchang", false); UpdateRankList(); }
public RankingSimulator( IRandom random, AvatarState avatarState, AvatarState enemyAvatarState, List <Guid> foods, TableSheets tableSheets, int stageId, ArenaInfo arenaInfo, ArenaInfo enemyInfo) : base(random, avatarState, foods, tableSheets) { _enemyPlayer = new EnemyPlayer(enemyAvatarState, this); _enemyPlayer.Stats.EqualizeCurrentHPWithHP(); _stageId = stageId; _arenaInfo = arenaInfo; _enemyInfo = enemyInfo; _avatarState = avatarState; }
public MockGameData(MatchInfo matchinfo = null, GameServerInfo serverInfo = null, AccountId accountId = null, ArenaInfo arenaInfo = null, BattleTag battleTag = null, BrawlInfo brawlInfo = null, Collection collection = null, Card[] draftChoices = null, List <Card> packCards = null, int packId = 0, DungeonInfo[] dungeonInfo = null, bool friendlyChallengeDialogVisible = false) { _matchinfo = matchinfo; _serverInfo = serverInfo; _accountId = accountId; _arenaInfo = arenaInfo; _battleTag = battleTag; _brawlInfo = brawlInfo; _collection = collection; _draftChoices = draftChoices; _packCards = packCards; _packId = packId; _dungeonInfo = dungeonInfo; _friendlyChallengeDialogVisible = friendlyChallengeDialogVisible; }
public async Task Query(bool active) { const string query = @" { agentAddress avatarAddress arenaRecord { win lose draw } level combatPoint armorId active dailyChallengeCount score }"; var arenaInfo = new ArenaInfo(Fixtures.AvatarStateFX, Fixtures.TableSheetsFX.CharacterSheet, active); var queryResult = await ExecuteQueryAsync <ArenaInfoType>(query, source : arenaInfo); Assert.Equal( new Dictionary <string, object> { ["agentAddress"] = "0xfc2a412ea59122B114B672a5518Bc113955Dd2FE", ["avatarAddress"] = "0x983c3Fbfe8243a0e36D55C6C1aE26A7c8Bb6CBd4", ["arenaRecord"] = new Dictionary <string, object> { ["win"] = 0, ["lose"] = 0, ["draw"] = 0, }, ["level"] = 1, ["combatPoint"] = 1142, ["armorId"] = 10200000, ["active"] = active, ["dailyChallengeCount"] = 5, ["score"] = 1000, }, queryResult.Data ); }
private async void Watch() { _running = true; _prevSlot = -1; _prevInfo = null; while (_watch) { await Task.Delay(_delay); if (!_watch) { break; } if (Update()) { break; } } _running = false; }
private void LoadNextArena() { if (arenaIndex < arena.arenaList.Count) { locationPassed = false; TryClearArena(); ArenaInfo arenaInfo = arena.arenaList[arenaIndex]; arenaGO = Instantiate(arenaInfo.arenaPrefab); playerGO.transform.position = startPosition; for (int i = 0; i < arenaInfo.enemiesList.Count; i++) { CreateEnemy(arenaInfo.enemiesList[i]); } arenaIndex++; } else { UIMenu.GetComponent <RestartPanelController>().dieText.text = "Win"; UIMenu.SetActive(true); } }
public static ArenaInfo GetArenaInfo() { arenaInfo = new ArenaInfo(); string resp = Requests.PostResponseHtml("http://atlantida-o.ru/fields.php"); string respp = Regex.Unescape(resp); string resppp = BotFunc.RemoveAllNewLines(respp); Regex r = new Regex(@"Арена.*?timeleft.*?>(.*?)мин\..*?bid:1,tab:1"); if (r.IsMatch(resppp)) { arenaInfo.Minutes = Convert.ToInt32(r.Match(resppp).Groups[1].Value); arenaInfo.Enter = resppp.Contains("Отказаться"); return(arenaInfo); } else { arenaInfo.Enter = false; arenaInfo.Minutes = 0; return(arenaInfo); } }
public IAccountStateDelta ResetChallengeCount(IActionContext ctx, IAccountStateDelta states) { var gameConfigState = states.GetGameConfigState(); var index = Math.Max((int)ctx.BlockIndex / gameConfigState.WeeklyArenaInterval, 0); var weeklyAddress = WeeklyArenaState.DeriveAddress(index); var rawWeekly = (Dictionary)states.GetState(weeklyAddress); var resetIndex = rawWeekly["resetIndex"].ToLong(); if (ctx.BlockIndex - resetIndex >= gameConfigState.DailyArenaInterval) { var weekly = new WeeklyArenaState(rawWeekly); if (resetIndex >= RankingBattle.UpdateTargetBlockIndex) { // Reset count each ArenaInfo. weekly.ResetIndex = ctx.BlockIndex; var listAddress = weeklyAddress.Derive("address_list"); if (states.TryGetState(listAddress, out List rawList)) { var addressList = rawList.ToList(StateExtensions.ToAddress); foreach (var address in addressList) { var infoAddress = weeklyAddress.Derive(address.ToByteArray()); if (states.TryGetState(infoAddress, out Dictionary rawInfo)) { var info = new ArenaInfo(rawInfo); info.ResetCount(); states = states.SetState(infoAddress, info.Serialize()); } } } } else { // Run legacy ResetCount. weekly.ResetCount(ctx.BlockIndex); } states = states.SetState(weeklyAddress, weekly.Serialize()); } return(states); }
public static bool AutoImportArena(ArenaImportingBehaviour behaviour, ArenaInfo info = null) { var deck = info ?? DeckImporter.FromArena(); if(deck?.Deck.Cards.Sum(x => x.Count) != 30) return false; Log.Info($"Found new complete {deck.Deck.Hero} arena deck!"); var recentArenaDecks = DeckList.Instance.Decks.Where(d => d.IsArenaDeck && d.Cards.Sum(x => x.Count) == 30).OrderByDescending( d => d.LastPlayedNewFirst).Take(15); if(recentArenaDecks.Any(d => d.Cards.All(c => deck.Deck.Cards.Any(c2 => c.Id == c2.Id && c.Count == c2.Count)))) Log.Info("...but we already have that one. Discarding."); else if(Core.Game.IgnoredArenaDecks.Contains(deck.Deck.Id)) Log.Info("...but it was already discarded by the user. No automatic action taken."); else if(behaviour == ArenaImportingBehaviour.AutoAsk) { Core.MainWindow.ShowNewArenaDeckMessageAsync(deck.Deck); return true; } else if(behaviour == ArenaImportingBehaviour.AutoImportSave) { Log.Info("...auto saving new arena deck."); Core.MainWindow.ImportArenaDeck(deck.Deck); return true; } return false; }
private bool HasChanged(ArenaInfo arenaInfo, int slot) => _prevInfo == null || _prevInfo.Deck.Hero != arenaInfo.Deck.Hero || slot > _prevSlot;
public CompleteDeckEventArgs(ArenaInfo info) { Info = info; }
private void HeroPicked(ArenaInfo arenaInfo) { var hero = _prevChoices.FirstOrDefault(x => x.Id == arenaInfo.Deck.Hero); if(hero != null) OnCardPicked?.Invoke(this, new CardPickedEventArgs(hero, _prevChoices)); }
private void CardPicked(ArenaInfo arenaInfo) { var pick = arenaInfo.Deck.Cards.FirstOrDefault(x => !_prevInfo?.Deck.Cards.Any(c => x.Id == c.Id && x.Count == c.Count) ?? false); if(pick != null) OnCardPicked?.Invoke(this, new CardPickedEventArgs(new Card(pick.Id, 1, pick.Premium), _prevChoices)); }
public bool Update() { var arenaInfo = _arenaProvider.GetArenaInfo(); if(arenaInfo == null) return false; var numCards = arenaInfo.Deck.Cards.Sum(x => x.Count); if(numCards == MaxDeckSize) { if(_prevSlot == MaxDeckSize) CardPicked(arenaInfo); OnCompleteDeck?.Invoke(this, new CompleteDeckEventArgs(arenaInfo)); if(arenaInfo.Rewards?.Any() ?? false) OnRewards?.Invoke(this, new RewardsEventArgs(arenaInfo)); _watch = false; return true; } if(HasChanged(arenaInfo, arenaInfo.CurrentSlot)) { var choices = _arenaProvider.GetDraftChoices(); if(choices == null || choices.Length == 0) return false; if(arenaInfo.CurrentSlot > _prevSlot) { if(ChoicesChanged(choices) || _sameChoices) { _sameChoices = false; OnChoicesChanged?.Invoke(this, new ChoicesChangedEventArgs(choices, arenaInfo.Deck)); } else { _sameChoices = true; return false; } } if(_prevSlot == 0 && arenaInfo.CurrentSlot == 1) HeroPicked(arenaInfo); else if(_prevSlot > 0 && arenaInfo.CurrentSlot > _prevSlot) CardPicked(arenaInfo); _prevSlot = arenaInfo.CurrentSlot; _prevInfo = arenaInfo; _prevChoices = choices; } return false; }