public static void AddEnchantment(card card_to_add) { cards_in_game.Add(card_to_add); enchantments.Add (card_to_add); Zone creaturezone = Enemy.CreaturesZone; creaturezone.AddCard (card_to_add); card_to_add.GetComponent<AudioSource>().PlayOneShot(card_to_add.sfxEntry); }
public static void AddCreature(card card_to_add) { cards_in_game.Add(card_to_add); enemy_creatures.Add (card_to_add); Zone creaturezone = Enemy.CreaturesZone; creaturezone.AddCard (card_to_add); // this is the same for player and enemy creatures card_to_add.FirstTurnInGame = true; card_to_add.GetComponent<AudioSource>().PlayOneShot(card_to_add.sfxEntry); Player.CreatureStatsNeedUpdating = true; }
public static void MoveCard(card card_to_move) { if (card_to_move.IsZoomed) { Debug.Log ("starting unzoom after moving"); Player.CanUnzoom = true; card_to_move.UnZoom(); } //move the card from collection to deck or from deck to collection if (card_to_move.InCollection) { Debug.Log("mouse down collection"); card foundcard = EditDeckScripts.cards_in_deck.Find(x => x.Index == card_to_move.Index); if (foundcard) { Debug.Log("found, adding amount"); foundcard.Amount++;} else { //Debug.Log("cloning"); GameObject clone; clone = (GameObject)Instantiate(card_to_move); EditDeckScripts.cards_in_deck.Add(clone.GetComponent<card>()); //make a copy of this card to display in deck //foundcard = EditDeckScripts.cards_in_deck.Find(x => x.Index == Index); clone.GetComponent<card>().Amount=1; } card_to_move.Amount--; } else { Debug.Log("moving card index: "+ card_to_move.Index.ToString()); EditDeckScripts.cards_in_collection.Find(x => x.Index == card_to_move.Index).Amount++; Debug.Log("amount in coll: "+ EditDeckScripts.cards_in_collection.Find(x => x.Index == card_to_move.Index).Amount); card_to_move.Amount--; if (EditDeckScripts.FilterOn) { if (card_to_move.Name.ToString().ToLower().Contains(EditDeckScripts.searchname.ToLower())) { EditDeckScripts.cards_in_collection.Add(card_to_move); } else { EditDeckScripts.cards_filtered_out.Add(card_to_move); card_to_move.GetComponent<SpriteRenderer>().enabled = false; } } } EditDeckScripts.ArrangeCards(); }
public static void AddLand(card card_to_add) { cards_in_game.Add(card_to_add); Zone lands = Enemy.LandsZone; lands.AddCard (card_to_add); card_to_add.GetComponent<AudioSource>().PlayOneShot(card_to_add.sfxEntry); }
public void AddArtAndText(card card_to_update, bool nocollider=false) { DbCard dbcard = MainMenu.TCGMaker.cards.Where(x => x.id == card_to_update.Index).SingleOrDefault(); GameObject cardobj = card_to_update.gameObject; if (!nocollider && !card_to_update.GetComponent<Collider2D>()) { card_to_update.gameObject.AddComponent <BoxCollider2D>(); BoxCollider2D collider = card_to_update.GetComponent<BoxCollider2D> () as BoxCollider2D; collider.size = new Vector3 (MainMenu.ColliderWidth, MainMenu.ColliderHeight, 0f); // this defines the clickable area size of each card } if (!card_to_update.GetComponent<SpriteRenderer>()) card_to_update.gameObject.AddComponent<SpriteRenderer>(); GameObject card_art = AddCardComponent("CardArt", card_to_update); card_art.GetComponent<SpriteRenderer>().sprite = dbcard.art ; if (templateTransform.Find(card_to_update.CardColor.name+"Frame")) card_to_update.GetComponent<SpriteRenderer> ().sprite = templateTransform.Find(card_to_update.CardColor.name+"Frame").GetComponent<SpriteRenderer> ().sprite; else Debug.LogError("Could not find a frame for color: "+card_to_update.CardColor.name + " ! Check that you have a "+card_to_update.CardColor.name+"Frame attached to the Card Template in MainMenuScene"); card_to_update.GetComponent<Renderer>().sortingOrder = 2; foreach (string c_stat in card_to_update.CustomInts.Keys) //adding custom stats: AddIntStat(card_to_update, c_stat, templateTransform); foreach (string c_stat in card_to_update.CustomStrings.Keys) AddStringStat(card_to_update, c_stat, templateTransform); GameObject card_name = AddCardComponent("Name3DText", card_to_update); card_name.GetComponent<TextMesh> ().text = card_to_update.Name.ToString (); //creature offense string cardtext = dbcard.text; if (cardtext != "") { GameObject card_description = AddCardComponent("Description3DText", card_to_update); card_description.GetComponent<TextMesh> ().text = TextWrap(cardtext, 30); //card description } if (card_to_update.Type != 0) //if it's not a land, add mana text { if (MainMenu.TCGMaker.core.UseManaColors) { int i = 0; foreach (ManaColor foundcolor in card_to_update.Cost) { if (!foundcolor.icon) Debug.LogWarning("No icon found for mana color: "+foundcolor.name); else { GameObject mana_icon = AddCardComponent("ManaIcon", card_to_update); Sprite thisicon = foundcolor.icon; mana_icon.GetComponent<SpriteRenderer>().sprite = thisicon; //mana cost Vector3 pos = mana_icon.transform.localPosition; pos.x -= i * thisicon.bounds.size.x * mana_icon.transform.localScale.x * 1.1f; //by default, the distance between mana icons is 10% of an icon's width mana_icon.transform.localPosition = pos; } i++; } } else { GameObject card_mana = AddCardComponent("Mana3DText", card_to_update); card_mana.GetComponent<TextMesh> ().text = card_to_update.Cost.Count.ToString (); //mana cost GameObject card_cost_icon = AddCardComponent("CostIcon", card_to_update); } } if (card_to_update.IsACreature()) { //the atk/def numbers that will be displayed on top of the card: GameObject card_atk = AddCardComponent("Offense3DText", card_to_update); GameObject card_atk_icon = AddCardComponent("OffenseIcon", card_to_update); card_atk.GetComponent<TextMesh> ().text = card_to_update.CreatureOffense.ToString (); //creature offense if (!MainMenu.TCGMaker.core.OptionOneCombatStatForCreatures) { GameObject card_def = AddCardComponent("Defense3DText", card_to_update); GameObject card_def_icon = AddCardComponent("DefenseIcon", card_to_update); card_def.GetComponent<TextMesh> ().text = card_to_update.CreatureDefense.ToString (); //creature offense } } foreach (Transform child in card_to_update.transform) child.GetComponent<Renderer>().enabled = true; }
//when the card enters the zone, rotate and resize it public void AddCard(card card_to_add) { Debug.Log ("adding card:"+card_to_add.Name +"to zone: "+dbzone.Name+", Belongs to player: " + card_to_add.ControlledByPlayer); //if (card_to_add.collider != null ) card_to_add.collider.enabled = false; if (card_to_add.IsZoomed) card_to_add.UnZoom(); if (card_to_add.faceDown && !FaceDown) { //it it was face down and the zone has cards face up, make the card face up again card_to_add.FaceUp(); } if (!Invisible && !card_to_add.GetComponent<SpriteRenderer> ()) //if no sprite renderer was added, time to add it now playerDeck.pD.AddArtAndText(card_to_add); cards.Add(card_to_add); if (FaceDown && card_to_add.GetComponent<Renderer>()) { card_to_add.FaceDown(); } if (UseSlots) { if (PlayerCanChooseSlot) { if (slot_to_use!=null) { Debug.Log("slot was chosen before"); ScaleAndPlaceIntoSlot(card_to_add); } else if (card_to_add.ControlledByPlayer) //player, grid or no grid StartCoroutine(ChooseSlotAndPlace(card_to_add)); else { //enemy if (card_to_add.transform.parent!=null && card_to_add.transform.parent.IsChildOf(transform)) slot_to_use = FirstAvailableSlot(card_to_add.transform.parent.GetComponent<Slot>()); //movement else slot_to_use = FirstAvailableSlot(true); //initial placement ScaleAndPlaceIntoSlot(card_to_add); } } else if (StackAllInOneSlot) { slot_to_use = FirstAvailableSlot(); int FrameSortingOrder; int ArtSortingOrder; // Debug.Log("cards stacked in slot already:" + FirstAvailableSlot().childCount ); FrameSortingOrder = (slot_to_use.childCount+1)*2; ArtSortingOrder = (slot_to_use.childCount+1)*2 - 1; card_to_add.GetComponent<Renderer>().sortingOrder = FrameSortingOrder; foreach (Transform child in card_to_add.transform) child.GetComponent<Renderer>().sortingOrder = FrameSortingOrder; card_to_add.transform.Find ("CardArt").GetComponent<Renderer>().sortingOrder = ArtSortingOrder; foreach (Transform child in slot_to_use) child.GetComponent<Renderer>().GetComponent<Collider2D>().enabled = false; // disabling the collider of the underneath cards so they don't cause glitches OnMouseOver etc ScaleAndPlaceIntoSlot(card_to_add); } else { //normal slot, choosing disabled slot_to_use = FirstAvailableSlot(); ScaleAndPlaceIntoSlot(card_to_add); } } else //not using slots { card_to_add.transform.Rotate(0, 0, RotateDegrees); RecalculateScale(); // Debug.Log ("gonna set scale to:"+ZoneScale); card_to_add.transform.localScale = new Vector3 (ZoneScale, ZoneScale, 1f); RearrangeCards(); TriggerOnEnter(card_to_add); } foreach (card foundcard in Player.cards_in_game) foundcard.checked_for_highlight = false; foreach (card foundcard in Player.cards_in_hand) foundcard.checked_for_highlight = false; }
public static void AddCreature(card card_to_add) { // Debug.Log ("starting AddCreature"); cards_in_game.Add(card_to_add); player_creatures.Add (card_to_add); Zone creaturezone = Player.CreaturesZone; card_to_add.ControlledByPlayer = true; creaturezone.AddCard (card_to_add); // this is the same for player and enemy creatures card_to_add.FirstTurnInGame = true; //important, because of the "return to deck" spells //AudioSource cardSFX = card_to_add.GetComponent<AudioSource>(); //cardSFX.Play(); card_to_add.GetComponent<AudioSource>().PlayOneShot(card_to_add.sfxEntry); Player.CreatureStatsNeedUpdating = true; }
public static void OpenListToChooseCard(List<card> cardlist, int cardtype = -1) { bool at_least_one_valid_card = false; temp_cards.Clear (); card tempcard = new card (); int i = 0; GameObject choosecardtext = (GameObject)Instantiate (playerDeck.pD.choosecardprefab); choosecardtext.name = "ChooseCardText"; choosecardtext.GetComponent<Renderer>().sortingOrder = 90; //zoomed cards still appear on top with sorting order = 100 if (MainMenu.TCGMaker.core.UseGrid) foreach (Transform foundslot in Player.CreaturesZone.transform) foundslot.GetComponent<Collider>().enabled = false; foreach (card foundcard in cardlist) { if (cardtype != -1 && foundcard.Type == cardtype) { at_least_one_valid_card = true; tempcard = playerDeck.pD.MakeCard (foundcard.Index); playerDeck.pD.AddArtAndText(tempcard); tempcard.GetComponent<Renderer>().sortingOrder = 91; foreach (Transform child in tempcard.transform) child.GetComponent<Renderer>().sortingOrder = 91; tempcard.transform.Find ("CardArt").GetComponent<Renderer>().sortingOrder = 90; //zoomed cards still appear on top with sorting order = 100 tempcard.transform.position = new Vector3 (1f + 0.5f * i, 1f, 0.1f); temp_cards.Add (tempcard); //only the cards from the temp_cards list will be valid targets when clicked on i++; } } if (!at_least_one_valid_card) { Debug.Log ("no valid cards in the list"); Player.NeedTarget = 0; Player.ActionCancelled = true; Destroy(GameObject.FindGameObjectWithTag("ChooseCardText")); } }
public static void OpenIntListToChooseCard(List<int> cardlist, int cardtype = -1) { temp_cards.Clear(); card tempcard = new card(); int i=0; GameObject choosecardtext = (GameObject)Instantiate(playerDeck.pD.choosecardprefab); choosecardtext.name = "ChooseCardText"; choosecardtext.transform.position = new Vector3 (-2f, 2.8f, 0.1f); DbCard dbcard; if (MainMenu.TCGMaker.core.UseGrid) foreach (Transform foundslot in Player.CreaturesZone.transform) foundslot.GetComponent<Collider>().enabled = false; foreach (int foundcardID in cardlist) { dbcard = MainMenu.TCGMaker.cards.Where(x => x.id == foundcardID).SingleOrDefault(); if (dbcard == null) Debug.LogWarning("card not found in the new db!"); if (cardtype == -1 || dbcard.type == cardtype ) { tempcard = playerDeck.pD.MakeCard(foundcardID); playerDeck.pD.AddArtAndText(tempcard); if (i>7) tempcard.transform.position = new Vector3(-2f+1f*(i-8), -0.5f, 0.1f); else tempcard.transform.position = new Vector3(-2f+1f*i, 1f, 0.1f); tempcard.GetComponent<Renderer>().sortingOrder = 91; foreach (Transform child in tempcard.transform) child.GetComponent<Renderer>().sortingOrder = 91; tempcard.transform.Find ("CardArt").GetComponent<Renderer>().sortingOrder = 90; //zoomed cards still appear on top with sorting order = 100 temp_cards.Add(tempcard); //only the cards from the temp_cards list will be valid targets when clicked on } i++; } }