Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
 private static void _DropBangCard(PackAsset bangCard)
 {
     GlobalVeriables.GameState = EGameState.Move;
     GlobalVeriables.Instance.Player.Hand.Remove(bangCard);
     PackAndDiscard.Instance.Discard(bangCard);
     GlobalVeriables.Instance.CardZone.Close();
 }
Beispiel #3
0
    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));
    }
Beispiel #4
0
    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); });
        }
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
 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);
         }
     }
 }
Beispiel #7
0
    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);
        }
    }
Beispiel #8
0
    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;
            }
        }
    }
Beispiel #9
0
    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);
    }
Beispiel #10
0
    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();
    }
Beispiel #11
0
    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();
    }
Beispiel #12
0
    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); });
    }
Beispiel #13
0
    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;
    }
Beispiel #14
0
    //Random select card
    public PackAsset GetRandomCard()
    {
        if (pack.Count == 0)
        {
            RemixPack();
        }
        PackAsset card = pack[Random.Range(0, pack.Count)];

        pack.Remove(card);
        return(card);
    }
Beispiel #15
0
    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);
    }
Beispiel #16
0
    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);
    }
Beispiel #17
0
    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);
    }
Beispiel #18
0
    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();
    }
Beispiel #19
0
    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);
    }
Beispiel #20
0
 /// <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);
     }
 }
Beispiel #21
0
    private static bool _CheckJail()
    {
        PackAsset randomCard = PackAndDiscard.Instance.GetRandomCard();

        PackAndDiscard.Instance.Discard(randomCard);

        if (randomCard.CardSuit == ECardSuit.Hearts)
        {
            return(true);
        }

        return(false);
    }
Beispiel #22
0
    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);
    }
Beispiel #23
0
    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);
    }
Beispiel #24
0
    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();
            }
        }
    }
Beispiel #25
0
    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));
        }
    }
Beispiel #26
0
    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);
        }
    }
Beispiel #27
0
    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);
    }
Beispiel #28
0
    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);
    }
Beispiel #29
0
    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); });
        }
    }
Beispiel #30
0
    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);
    }