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); } }
/// <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)); }
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; } }
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; }
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); }
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); }