Beispiel #1
0
        protected override void OnExecuteEvent(VEntity entity)
        {
            CardZoneMoveEvent     eventity = VEntityComponentSystemManager.GetVComponent <CardZoneMoveEvent>(entity);
            CardZoneDataComponent comp     = ecsManager.GetVSingletonComponent <CardZoneDataComponent>();

            if (eventity.source != Zone.NULL)
            {
                //Assert.IsTrue(comp.zones[eventity.source].Contains(eventity.card));
                if (!comp.zones[eventity.source].Contains(eventity.card))
                {
                    return; //HACK
                }
                comp.zones[eventity.source].Remove(eventity.card);
                comp.zones[eventity.destination].Add(eventity.card);
            }
            else
            {
                comp.zones[eventity.destination].Add(eventity.card);
            }

            ecsManager.QueueAnimationEvent(ecsManager.CreateEntity("CardMovementAnimation", component: new CardZoneMoveEvent {
                source      = eventity.source,
                destination = eventity.destination,
                card        = eventity.card
            }));
        }
 protected override void OnBeforeEvent(VEntity entity)
 {
     if (VEntityComponentSystemManager.GetVComponent <SetLifecycleEventComponent>(entity).newVLifecycle == VLifecycle.PlayerTurnStart)
     {
         CardZoneDataComponent cardZoneData = ecsManager.GetVSingletonComponent <CardZoneDataComponent>();
         ecsManager.ExecuteImmediateEvent("discardCards", component: new CardDiscardEvent {
             cardIds = cardZoneData.zones[Zone.HAND].ToArray()
         });
     }
 }
        public bool IsPlayable(string cardId)
        {
            VEntity cardEntity = ecsManager.GetVEntityById(cardId);
            CardZoneDataComponent     cardZoneData  = ecsManager.GetVSingletonComponent <CardZoneDataComponent>();
            PlayerManaComponent       mana          = ecsManager.GetVSingletonComponent <PlayerManaComponent>();
            CurrentLifecycleComponent currLifecycle = ecsManager.GetVSingletonComponent <CurrentLifecycleComponent>();

            //HACK
            return(currLifecycle.currentLifecycle == VLifecycle.PlayerTurnExecute && (cardZoneData.zones[Zone.HAND].Contains(cardId) || (cardEntity.GetVComponent <CardNameComponent>().name == "Cantrip" && !ecsManager.GetSystem <CantripSystem>().cantripUsed)) && cardEntity.GetVComponent <ManaCostComponent>().cost <= mana.currMana);
        }
Beispiel #4
0
        protected override void OnExecuteEvent(VEntity entity)
        {
            CardDrawEvent         cardDraw            = entity.GetVComponent <CardDrawEvent>();
            CardZoneDataComponent zoneData            = ecsManager.GetVSingletonComponent <CardZoneDataComponent>();
            PlayerHandComponent   PlayerHandComponent = ecsManager.GetVSingletonComponent <PlayerHandComponent>();

            for (int cardDrawIndex = 0; cardDrawIndex < cardDraw.numCards; ++cardDrawIndex)
            {
                // get top card of deck
                //If deck is empty, shuffle discard into deck
                if (zoneData.zones[Zone.DECK].Count == 0)
                {
                    //If there is no discard pile, draw fizzles.
                    if (zoneData.zones[Zone.DISCARD].Count == 0)
                    {
                        return;
                    }
                    for (int i = zoneData.zones[Zone.DISCARD].Count - 1; i >= 0; i--)
                    {
                        ecsManager.ExecuteImmediateEvent("moveZone", component: new CardZoneMoveEvent {
                            source      = Zone.DISCARD,
                            destination = Zone.DECK,
                            card        = zoneData.zones[Zone.DISCARD][i]
                        });
                    }
                    DeckHelper.Shuffle(zoneData.zones[Zone.DECK]);
                }

                string cardToDraw = zoneData.zones[Zone.DECK][0];
                //If there's space, draw, else discard.
                if (zoneData.zones[Zone.HAND].Count < PlayerHandComponent.maxHandSize)
                {
                    ecsManager.ExecuteImmediateEvent("moveZone", component: new CardZoneMoveEvent {
                        source      = Zone.DECK,
                        destination = Zone.HAND,
                        card        = cardToDraw
                    });
                }
                else
                {
                    ecsManager.ExecuteImmediateEvent("moveZone", component: new CardZoneMoveEvent {
                        source      = Zone.DECK,
                        destination = Zone.DISCARD,
                        card        = cardToDraw
                    });
                }
            }
        }
Beispiel #5
0
        protected override void OnExecuteEvent(VEntity entity)
        {
            CardDiscardEvent      discardedCards      = entity.GetVComponent <CardDiscardEvent>();
            CardZoneDataComponent zoneData            = ecsManager.GetVSingletonComponent <CardZoneDataComponent>();
            PlayerHandComponent   PlayerHandComponent = ecsManager.GetVSingletonComponent <PlayerHandComponent>();

            foreach (string cardToDiscard in zoneData.zones[Zone.HAND].ToArray())
            {
                if (Array.IndexOf(discardedCards.cardIds, cardToDiscard) >= 0)
                {
                    ecsManager.ExecuteImmediateEvent("moveZone", component: new CardZoneMoveEvent {
                        source      = Zone.HAND,
                        destination = Zone.DISCARD,
                        card        = cardToDiscard
                    });
                }
            }
        }
Beispiel #6
0
        protected override void OnExecuteEvent(VEntity entity)
        {
            CellContent[, ] _currLevel = levelToLoad.levelData;
            for (int i = 0; i < _currLevel.GetLength(0); i++)
            {
                for (int j = 0; j < _currLevel.GetLength(1); j++)
                {
                    Coord c = new Coord(j, i);
                    if (_currLevel[i, j].unitData != null)
                    {
                        EntityScriptableObject unitDataObject = _currLevel[i, j].unitData;
                        ecsManager.CreateEvent("UnitCreate", component: new UnitCreateEvent {
                            position        = c,
                            entityBlueprint = unitDataObject.entity
                        });
                    }
                }
            }

            for (int i = 0; i < _currLevel.GetLength(0); i++)
            {
                for (int j = 0; j < _currLevel.GetLength(1); j++)
                {
                    Coord c = new Coord(j, i);
                    // create events for making cells
                    ecsManager.CreateEvent("CellCreate", component: new CreateTerrainCellEvent {
                        coord        = c,
                        movementCost = _currLevel[i, j].cellStruct.MovementCost,
                        cellType     = _currLevel[i, j].cellStruct.cellType
                    });
                }
            }

            //Initialize Deck

            /* foreach(string cardEntityId in deckListObject.decklist) {
             *  //ecsManager.CreateEvent
             * }*/

            CardZoneDataComponent cardZones = ecsManager.GetVSingletonComponent <CardZoneDataComponent>();
            List <VEntity>        cards     = new List <VEntity>();

            foreach (string cardName in deckList.cardNames)
            {
                // look up card in card database

                EntityScriptableObject cardEntity = cardDatabase.Cards.Find((scriptableObject) => scriptableObject.entity.GetVComponent <CardNameComponent>().name == cardName);
                Assert.IsNotNull(cardEntity);
                VEntity newCardEntity = ecsManager.InsantiateEntityFromBlueprint(cardEntity.entity);
                newCardEntity.GetVComponent <CardDisplayComponent>().cardDisplay = CardViewController.Instance.InitCard(newCardEntity);
                cards.Add(newCardEntity);

                ecsManager.ExecuteImmediateEvent("AddCardToZone", component: new CardZoneMoveEvent {
                    source      = Zone.NULL,
                    destination = Zone.DECK,
                    card        = newCardEntity.id,
                });
            }

            CardGameObject         cantrip       = GameObject.FindGameObjectWithTag("cantrip").GetComponent <CardGameObject>();
            EntityScriptableObject cantripEntity = cardDatabase.Cards.Find((scriptableObject) => scriptableObject.entity.GetVComponent <CardNameComponent>().name == "Cantrip");

            Assert.IsNotNull(cantripEntity);
            VEntity newCantripEntity = ecsManager.InsantiateEntityFromBlueprint(cantripEntity.entity);

            newCantripEntity.GetVComponent <CardDisplayComponent>().cardDisplay = CardViewController.Instance.InitCard(newCantripEntity);
            cards.Add(newCantripEntity);
            cantrip.cardEntityId = newCantripEntity.id;
            Debug.Log("Name: " + newCantripEntity.GetVComponent <CardNameComponent>().name);
            cantrip.cantrip = true;
            DeckHelper.Shuffle(cardZones.zones[Zone.DECK]);
            //HACK
        }