private void DrawInspector(GameCardBehaviour card)
    {
        bool          needSpriteUpdate = false;
        bool          active           = EditorGUILayout.Toggle(new GUIContent("Active", ""), card.Active);
        bool          backSide         = EditorGUILayout.Toggle(new GUIContent("Back side", ""), card.BackSide);
        GameCardType  animalType       = (GameCardType)EditorGUILayout.EnumPopup("Animal type", card.AnimalType);
        GameBehaviour game             = EditorGUILayout.ObjectField("Game manager", card.Game, typeof(GameBehaviour), true) as GameBehaviour;

        // update active flag, if needed
        if (active != card.Active)
        {
            card.Active = active;
            SVGUtils.MarkSceneDirty();
            if (card.Game != null)
            {
                if (card.Active)
                {
                    card.Game.ShowCard(card);
                }
                else
                {
                    card.Game.HideCard(card);
                }
            }
        }
        // update back side flag, if needed
        if (backSide != card.BackSide)
        {
            card.BackSide = backSide;
            SVGUtils.MarkSceneDirty();
            needSpriteUpdate = true;
        }
        // update animal/card type, if needed
        if (animalType != card.AnimalType)
        {
            card.AnimalType = animalType;
            SVGUtils.MarkSceneDirty();
            needSpriteUpdate = true;
        }
        // update game manager, if needed
        if (game != card.Game)
        {
            card.Game = game;
            SVGUtils.MarkSceneDirty();
        }

        if (needSpriteUpdate && (card.Game != null))
        {
            card.Game.UpdateCardSprite(card);
        }
    }
Esempio n. 2
0
        /// <inheritdoc/>
        public Task <IGameCard> GetCard(GameCardType type)
        {
            if (Pack == null || !Pack.Any(card => card.Type == type))
            {
                throw new NullReferenceException($"Either no cards found or no cards of type not found");
            }

            var card = Pack
                       .FirstOrDefault(card => card.Type == type);

            Pack.Remove(card);

            return(Task.FromResult(card));
        }
Esempio n. 3
0
    private void Shuffle(GameCardType[] array)
    {
        System.Random rnd = new System.Random(System.Environment.TickCount);
        int           n   = array.Length;

        // Knuth shuffle
        while (n > 1)
        {
            n--;
            int          i    = rnd.Next(n + 1);
            GameCardType temp = array[i];
            array[i] = array[n];
            array[n] = temp;
        }
    }
Esempio n. 4
0
    private void StartNewGame()
    {
        GameCardType[] animalCouples = new GameCardType[this.Cards.Length];
        // start with a random animal
        GameCardType currentAnimal = GameCardBehaviour.RandomAnimal();

        // generate animal couples
        for (int i = 0; i < (this.Cards.Length / 2); ++i)
        {
            animalCouples[i * 2]       = currentAnimal;
            animalCouples[(i * 2) + 1] = currentAnimal;
            currentAnimal = GameCardBehaviour.NextAnimal(currentAnimal);
        }
        // shuffle couples
        this.Shuffle(animalCouples);
        // assign cards
        for (int i = 0; i < this.Cards.Length; ++i)
        {
            this.Cards[i].BackSide   = true;
            this.Cards[i].AnimalType = animalCouples[i];
            this.ShowCard(this.Cards[i]);
        }

        // select a background
        if (this.Background != null)
        {
            if (this.BackgroundFiles.Length > 0)
            {
                // destroy current texture and sprite
                this.Background.DestroyAll(true);
                // assign a new SVG file
                this.Background.SVGFile = this.BackgroundFiles[this.m_BackgroundIndex % this.BackgroundFiles.Length];
                this.m_BackgroundIndex++;
            }
            else
            {
                this.Background.SVGFile = null;
            }
        }

        // no selection
        this.m_SelectedCard0 = null;
        this.m_SelectedCard1 = null;
    }
