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); }
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); }
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; } }
// 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); }
// 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); } }
// 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 }
// // 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; }
// 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 } }
/// <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)); }
abstract public void BlockCrush(bool force, Transform parent, bool isDirect, E_CardType cardType);
// 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()); }
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++; } } }
// 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 } }
// 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]; } }