Silverfish重構【1】-發現卡牌的函數


前言

假期估計時間會比較多,能重構多少是多少,主要還是鍛煉一下自己的思維和編程能力。由於能力和精力有限,可能會有錯誤,希望大家能夠指出。

今天新開始從playfield中抽牌的函數動手吧,很多小白不理解參數的意思,索性全部寫死。廢話不多說,直接上代碼。

由於我是雲玩家,很多卡牌觸發與否和觸發順序不太清楚,希望大家指出錯誤。

        /// <summary>
        /// 發現卡牌等(凡是不從牌庫抽的都調用這個方法)
        /// </summary>
        /// <param name="ss">發現的牌的名字</param>
        /// <param name="own">是否是自己發現</param>
        public void DiscoverACard(CardDB.cardName ss, bool own)
        {
            CardDB.cardName s = ss;

            // cant hold more than 10 cards
            if (own)
            {

                if (s == CardDB.cardName.unknown)
                {
                    if (this.owncards.Count >= 10)
                    {
                        this.evaluatePenality += 15;
                        return;
                    }
                    this.owncarddraw++;
                }
                else
                {
                    if (this.owncards.Count >= 10)
                    {
                        this.evaluatePenality += 5;
                        return;
                    }
                    this.owncarddraw++;
                }
            }
            else
            {
                if (s == CardDB.cardName.unknown)
                {
                        if (this.enemyAnzCards >= 10)
                        {
                            this.evaluatePenality -= (this.turnCounter > 2) ? 20 : 50;
                            return;
                        }
                        this.enemycarddraw++;
                        this.enemyAnzCards++;
                }
                else
                {
                    if (this.enemyAnzCards >= 10)
                    {
                        this.evaluatePenality -= (this.turnCounter > 2) ? 20 : 50;
                        return;
                    }
                    this.enemycarddraw++;
                    this.enemyAnzCards++;
                }
                this.triggerCardsChanged(false);

                //據說克洛瑪古斯不觸發
                //if (anzEnemyChromaggus > 0 && s == CardDB.cardName.unknown)
                //{
                //    for (int i = 1; i <= anzEnemyChromaggus; i++)
                //    {
                //        if (this.enemyAnzCards >= 10)
                //        {
                //            this.evaluatePenality -= (this.turnCounter > 2) ? 20 : 50;
                //            return;
                //        }
                //        this.enemycarddraw++;
                //        this.enemyAnzCards++;
                //        this.triggerCardsChanged(false);

                //    }
                //}
                return;
            }

            if (s == CardDB.cardName.unknown)
            {
                CardDB.Card c = CardDB.Instance.getCardData(s);
                Handmanager.Handcard hc = new Handmanager.Handcard { card = c, position = this.owncards.Count + 1, manacost = 1000, entity = this.getNextEntity() };
                this.owncards.Add(hc);
                this.triggerCardsChanged(true);
            }
            else
            {
                CardDB.Card c = CardDB.Instance.getCardData(s);
                Handmanager.Handcard hc = new Handmanager.Handcard { card = c, position = this.owncards.Count + 1, manacost = c.calculateManaCost(this), entity = this.getNextEntity() };
                this.owncards.Add(hc);
                this.triggerCardsChanged(true);
            }

            //據說克洛瑪古斯不觸發
            //if (anzOwnChromaggus > 0 && s == CardDB.cardName.unknown)
            //{
            //    CardDB.Card c = CardDB.Instance.getCardData(s);
            //    for (int i = 1; i <= anzOwnChromaggus; i++)
            //    {
            //        if (this.owncards.Count >= 10)
            //        {
            //            this.evaluatePenality += 15;
            //            return;
            //        }
            //        this.owncarddraw++;

            //        Handmanager.Handcard hc = new Handmanager.Handcard { card = c, position = this.owncards.Count + 1, manacost = 1000, entity = this.getNextEntity() };
            //        this.owncards.Add(hc);
            //        this.triggerCardsChanged(true);
            //    }
            //}
        }

 

        /// <summary>
        /// 發現卡牌等(凡是不從牌庫抽的都調用這個方法)
        /// </summary>
        /// <param name="ss">發現的牌的ID</param>
        /// <param name="own">是否是自己發現</param>
        public void DiscoverACard(CardDB.cardIDEnum ss, bool own)
        {
            CardDB.cardIDEnum s = ss;

            // cant hold more than 10 cards

            if (own)
            {
                if (s == CardDB.cardIDEnum.None)
                {
                    if (this.owncards.Count >= 10)
                    {
                        this.evaluatePenality += 15;
                        return;
                    }
                    this.owncarddraw++;
                }
                else
                {
                    if (this.owncards.Count >= 10)
                    {
                        this.evaluatePenality += 5;
                        return;
                    }
                    this.owncarddraw++;
                }
            }
            else
            {
                if (s == CardDB.cardIDEnum.None)
                {
                    if (this.enemyAnzCards >= 10)
                    {
                        this.evaluatePenality -= (this.turnCounter > 2) ? 20 : 50;
                        return;
                    }
                    this.enemycarddraw++;
                    this.enemyAnzCards++;
                }
                else
                {
                    if (this.enemyAnzCards >= 10)
                    {
                        this.evaluatePenality -= (this.turnCounter > 2) ? 20 : 50;
                        return;
                    }
                    this.enemycarddraw++;
                    this.enemyAnzCards++;

                }
                this.triggerCardsChanged(false);

                //if (anzEnemyChromaggus > 0 && s == CardDB.cardIDEnum.None)
                //{
                //    for (int i = 1; i <= anzEnemyChromaggus; i++)
                //    {
                //        if (this.enemyAnzCards >= 10)
                //        {
                //            this.evaluatePenality -= (this.turnCounter > 2) ? 20 : 50;
                //            return;
                //        }
                //        this.enemycarddraw++;
                //        this.enemyAnzCards++;
                //        this.triggerCardsChanged(false);
                //    }
                //}
                return;
            }

            if (s == CardDB.cardIDEnum.None)
            {
                CardDB.Card c = CardDB.Instance.getCardDataFromID(s);
                Handmanager.Handcard hc = new Handmanager.Handcard { card = c, position = this.owncards.Count + 1, manacost = 1000, entity = this.getNextEntity() };
                this.owncards.Add(hc);
                this.triggerCardsChanged(true);
            }
            else
            {
                CardDB.Card c = CardDB.Instance.getCardDataFromID(s);
                Handmanager.Handcard hc = new Handmanager.Handcard { card = c, position = this.owncards.Count + 1, manacost = c.calculateManaCost(this), entity = this.getNextEntity() };
                this.owncards.Add(hc);
                this.triggerCardsChanged(true);
            }

            //if (anzOwnChromaggus > 0 && s == CardDB.cardIDEnum.None && !nopen)
            //{
            //    CardDB.Card c = CardDB.Instance.getCardDataFromID(s);
            //    for (int i = 1; i <= anzOwnChromaggus; i++)
            //    {
            //        if (this.owncards.Count >= 10)
            //        {
            //            this.evaluatePenality += 15;
            //            return;
            //        }
            //        this.owncarddraw++;

            //        Handmanager.Handcard hc = new Handmanager.Handcard { card = c, position = this.owncards.Count + 1, manacost = 1000, entity = this.getNextEntity() };
            //        this.owncards.Add(hc);
            //        this.triggerCardsChanged(true);
            //    }
            //}

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM