public static void CheckDynamite(Character init, DynamiteLogic dynamite) { PackAsset cardAsset = PackAndDiscard.Instance.GetRandomCard(); PackAndDiscard.Instance.Discard(cardAsset); init.RemoveBuff(dynamite); if (cardAsset.CardSuit == ECardSuit.Spades && (int)cardAsset.CardRating >= 2 && (int)cardAsset.CardRating < 10) { GlobalVeriables.Instance.audioSource.clip = dynamite.explosionAC; GlobalVeriables.Instance.audioSource.Play(); PackAndDiscard.Instance.Discard(dynamite); for (int j = 0; j < 3; ++j) { if (!init.IsDead) { init.Hit(); } } } else { init.NextPlayer.AddBuff(dynamite); } }
private static void _DropBangCard(PackAsset bangCard) { GlobalVeriables.GameState = EGameState.Move; GlobalVeriables.Instance.Player.Hand.Remove(bangCard); PackAndDiscard.Instance.Discard(bangCard); GlobalVeriables.Instance.CardZone.Close(); }
private static IEnumerator _Indians(Player init, IndiansLogic currentCard) { init.Hand.Remove(currentCard); PackAndDiscard.Instance.Discard(currentCard); init.UsedCard.Add(currentCard); GlobalVeriables.Instance.audioSource.clip = currentCard.audioSource; GlobalVeriables.Instance.audioSource.Play(); foreach (Bot enemy in GlobalVeriables.Instance.Enemies) { PackAsset bangCard = enemy.Hand.Find(asset => asset.CardName == ECardName.Bang); if (bangCard != null) { enemy.Hand.Remove(bangCard); PackAndDiscard.Instance.Discard(bangCard); } else { enemy.Hit(); } } yield return(new WaitForSeconds(GlobalVeriables.Instance.audioSource.time)); }
public static void Store(Bot init, PackAsset currentCard) { init.Hand.Remove(currentCard); PackAndDiscard.Instance.Discard(currentCard); if (!GlobalVeriables.Instance.Player.IsDead) { randomCards.Add(PackAndDiscard.Instance.GetRandomCard()); } for (int i = 0; i < GlobalVeriables.Instance.Enemies.Count; i++) { randomCards.Add(PackAndDiscard.Instance.GetRandomCard()); } //List<Bot> enemies = new List<Bot>(GlobalVeriables.Instance.Enemies); for (int i = GlobalVeriables.Instance.Enemies.FindIndex(pl => pl == init); i < GlobalVeriables.Instance.Enemies.Count; i++) { PackAsset enemyChosenCard = AIPickUpCard.PickUpCard(GlobalVeriables.Instance.Enemies[i], randomCards); randomCards.Remove(enemyChosenCard); GlobalVeriables.Instance.Enemies[i].Hand.Add(enemyChosenCard); } foreach (PackAsset randomCard in randomCards) { Button card = Actions.CreateCard(randomCard); card.onClick.AddListener(delegate { _GetCard(init, randomCard); }); } }
public static int GetScope(PackAsset s) { if (s == null) { return(1); } if (s.CardName == ECardName.Colt) { return(2); } else if (s.CardName == ECardName.Remington) { return(3); } else if (s.CardName == ECardName.Carabine) { return(4); } else if (s.CardName == ECardName.Volcano) { return(5); } return(1); }
public override void getObj(string name, Action <Sprite, string> callBack, bool forceRemove = false) { //bundle池有 if (AssetMgr.has(resName)) { PackAsset pab = AssetMgr.get(resName); pab.getObj <Sprite>(name, callBack); } else { if (forceRemove) { Debug.LogError("加载资源失败 path " + resName); } else { if (!handler.ContainsKey(name)) { handler.Add(name, new List <Action <Sprite, string> >()); } handler[name].Add(callBack); LoadItemMgr.add(resName, resPath, loadFinish); } } }
public static void Bang(Player victim, Bot enemy, PackAsset currentCard) { enemy.Hand.Remove(currentCard); PackAndDiscard.Instance.Discard(currentCard); GlobalVeriables.GameState = EGameState.Defense; if (GlobalVeriables.Instance.CardZone.isActiveAndEnabled) { GlobalVeriables.Instance.CardZone.dropCardButton.gameObject.SetActive(false); } else { GlobalVeriables.Instance.CardZone.ShowCardSpawn(true, false); } GlobalVeriables.Instance.CardZone.ClearCardSpawn(); List <PackAsset> defenseCard = new List <PackAsset>(); defenseCard.AddRange(victim.Hand.FindAll(card => card.CardName == ECardName.Missed)); defenseCard.AddRange(victim.Buffs.FindAll(card => card.CardName == ECardName.Barrel)); if (victim.CurrentHealth == 1) { defenseCard.AddRange(victim.Hand.FindAll(card => card.CardName == ECardName.Beer)); } foreach (PackAsset card in defenseCard) { Actions.CreateCard(card); } }
private void _Beauty(Bot enemy, PackAsset currentCard) { if (enemy.Hand.Count == 0 && enemy.Buffs.Count == 0 && enemy.Weapon == null) { GlobalVeriables.Instance.CardZone.ShowMessage("Enemy doesnt have any card"); GlobalVeriables.Instance.CardZone.ClearCardSpawn(); Actions.ShowPlayerCards(); } else { GlobalVeriables.Instance.Player.Hand.Remove(currentCard); GlobalVeriables.Instance.Player.UsedCard.Add(currentCard); PackAndDiscard.Instance.Discard(currentCard); foreach (PackAsset card in enemy.Hand) { Image cardImage = _CreateCard(enemy, card); cardImage.sprite = enemy.BackRoleImage.sprite; } foreach (PackAsset buff in enemy.Buffs) { Image buffImage = _CreateCard(enemy, buff); buffImage.sprite = buff.PackSprite; } if (enemy.Weapon != null) { Image weaponImage = _CreateCard(enemy, enemy.Weapon); weaponImage.sprite = enemy.Weapon.PackSprite; } } }
private static void _GatlingAndIndians() { if (_bot.RoleInfo.Role == ERole.Assistant) { return; } PackAsset gatling = _bot.Hand.Find(card => card.CardName == ECardName.Gatling); if (gatling == null) { return; } _bot.StartCoroutine(GatlingLogic.Gatling(_bot, (GatlingLogic)gatling)); _bot.UsingCard(gatling); PackAsset indians = _bot.Hand.Find(card => card.CardName == ECardName.Indians); if (indians == null) { return; } _bot.StartCoroutine(IndiansLogic.Indians(_bot, (IndiansLogic)indians)); _bot.UsingCard(indians); }
private static void _Jail(Player init, Bot defendant, PackAsset currentCard) { init.Hand.Remove(currentCard); init.UsedCard.Add(currentCard); defendant.InJail = true; defendant.AddBuff(currentCard); GlobalVeriables.Instance.CardZone.ClearCardSpawn(); Actions.ShowPlayerCards(); }
public static void Defense(Bot victim, Character enemy) { PackAsset missed = victim.Hand.Find(card => card.CardName == ECardName.Missed); if (missed != null) { victim.Hand.Remove(missed); if (GlobalVeriables.Instance.CardZone.isActiveAndEnabled) { GlobalVeriables.Instance.CardZone.ShowMessage("You missed!"); } return; } PackAsset barrel = victim.Buffs.Find(asset => asset.CardName == ECardName.Barrel); if (barrel != null) { victim.RemoveBuff(barrel); if (BarrelLogic.CheckBarrel(victim)) { if (GlobalVeriables.Instance.CardZone.isActiveAndEnabled) { GlobalVeriables.Instance.CardZone.ShowMessage("Enemy behind barrel"); } return; } } if (victim.CurrentHealth == 1) { PackAsset beer = victim.Hand.Find(card => card.CardName == ECardName.Beer); if (beer != null) { victim.Hand.Remove(beer); if (GlobalVeriables.Instance.CardZone.isActiveAndEnabled) { GlobalVeriables.Instance.CardZone.ShowMessage("Enemy heal!"); } return; } } if (!victim.botEnemies.Contains(enemy)) { victim.botEnemies.Add(enemy); } victim.Hit(enemy); victim.ShowBulletHole(); }
private static void _CreateCard(PackAsset card) { GameObject cardObject = new GameObject(); cardObject.transform.SetParent(GlobalVeriables.Instance.CardZone.cardSpawn.transform, false); Button cardButton = cardObject.AddComponent <Button>(); Image cardImage = cardObject.AddComponent <Image>(); cardImage.sprite = card.PackSprite; cardButton.onClick.AddListener(delegate { _DropBangCard(card); }); }
public void UsingCard(PackAsset card) { UsingCards.SetActive(true); GameObject image = new GameObject(); image.transform.SetParent(UsingCards.transform, false); Image newBuff = image.AddComponent <Image>(); newBuff.sprite = card.PackSprite; }
//Random select card public PackAsset GetRandomCard() { if (pack.Count == 0) { RemixPack(); } PackAsset card = pack[Random.Range(0, pack.Count)]; pack.Remove(card); return(card); }
public static void Jail(Character init, Character defendant, PackAsset currentCard) { if (defendant.RoleInfo.Role == ERole.Sheriff || defendant.InJail) { return; } init.Hand.Remove(currentCard); defendant.InJail = true; defendant.AddBuff(currentCard); }
private Image _CreateCard(Bot enemy, PackAsset cardAsset) { GameObject cardObject = new GameObject(); cardObject.transform.SetParent(GlobalVeriables.Instance.CardZone.cardSpawn.transform, false); Button cardButton = cardObject.AddComponent <Button>(); cardButton.onClick.AddListener(delegate { _DropCard(enemy, cardAsset); }); Image cardImage = cardObject.AddComponent <Image>(); return(cardImage); }
private static void _Beauty() { PackAsset beauty = _bot.Hand.Find(card => card.CardName == ECardName.Beauty); if (beauty == null || _bot.botEnemies.Count == 0) { return; } BeautyLogic.Beauty(_bot, _bot.botEnemies[Random.Range(0, _bot.botEnemies.Count)], beauty); _bot.UsingCard(beauty); }
private static void _Bang(Bot victim, PackAsset currentCard) { GlobalVeriables.Instance.Player.Hand.Remove(currentCard); GlobalVeriables.Instance.Player.UsedCard.Add(currentCard); PackAndDiscard.Instance.Discard(currentCard); AIDefense.Defense(victim, GlobalVeriables.Instance.Player); GlobalVeriables.Instance.audioSource.Play(); GlobalVeriables.Instance.CardZone.ClearCardSpawn(); Actions.ShowPlayerCards(); }
public static bool Buff(Character player, PackAsset card) { if (player.Buffs.Find(asset => asset.CardName == card.CardName) == null) { GlobalVeriables.Instance.Player.AddBuff(card); } else { return(false); } return(true); }
/// <summary> /// 移除一个正在加载的任务 /// 上层的创建一个gameobject的时候 很有可能调了创建 马上又销毁(这个时候unload掉) /// </summary> /// <param name="resName"></param> /// <param name="callBack"></param> public void unLoad(string resName, Action <GameObject> callBack) { resName = resName.ToLower(); if (pools.ContainsKey(resName)) { pools[resName].removeHandler(callBack); } if (AssetMgr.has(resName)) { PackAsset pka = AssetMgr.get(resName); pka.remove(callBack); } }
private static bool _CheckJail() { PackAsset randomCard = PackAndDiscard.Instance.GetRandomCard(); PackAndDiscard.Instance.Discard(randomCard); if (randomCard.CardSuit == ECardSuit.Hearts) { return(true); } return(false); }
public static bool CheckBarrel(Character player) { PackAsset randomCard = PackAndDiscard.Instance.GetRandomCard(); PackAndDiscard.Instance.Discard(randomCard); if (randomCard.CardSuit != ECardSuit.Hearts) { player.Hit(); return(false); } return(true); }
public static Button CreateCard(PackAsset cardAsset) { GameObject cardObject = new GameObject(); cardObject.transform.SetParent(GlobalVeriables.Instance.CardZone.cardSpawn.transform, false); Button cardButton = cardObject.AddComponent <Button>(); cardButton.onClick.AddListener(cardAsset.OnCardClick); Image cardImage = cardObject.AddComponent <Image>(); cardImage.sprite = cardAsset.PackSprite; cardAsset.CurrentCard = cardObject; return(cardButton); }
private static void _Saloon(Player init, PackAsset currentCard) { init.Hand.Remove(currentCard); PackAndDiscard.Instance.Discard(currentCard); init.UsedCard.Add(currentCard); foreach (Bot enemy in GlobalVeriables.Instance.Enemies) { if (!enemy.IsDead) { enemy.Heal(); } } }
public static IEnumerator Indians(Bot init, IndiansLogic currentCard) { init.Hand.Remove(currentCard); PackAndDiscard.Instance.Discard(currentCard); GlobalVeriables.Instance.audioSource.clip = currentCard.audioSource; GlobalVeriables.Instance.audioSource.Play(); foreach (Bot enemy in GlobalVeriables.Instance.Enemies) { if (enemy != init) { PackAsset bangCard = enemy.Hand.Find(asset => asset.CardName == ECardName.Bang); if (bangCard != null) { enemy.Hand.Remove(bangCard); PackAndDiscard.Instance.Discard(bangCard); } else { enemy.Hit(); } } } if (!GlobalVeriables.Instance.Player.IsDead) { List <PackAsset> bangs = new List <PackAsset>(GlobalVeriables.Instance.Player.Hand.FindAll(card => card.CardName == ECardName.Bang)); if (bangs.Count == 0) { GlobalVeriables.Instance.Player.Hit(); } else { GlobalVeriables.GameState = EGameState.Defense; GlobalVeriables.Instance.CardZone.ShowCardSpawn(true, false); GlobalVeriables.Instance.CardZone.ShowPermanentMessage("Drop bang or take hit"); foreach (PackAsset bang in bangs) { _CreateCard(bang); } } } else { yield return(new WaitForSeconds(GlobalVeriables.Instance.audioSource.time)); } }
private static void _CheckHealth() { if (_bot.CurrentHealth >= _bot.MaxHealth) { return; } PackAsset beer = _bot.Hand.Find(card => card.CardName == ECardName.Beer); if (beer != null && _bot.Heal()) { _bot.Hand.Remove(beer); PackAndDiscard.Instance.Discard(beer); _bot.UsingCard(beer); } }
private static void _Duel() { if (_bot.botEnemies.Count == 0) { return; } PackAsset duel = _bot.Hand.Find(card => card.CardName == ECardName.Duel); if (duel == null) { return; } DuelLogic.Duel(_bot, _bot.botEnemies[Random.Range(0, _bot.botEnemies.Count)], duel); _bot.UsingCard(duel); }
private static void _Jail() { if (_bot.botEnemies.Count == 0) { return; } PackAsset jail = _bot.Hand.Find(card => card.CardName == ECardName.Jail); if (jail == null) { return; } JailLogic.Jail(_bot, _bot.botEnemies[Random.Range(0, _bot.botEnemies.Count)], jail); _bot.UsingCard(jail); }
public override void OnCardClick() { /*if (GlobalVeriables.GameState == EGameState.DropCards) * { * GlobalVeriables.Instance.Player.Hand.Remove(this); * PackAndDiscard.Instance.Discard(this); * Destroy(CurrentCard.gameObject); * return; * }*/ base.OnCardClick(); List <Character> scopeEnemies = new List <Character>(); PackAsset usedBang = GlobalVeriables.Instance.Player.UsedCard.Find(card => card.CardName == ECardName.Bang); PackAsset rage = GlobalVeriables.Instance.Player.Buffs.Find(card => card.CardName == ECardName.Rage); if (usedBang != null && rage == null) { GlobalVeriables.Instance.CardZone.ShowMessage("You already use this card"); return; } if (usedBang == null) { scopeEnemies.AddRange(Actions.GetScopeEnemies(GlobalVeriables.Instance.Player, false)); } else if (usedBang != null && rage != null) { scopeEnemies.AddRange(Actions.GetScopeEnemies(GlobalVeriables.Instance.Player, true)); } if (scopeEnemies.Count == 0) { GlobalVeriables.Instance.CardZone.ShowMessage("You can't see anyone!"); return; } GlobalVeriables.Instance.audioSource.clip = shootAC; GlobalVeriables.Instance.CardZone.ClearCardSpawn(); foreach (Character enemy in scopeEnemies) { Button enemyButton = Actions.CreateCard(enemy); enemyButton.onClick.AddListener(delegate { _Bang((Bot)enemy, this); }); } }
private static void _Dynamite() { if (_bot.RoleInfo.Role == ERole.Assistant || _bot.RoleInfo.Role == ERole.Sheriff) { return; } PackAsset dynamite = _bot.Hand.Find(card => card.CardName == ECardName.Dynamite); if (dynamite == null) { return; } _bot.AddBuff(dynamite); _bot.UsingCard(dynamite); }