Example #1
0
        private Card GetOneCard(E_CardType cardType)
        {
            Card card = null;


            if (_dicCardPool.ContainsKey(cardType))
            {
                var queue = _dicCardPool[cardType];
                if (queue.Count > 0)
                {
                    card = queue.Dequeue();
                }
            }

            if (card == null)
            {
                //生成一个新的
                GameObject goPrefab = ResourceMgr.Instance.LoadAndInstanceGameObjectFromPreload(cardType.ToString());
                card          = goPrefab.GetComponent <Card>();
                card.CardType = cardType;
                card.name     = cardType.ToString();
            }

            _listCard.Add(card);

            card.Init();
            return(card);
        }
Example #2
0
        public Card GetOneCard(E_CardType cardType)
        {
            Card card = null;

            if (_dicCardPool.ContainsKey(cardType))
            {
                var queue = _dicCardPool[cardType];
                if (queue.Count > 0)
                {
                    card = queue.Dequeue();
                }
            }

            if (card == null)
            {
                //生成一个新的
                GameObject goPrefab;
                if (cardType == E_CardType.Stone)
                {
                    goPrefab = FightMgr.Instance.LoadAndInstantiate(string.Format(FightDefine.Prefab_Stone));
                }
                else
                {
                    goPrefab = FightMgr.Instance.LoadAndInstantiate(string.Format(FightDefine.Format_SimpleCardKey, cardType.ToString()));
                }

                card          = goPrefab.GetComponent <Card>();
                card.CardType = cardType;
                card.name     = cardType.ToString();
            }

            card.Init();
            return(card);
        }
Example #3
0
    public void OnCheckCondition1(Slot slot, E_CardType type)
    {
        if (slot != null)
        {
            switch (type)
            {
            case E_CardType.OneLine:
                CheckScene(1);    //全特效
                CheckScene(4);    //四消
                break;

            case E_CardType.CrossLine:
                CheckScene(1);    //全特效
                CheckScene(5);    //直角消
                break;

            case E_CardType.ThreeLine:
                CheckScene(1);    //全特效
                CheckScene(6);    //五消
                break;

            case E_CardType.Stone:
                CheckScene(1);    //全特效
                CheckScene(7);    //能量块
                break;
            }
            _defaultObject   = slot.gameObject;
            _defaultCardType = type;
        }
    }
Example #4
0
        // Creating a simple chip specified color
        public Card GetNewSimpleChip(int x, int y, int id)
        {
            Slot       slot     = FightMgr.Instance.FindSlot(x, y);
            E_CardType cardType = (E_CardType)System.Enum.Parse(typeof(E_CardType), string.Format("Fight_SimpleCard{0}", id + 1));
            Card       card     = CardMgr.Instance.GetOneCard(cardType);

            slot.SetChip(card);
            //card.transform.SetParent(slot.transform,false);

            //			DebugUtil.Debug("aa");
            return(card);
        }
Example #5
0
        // Crush block function
        public void  BlockCrush(int x, int y, bool radius, bool force = false)
        {
            BlockInterface b;
            Slot           s;
            Card           c;
            StoneChip      sc;
            Side           side;

            Slot      slot   = FightMgr.Instance.FindSlot(x, y);
            Transform parent = slot.transform;

            if (radius)
            {
                Card       cardTemp = slot.GetChip();
                E_CardType cardType = cardTemp == null ? E_CardType.None : cardTemp.CardType;
                for (int i = 0; i < Utils.straightSides.Length; i++)
                {
                    side = Utils.straightSides[i];
                    b    = null;
                    s    = null;
                    c    = null;
                    sc   = null;

                    b = GetBlock(x + Utils.SideOffsetX(side), y + Utils.SideOffsetY(side));
                    if (b && b.CanBeCrushedByNearSlot())
                    {
                        b.BlockCrush(force, parent.transform, false, cardType);
                    }

                    s = FightMgr.Instance.FindSlot(x + Utils.SideOffsetX(side), y + Utils.SideOffsetY(side));
                    if (s)
                    {
                        c = s.GetChip();
                    }
                    if (c != null)
                    {
                        sc = c.GetComponent <StoneChip>();
                    }
                    if (sc != null)
                    {
                        c.DestroyChip();
                    }
                }
            }

            b = GetBlock(x, y);
            if (b)
            {
                b.BlockCrush(force, parent, false, E_CardType.None);
            }
        }
