public GameV2()
		{
            Entities = new Dictionary<int, Entity>();
			CurrentGameMode = GameMode.None;
			IsInMenu = true;
			SetAsideCards = new List<string>();
			OpponentReturnedToDeck = new List<KeyValuePair<string, int>>();
			PlayerDeck = new ObservableCollection<Card>();
			PlayerDrawn = new ObservableCollection<Card>();
			PlayerDrawnIdsTotal = new ObservableCollection<string>();
			OpponentCards = new ObservableCollection<Card>();
			PossibleArenaCards = new List<Card>();
			PossibleConstructedCards = new List<Card>();
			OpponentHandAge = new int[MaxHandSize];
			OpponentHandMarks = new CardMark[MaxHandSize];
			OpponentStolenCardsInformation = new Card[MaxHandSize];
			OpponentSecrets = new OpponentSecrets();
			for(var i = 0; i < MaxHandSize; i++)
			{
				OpponentHandAge[i] = -1;
				OpponentHandMarks[i] = CardMark.None;
			}

			
		}
Beispiel #2
0
        static Game()
        {
            Entities                 = new Dictionary <int, Entity>();
            CurrentGameMode          = GameMode.None;
            IsInMenu                 = true;
            SetAsideCards            = new List <string>();
            OpponentReturnedToDeck   = new List <KeyValuePair <string, int> >();
            PlayerDeck               = new ObservableCollection <Card>();
            PlayerDrawn              = new ObservableCollection <Card>();
            OpponentCards            = new ObservableCollection <Card>();
            PossibleArenaCards       = new List <Card>();
            PossibleConstructedCards = new List <Card>();
            _cardDb           = new Dictionary <string, Card>();
            OpponentHandAge   = new int[MaxHandSize];
            OpponentHandMarks = new CardMark[MaxHandSize];
            OpponentStolenCardsInformation = new Card[MaxHandSize];
            OpponentSecrets = new OpponentSecrets();
            for (var i = 0; i < MaxHandSize; i++)
            {
                OpponentHandAge[i]   = -1;
                OpponentHandMarks[i] = CardMark.None;
            }

            LoadCardDb(Helper.LanguageDict.ContainsValue(Config.Instance.SelectedLanguage) ? Config.Instance.SelectedLanguage : "enUS");
        }
		static Game()
		{
			Entities = new Dictionary<int, Entity>();
			CurrentGameMode = GameMode.None;
			IsInMenu = true;
			SetAsideCards = new List<string>();
			OpponentReturnedToDeck = new List<KeyValuePair<string, int>>();
			PlayerDeck = new ObservableCollection<Card>();
			PlayerDrawn = new ObservableCollection<Card>();
			OpponentCards = new ObservableCollection<Card>();
			PossibleArenaCards = new List<Card>();
			PossibleConstructedCards = new List<Card>();
			_cardDb = new Dictionary<string, Card>();
			OpponentHandAge = new int[MaxHandSize];
			OpponentHandMarks = new CardMark[MaxHandSize];
			OpponentStolenCardsInformation = new Card[MaxHandSize];
			OpponentSecrets = new OpponentSecrets();
			for(var i = 0; i < MaxHandSize; i++)
			{
				OpponentHandAge[i] = -1;
				OpponentHandMarks[i] = CardMark.None;
			}

			LoadCardDb(Helper.LanguageDict.ContainsValue(Config.Instance.SelectedLanguage) ? Config.Instance.SelectedLanguage : "enUS");
		}
