// flips a player's monster card public void PlayMonster(MonsterAsset monsterAsset, int index) { GameObject monster; monster = CreateAMonsterAtPosition(monsterAsset, slots.Children[index].position, new Vector3(0f, -179f, 0f)); MonsterManager monsterManager = monster.GetComponent <MonsterManager>(); monsterManager.index = index; monsterManager.CardFaceGlowImage.enabled = false; monsterManagers.Insert(index, monsterManager); // pass this monster to HandVisual class AddMonster(monster, index); // bring monster to front WhereIsTheCardOrMonster w = monster.GetComponent <WhereIsTheCardOrMonster>(); w.BringToFront(); w.Slot = index; // flip monster Sequence s = DOTween.Sequence(); s.Insert(0f, monster.transform.DORotate(Vector3.zero, GameStateSync.Instance.MonsterFlipTime)); // displace the monster so that we can select it in the scene easier. s.Append(monster.transform.DOLocalMove(slots.Children[0].transform.localPosition, GameStateSync.Instance.MonsterFlipTime)); s.OnComplete(() => ChangeLastCardStatusToInHand(monster, w)); }
// creates a monster and returns a new monster as a GameObject GameObject CreateAMonsterAtPosition(MonsterAsset monsterAsset, Vector3 position, Vector3 eulerAngles) { // Instantiate a card depending on its type GameObject monster; // this is a spell: checking for targeted or non-targeted spell monster = GameObject.Instantiate(GameStateSync.Instance.MonsterCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; // apply the look of the monster MonsterManager manager = monster.GetComponent <MonsterManager>(); manager.monsterAsset = monsterAsset; manager.ReadCardFromAsset(); return(monster); }
// Play monsters public void PlayMonsters(PlayerArea area, ref List <Monster> playerMonsters, List <Monster> newPlayerMonsters) { if (playerMonsters.Count == 0) { playerMonsters = new List <Monster>(); for (int i = 0; i < newPlayerMonsters.Count; i++) { // play this monster for the first time Monster monster = newPlayerMonsters[i]; MonsterAsset monsterAsset = Resources.Load <MonsterAsset>("Cards/" + monster.mainLineage + "/" + monster.id) as MonsterAsset; new PlayAMonsterCommand(area, monsterAsset, i).AddToQueue(); // sync monster data to local playerMonsters.Insert(i, monster); } } }
public Wave(MonsterAsset asset, int count, float timeUntilThisWave) { Asset = asset; Count = count; TimeUntilThisWave = timeUntilThisWave; }
public PlayAMonsterCommand(PlayerArea playerArea, MonsterAsset monsterAsset, int index) { this.playerArea = playerArea; this.monsterAsset = monsterAsset; this.index = index; }