Example #6
0
        // Crush block funtion
        override public void  BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None)
        {
            if (destroying)
            {
                return;
            }
            if (eventCountBorn == FightMgr.Instance.eventCount && !force)
            {
                return;
            }
            eventCountBorn = FightMgr.Instance.eventCount;
            //		level --;
            //FieldAssistant.Instance.field.blocks[slot.Row, slot.Col] = level;

//			if (level == 0)
//			{
//				slot.gravity = true;
////	            slot.SetScore(1);
//	            slot.SetBlock(null);
//	            SlotGravity.Reshading();
//	            StartCoroutine(DestroyingRoutine());
//				return;
//			}



//				#if !FightTest
//				FightMgr.Instance.AttackBoss();
//				#endif
        }
Example #7
0
//
//		void Start ()
//		{
//			transform.rotation = Quaternion.Euler (0, 0, Random.Range (0f, 360f));
//		}
//
        #region implemented abstract members of BlockInterface

        public override void BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None)
        {
//			if (eventCountBorn == SessionControl.Instance.eventCount && !force) return;
//			if (destroying) return;
//			eventCountBorn = SessionControl.Instance.eventCount;
//			GameObject o = ResourceMgr.Instance.LoadAndInstanceGameObjectFromPreload(crushEffect);
//			o.transform.position = transform.position;
//	        slot.gravity = true;
////	        slot.SetScore(1);
//			SlotGravity.Reshading();
//			Destroy(gameObject);
            return;
        }
Example #8
0
        // Crush block funtion
        override public void  BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None)
        {
            if (destroying)
            {
                return;
            }
            if (eventCountBorn == FightMgr.Instance.eventCount && !force)
            {
                return;
            }
            eventCountBorn = FightMgr.Instance.eventCount;
            //		level --;
            //FieldAssistant.Instance.field.blocks[slot.Row, slot.Col] = level;

//			if (level == 0)
//			{
//				slot.gravity = true;
////	            slot.SetScore(1);
//	            slot.SetBlock(null);
//	            SlotGravity.Reshading();
//	            StartCoroutine(DestroyingRoutine());
//				return;
//			}

            if (cardType != E_CardType.None && !_isActive && level > 0)
            {
                int colorIndex = (int)cardType + 1;
                if (spritesColor.Length <= colorIndex)
                {
                    //超出范围
                    return;
                }

                Color color = spritesColor[colorIndex];
                if (!IsActiveColor(color))
                {
                    //改变颜色
                    bool isAllColored = ActiveColor(color);
                    if (isAllColored)
                    {
                        //激活风车
                        _isActive   = true;
                        _passedTime = 0;
                        StartTimer(10);

                        anim["Rotate"].speed = 2f;
                        anim.Play("Rotate");
                        _timerSpeed  = 0f;
                        _targetAngle = 0;
                    }
                    else
                    {
                        //移动90度
                        _targetAngle  -= 90;
                        _startRotate90 = true;
                    }
                }

//				#if !FightTest
//				FightMgr.Instance.AttackBoss();
//				#endif
            }
        }
Example #9
0
        /// <summary>
        /// 获取一个普通的卡片
        /// </summary>
        /// <returns>The one simple card.</returns>
        /// <param name="cardId">Card identifier.</param>
        public Card GetOneSimpleCard(int cardId)
        {
            E_CardType cardType = (E_CardType)System.Enum.Parse(typeof(E_CardType), string.Format("SimpleCard{0}", cardId + 1));

            return(GetOneCard(cardType));
        }
Example #10
0
 abstract public void BlockCrush(bool force, Transform parent, bool isDirect, E_CardType cardType);
Example #11
0
        // Crush block funtion
        override public void BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None)
        {
            if (eventCountBorn == FightMgr.Instance.eventCount && !force)
            {
                return;
            }
            if (destroying)
            {
                return;
            }

            lastWeedCrush = FightMgr.Instance.swapEvent;

            eventCountBorn = FightMgr.Instance.eventCount;

//	        slot.SetScore(1);
            StartCoroutine(DestroyingRoutine());
        }
Example #12
0
        public void CreateLine(int exploreIndex, Point pointFrom, E_CardType type, Side side, ref List <Slot> list, bool isMain = true)
        {
//			Slot slot = FightMgr.Instance.FindSlot(pointFrom.X,pointFrom.Y);
//			if(slot == null || slot.Card == null || slot.Block != null)
//			{
//				//直接生成一个
//				//createType = type;
//			}
//			else
//			{
//				Card card = slot.Card;
//				if(card.CardType != E_CardType.OneLine && card.CardType != E_CardType.CrossLine && card.CardType != E_CardType.ThreeLine)
//					return;
//			}

            int centerX = pointFrom.X;
            int centerY = pointFrom.Y;

            if (type == E_CardType.OneLine)
            {
                //生成一个显示区域
                for (int i = 0; i < _length; i++)
                {
                    Point point = new Point(centerX + i * Utils.SideOffsetX(side), centerY + i * Utils.SideOffsetY(side));
                    CreateOne(exploreIndex, point, side, ref list, isMain, pointFrom);
                    exploreIndex++;
                }
            }
            else if (type == E_CardType.CrossLine)
            {
                Side side2 = Utils.RotateSide(side, 2);
                Side side3 = Utils.RotateSide(side, 4);
                Side side4 = Utils.RotateSide(side, 6);
                for (int i = 0; i < _length; i++)
                {
                    Point point = new Point(centerX + i * Utils.SideOffsetX(side), centerY + i * Utils.SideOffsetY(side));
                    CreateOne(exploreIndex, point, side, ref list, isMain, pointFrom);

                    Point point2 = new Point(centerX + i * Utils.SideOffsetX(side2), centerY + i * Utils.SideOffsetY(side2));
                    CreateOne(exploreIndex, point2, side2, ref list, isMain, pointFrom);

                    Point point3 = new Point(centerX + i * Utils.SideOffsetX(side3), centerY + i * Utils.SideOffsetY(side3));
                    CreateOne(exploreIndex, point3, side3, ref list, isMain, pointFrom);

                    Point point4 = new Point(centerX + i * Utils.SideOffsetX(side4), centerY + i * Utils.SideOffsetY(side4));
                    CreateOne(exploreIndex, point4, side4, ref list, isMain, pointFrom);

                    exploreIndex++;
                }
            }
            else if (type == E_CardType.ThreeLine)
            {
                for (int i = 0; i < _length; i++)
                {
                    Point point = new Point(centerX + i * Utils.SideOffsetX(side), centerY + i * Utils.SideOffsetY(side));
                    CreateOne(exploreIndex, point, side, ref list, isMain, pointFrom);
                    Point p1 = new Point(point.X, point.Y);
                    Point p2 = new Point(point.X, point.Y);
                    if (side == Side.Left || side == Side.Right)
                    {
                        p1.Y -= 1;
                        p2.Y += 1;
                    }
                    else
                    {
                        p1.X -= 1;
                        p2.X += 1;
                    }
                    CreateOne(exploreIndex, p1, side, ref list, isMain, pointFrom);
                    CreateOne(exploreIndex, p2, side, ref list, isMain, pointFrom);

                    exploreIndex++;
                }
            }
        }
Example #13
0
        // Crush block funtion
        override public void  BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None)
        {
            if (destroying)
            {
                return;
            }
            if (eventCountBorn == FightMgr.Instance.eventCount && !force)
            {
                return;
            }
            eventCountBorn = FightMgr.Instance.eventCount;
            //		level --;
            //FieldAssistant.Instance.field.blocks[slot.Row, slot.Col] = level;

            if (level == 0)
            {
                slot.gravity = true;
//	            slot.SetScore(1);
                slot.SetBlock(null);
                SlotGravity.Reshading();
                StartCoroutine(DestroyingRoutine());
                return;
            }

            if (level > 0)
            {
//				#if !FightTest
//				FightMgr.Instance.AttackBoss();
//				#endif

                                #if !FightTest
                E_AddEnergyType addType = isDirect ? E_AddEnergyType.Powup : E_AddEnergyType.Normal;
//				FightMgr.Instance.AddEnergy(addType);
                EnergyMgr.Instance.AddEnergySmall(parent, addType);
                                #endif
            }
        }
Example #14
0
        // Crush block funtion
        override public void  BlockCrush(bool force, Transform parent, bool isDirect = false, E_CardType cardType = E_CardType.None)
        {
            if (destroying)
            {
                return;
            }
            if (eventCountBorn == FightMgr.Instance.eventCount && !force)
            {
                return;
            }

            eventCountBorn = FightMgr.Instance.eventCount;
            level--;
            FieldMgr.field.blocks[slot.Point.X, slot.Point.Y] = level;
            if (level == 0)
            {
                slot.gravity = true;
//	            slot.SetScore(1);
                slot.SetBlock(null);
                SlotGravity.Reshading();
                StartCoroutine(DestroyingRoutine());
                return;
            }
            if (level > 0)
            {
                anim.Play("BlockCrush");
                                #if !FightTest
                MusicManager.Instance.PlaySoundEff("Music/BlockHit");
                                #endif
                _uiSprite.spriteName = spritesName[level - 1];
            }
        }