Beispiel #4
0
        public void Reset(bool resetStats = true)
        {
            Logger.WriteLine(">>>>>>>>>>> Reset <<<<<<<<<<<", "Game");

            ReplayMaker.Reset();
            PlayerDrawn.Clear();
            PlayerDrawnIdsTotal.Clear();
            Entities.Clear();
            PlayerId            = -1;
            OpponentId          = -1;
            SavedReplay         = false;
            PlayerHandCount     = 0;
            PlayerFatigueCount  = 0;
            OpponentSecretCount = 0;
            OpponentCards.Clear();
            OpponentHandCount              = 0;
            OpponentFatigueCount           = 0;
            OpponentDeckCount              = 30;
            PlayerDeckSize                 = 30;
            SecondToLastUsedId             = null;
            OpponentHandAge                = new int[MaxHandSize];
            OpponentHandMarks              = new CardMark[MaxHandSize];
            OpponentStolenCardsInformation = new Card[MaxHandSize];
            OpponentSecrets.ClearSecrets();
            NoMatchingDeck = false;
            _playingAs     = null;

            for (var i = 0; i < MaxHandSize; i++)
            {
                OpponentHandAge[i]   = -1;
                OpponentHandMarks[i] = CardMark.None;
            }

            // Assuming opponent has coin, corrected if we draw it
            OpponentHandMarks[DefaultCoinPosition] = CardMark.Coin;
            OpponentHandAge[DefaultCoinPosition]   = 0;
            OpponentHasCoin = true;

            SetAsideCards.Clear();
            OpponentReturnedToDeck.Clear();

            //if(CurrentGameMode == GameMode.Ranked) //otherwise switching from playing ranked to casual causes problems
            //	CurrentGameMode = GameMode.Casual;


            if (!IsInMenu && resetStats)
            {
                if (CurrentGameMode != GameMode.Spectator)
                {
                    CurrentGameMode = GameMode.None;
                }
                CurrentGameStats = new GameStats(GameResult.None, PlayingAgainst, PlayingAs)
                {
                    PlayerName   = PlayerName,
                    OpponentName = OpponentName,
                    Region       = CurrentRegion
                };
            }
            hsLogLines = new List <string>();
        }
        public static void Reset(bool resetStats = true)
        {
            Logger.WriteLine(">>>>>>>>>>> Reset <<<<<<<<<<<");

            PlayerDrawn.Clear();
            PlayerHandCount     = 0;
            OpponentSecretCount = 0;
            OpponentCards.Clear();
            OpponentHandCount = 0;
            OpponentDeckCount = 30;
            OpponentHandAge   = new int[MaxHandSize];
            OpponentHandMarks = new CardMark[MaxHandSize];
            OpponentSecrets.ClearSecrets();

            for (var i = 0; i < MaxHandSize; i++)
            {
                OpponentHandAge[i]   = -1;
                OpponentHandMarks[i] = CardMark.None;
            }

            // Assuming opponent has coin, corrected if we draw it
            OpponentHandMarks[DefaultCoinPosition] = CardMark.Coin;
            OpponentHandAge[DefaultCoinPosition]   = 0;
            OpponentHasCoin = true;

            SetAsideCards.Clear();
            OpponentReturnedToDeck.Clear();

            if (!IsInMenu && resetStats)
            {
                CurrentGameStats = new GameStats(GameResult.None, PlayingAgainst, PlayingAs);
            }
        }
Beispiel #6
0
    bool isFlush(List <CardMark> mark)
    {
        CardMark cm = mark[0];

        if (mark.Count(m => m == cm) != mark.Count)
        {
            return(false);
        }

        return(true);
    }
Beispiel #7
0
        public static void Reset(bool resetStats = true)
        {
            Logger.WriteLine(">>>>>>>>>>> Reset <<<<<<<<<<<");

            ReplayMaker.Reset();
            PlayerDrawn.Clear();
            Entities.Clear();
            PlayerId            = -1;
            OpponentId          = -1;
            SavedReplay         = false;
            PlayerHandCount     = 0;
            OpponentSecretCount = 0;
            OpponentCards.Clear();
            OpponentHandCount              = 0;
            OpponentDeckCount              = 30;
            SecondToLastUsedId             = null;
            OpponentHandAge                = new int[MaxHandSize];
            OpponentHandMarks              = new CardMark[MaxHandSize];
            OpponentStolenCardsInformation = new Card[MaxHandSize];
            OpponentSecrets.ClearSecrets();

            for (var i = 0; i < MaxHandSize; i++)
            {
                OpponentHandAge[i]   = -1;
                OpponentHandMarks[i] = CardMark.None;
            }

            // Assuming opponent has coin, corrected if we draw it
            OpponentHandMarks[DefaultCoinPosition] = CardMark.Coin;
            OpponentHandAge[DefaultCoinPosition]   = 0;
            OpponentHasCoin = true;

            SetAsideCards.Clear();
            OpponentReturnedToDeck.Clear();
            if (!IsInMenu && resetStats)
            {
                CurrentGameStats = new GameStats(GameResult.None, PlayingAgainst, PlayingAs)
                {
                    PlayerName   = PlayerName,
                    OpponentName = OpponentName
                };
            }
            hsLogLines = new List <string>();
        }
 public GameV2()
 {
     Entities                       = new Dictionary <int, Entity>();
     CurrentGameMode                = GameMode.None;
     IsInMenu                       = true;
     SetAsideCards                  = new List <string>();
     OpponentReturnedToDeck         = new List <KeyValuePair <string, int> >();
     PlayerDeck                     = new ObservableCollection <Card>();
     PlayerDrawn                    = new ObservableCollection <Card>();
     OpponentCards                  = new ObservableCollection <Card>();
     PossibleArenaCards             = new List <Card>();
     PossibleConstructedCards       = new List <Card>();
     OpponentHandAge                = new int[MaxHandSize];
     OpponentHandMarks              = new CardMark[MaxHandSize];
     OpponentStolenCardsInformation = new Card[MaxHandSize];
     OpponentSecrets                = new OpponentSecrets();
     for (var i = 0; i < MaxHandSize; i++)
     {
         OpponentHandAge[i]   = -1;
         OpponentHandMarks[i] = CardMark.None;
     }
 }
Beispiel #9
0
        public Game(string languageTag)
        {
            IsInMenu = true;
            PlayerDeck = new ObservableCollection<Card>();
            PlayerDrawn = new ObservableCollection<Card>();
            OpponentCards = new ObservableCollection<Card>();
            _cardDb = new Dictionary<string, Card>();
            OpponentHandAge = new int[MaxHandSize];
            OpponentHandMarks = new CardMark[MaxHandSize];
            for (int i = 0; i < MaxHandSize; i++)
            {
                OpponentHandAge[i] = -1;
                OpponentHandMarks[i] = CardMark.None;
            }

            LoadCardDb(languageTag);
        }
		public static void Reset(bool resetStats = true)
		{
			Logger.WriteLine(">>>>>>>>>>> Reset <<<<<<<<<<<", "Game");

			ReplayMaker.Reset();
			PlayerDrawn.Clear();
			Entities.Clear();
			PlayerId = -1;
			OpponentId = -1;
			SavedReplay = false;
			PlayerHandCount = 0;
			PlayerFatigueCount = 0;
			OpponentSecretCount = 0;
			OpponentCards.Clear();
			OpponentHandCount = 0;
			OpponentFatigueCount = 0;
			OpponentDeckCount = 30;
			PlayerDeckSize = 30;
			SecondToLastUsedId = null;
			OpponentHandAge = new int[MaxHandSize];
			OpponentHandMarks = new CardMark[MaxHandSize];
			OpponentStolenCardsInformation = new Card[MaxHandSize];
			OpponentSecrets.ClearSecrets();
			NoMatchingDeck = false;

			for(var i = 0; i < MaxHandSize; i++)
			{
				OpponentHandAge[i] = -1;
				OpponentHandMarks[i] = CardMark.None;
			}

			// Assuming opponent has coin, corrected if we draw it
			OpponentHandMarks[DefaultCoinPosition] = CardMark.Coin;
			OpponentHandAge[DefaultCoinPosition] = 0;
			OpponentHasCoin = true;

			SetAsideCards.Clear();
			OpponentReturnedToDeck.Clear();

			//if(CurrentGameMode == GameMode.Ranked) //otherwise switching from playing ranked to casual causes problems
			//	CurrentGameMode = GameMode.Casual;


			if(!IsInMenu && resetStats)
			{
				if(CurrentGameMode != GameMode.Spectator)
					CurrentGameMode = GameMode.None;
				CurrentGameStats = new GameStats(GameResult.None, PlayingAgainst, PlayingAs)
				{
					PlayerName = PlayerName,
					OpponentName = OpponentName,
					Region = CurrentRegion
				};
			}
			hsLogLines = new List<string>();
		}
		private void UpdateRevealedEntity(CardEntity entity, int turn, bool? discarded = null, CardMark? cardMark = null)
		{
			var revealed = RevealedCards.FirstOrDefault(ce => ce.Entity == entity.Entity || (ce.CardId == entity.CardId && ce.Entity == null && ce.Turn <= entity.PrevTurn));
			if(revealed != null)
			{
				revealed.Update(entity.Entity);
			}
			else
			{
				revealed = new CardEntity(entity.Entity) {Turn = turn, Created = entity.Created, Discarded = entity.Discarded};
                RevealedCards.Add(revealed);
			}
			if(discarded.HasValue)
				revealed.Discarded = discarded.Value;
			if(cardMark.HasValue)
				revealed.CardMark = cardMark.Value;
		}
		private void UpdateRevealedEntity(CardEntity entity, int turn, bool? discarded = null, CardMark? cardMark = null)
		{
			var revealed =
				RevealedCards.FirstOrDefault(
				                             ce =>
				                             ce.Entity == entity.Entity
				                             || (ce.CardId == entity.CardId && ce.Entity == null && ce.Turn <= entity.PrevTurn));
			if(revealed != null)
				revealed.Update(entity.Entity);
			else
			{
				revealed = new CardEntity(entity.Entity) {Turn = turn, Created = entity.Created, Discarded = entity.Discarded};
				var cardType = entity.Entity.GetTag(GAME_TAG.CARDTYPE);
				if(cardType != (int)TAG_CARDTYPE.HERO && cardType != (int)TAG_CARDTYPE.ENCHANTMENT && cardType != (int)TAG_CARDTYPE.HERO_POWER
				   && cardType != (int)TAG_CARDTYPE.PLAYER)
					RevealedCards.Add(revealed);
			}
			if(discarded.HasValue)
				revealed.Discarded = discarded.Value;
			if(cardMark.HasValue)
				revealed.CardMark = cardMark.Value;
		}