Esempio n. 5
0
 public Sprite UpdateCardSprite(GameCardBehaviour card)
 {
     if (this.Atlas != null)
     {
         GameCardType     cardType = card.BackSide ? GameCardType.BackSide : card.AnimalType;
         SVGRuntimeSprite data     = this.Atlas.GetSpriteByName(GameCardBehaviour.AnimalSpriteName(cardType));
         // get the sprite, given its name
         if (data != null)
         {
             card.gameObject.GetComponent <SpriteRenderer>().sprite = data.Sprite;
             // keep updated the SVGSpriteLoaderBehaviour component too
             SVGSpriteLoaderBehaviour loader = card.gameObject.GetComponent <SVGSpriteLoaderBehaviour>();
             if (loader != null)
             {
                 loader.SpriteReference = data.SpriteReference;
             }
             return(data.Sprite);
         }
     }
     return(null);
 }
Esempio n. 6
0
        public string printCards(string Player, GameCardType type)
        {
            string strRet = null;
            string strSql = null;

            if (type == GameCardType.玩家)
            {
                strSql = "select * from GameCards where GameGuid = '" + gameGuid + "' and isnull(PlayerGuid,'') = '" + Player + "' and isnull(IsOut, '') <> '1' order by Point desc,Color asc";
            }
            else
            {
                strSql = "select * from GameCards where GameGuid = '" + gameGuid + "' and CardType = '" + (int)type + "' and isnull(IsOut, '') <> '1' order by Point desc,Color asc";
            }
            DataView dvCards = BaersTool.DB.Data.ExecuteToDataView(strSql);

            foreach (DataRowView drv in dvCards)
            {
                if (Convert.ToInt16(drv["Point"]) == 15)
                {
                    strRet += ((ColorType)Convert.ToInt16(drv["Color"]) + "2 ");
                }
                else
                {
                    if (Convert.ToInt16(drv["Color"]) == -1)
                    {
                        strRet += ((CardType)Convert.ToInt16(drv["Point"]) + " ");
                    }
                    else
                    {
                        strRet += ((ColorType)Convert.ToInt16(drv["Color"]) + "" + (CardType)Convert.ToInt16(drv["Point"]) + " ");
                    }
                }
            }

            return(strRet);
        }
    public static string AnimalSpriteName(GameCardType animalType)
    {
        switch (animalType)
        {
        case GameCardType.BackSide:
            return("animals_back");

        case GameCardType.Panda:
            return("animals_Panda");

        case GameCardType.Monkey:
            return("animals_Monkey");

        case GameCardType.Orangutan:
            return("animals_Orangutan");

        case GameCardType.Panther:
            return("animals_Panther");

        case GameCardType.Puma:
            return("animals_Puma");

        case GameCardType.Leopard:
            return("animals_Leopard");

        case GameCardType.Lion:
            return("animals_Lion");

        case GameCardType.Cougar:
            return("animals_Cougar");

        case GameCardType.Tiger:
            return("animals_Tiger");

        case GameCardType.Elephant:
            return("animals_Elephant");

        case GameCardType.Penguin:
            return("animals_Penguin");

        case GameCardType.Zebra:
            return("animals_Zebra");

        case GameCardType.Hen:
            return("animals_Hen");

        case GameCardType.Rooster:
            return("animals_Rooster");

        case GameCardType.Pig:
            return("animals_Pig");

        case GameCardType.Dog:
            return("animals_Dog");

        case GameCardType.Rabbit:
            return("animals_Rabbit");

        case GameCardType.Owl:
            return("animals_Owl");

        case GameCardType.Sheep:
            return("animals_Sheep");

        case GameCardType.Cat:
            return("animals_Cat");

        case GameCardType.Deer:
            return("animals_Deer");

        case GameCardType.Donkey:
            return("animals_Donkey");

        case GameCardType.Cow:
            return("animals_Cow");

        case GameCardType.Fox:
            return("animals_Fox");

        default:
            return("");
        }
    }
    // Get the next animal in the list
    public static GameCardType NextAnimal(GameCardType current)
    {
        int next = (((int)current + 1) % AnimalsCount()) + (int)GameCardType.Panda;

        return((GameCardType)next);
    }