Ejemplo n.º 1
0
 public void handle(GameEvent e, EventTiming t)
 {
     if (t == timing && filter(e))
     {
         action(e);
     }
 }
Ejemplo n.º 2
0
        public void handleEvent(GameEvent e)
        {
            LinkedList<TriggeredAbility>[] timingLists =
            {
                new LinkedList<TriggeredAbility>(),
                new LinkedList<TriggeredAbility>(),
                new LinkedList<TriggeredAbility>(),
            };
            //THIS NEEDS TO GO
            foreach (var l in timingLists)
            {
                l.Clear();
            }

            foreach (Card c in game.allCards)
            {
                foreach (TriggeredAbility a in c.triggeredAbilities)
                {
                    if (a.filter(e))
                    {
                        timingLists[(int)a.timing].AddLast(a);
                    }
                }
            }

            timingListLambda(timingLists[(int)EventTiming.Pre]);

            int i = (int)e.type;

            //todo(seba) implement instead of
            if (baseEventHandlers[i] != null)
            {
                baseEventHandlers[i].handle(e, EventTiming.Main);
            }

            timingListLambda(timingLists[(int)EventTiming.Post]);
        }
Ejemplo n.º 3
0
 private void _step(GameEvent gevent)
 {
 }
Ejemplo n.º 4
0
 private void _shuffle(GameEvent gevent)
 {
     ShuffleDeckEvent e = (ShuffleDeckEvent)gevent;
     shuffleDeck(e.player);
 }
Ejemplo n.º 5
0
 private void _movecard(GameEvent gevent)
 {
     MoveCardEvent e = (MoveCardEvent)gevent;
     moveCardTo(e.card, e.to);
     e.card.moveReset();
     e.card.owner.notifyObservers();
 }
Ejemplo n.º 6
0
 protected override GameEvent[] resolve(GameInterface ginterface, Target t, Card resolvingCard)
 {
     GameEvent[] r = new GameEvent[cards.Length];
     Player p = t.player;
     for (int i = 0; i < cards.Length; i++)
     {
         r[i] = new SummonTokenEvent(p, cards[i]);
     }
     return r;
 }
Ejemplo n.º 7
0
        private bool vanillaETB(GameEvent e)
        {
            if (e.type != GameEventType.MOVECARD) { return false; }
            MoveCardEvent moveEvent = (MoveCardEvent)e;

            return moveEvent.to.pile == LocationPile.FIELD;
        }
Ejemplo n.º 8
0
 public override GameEvent[] pay(Card c, GameInterface gi, int[] i)
 {
     GameEvent[] r = new GameEvent[i.Length];
     for (int v = 0; v < r.Length; v++)
     {
         r[v] = new ExhaustEvent(gi.getCardById(i[v]));
     }
     return r;
 }
Ejemplo n.º 9
0
 private void _exhaust(GameEvent gevent)
 {
     ExhaustEvent e = (ExhaustEvent)gevent;
     e.card.exhausted = true;
 }
Ejemplo n.º 10
0
        private void _draw(GameEvent gevent)
        {
            DrawEvent e = (DrawEvent)gevent;

            int i = 0;
            while (i++ < e.cardCount)
            {
                handleEvent(new MoveCardEvent(e.player.deck.peek(), e.player.hand.location));
            }
            e.player.notifyObservers();
        }
Ejemplo n.º 11
0
 private void _damageplayer(GameEvent gevent)
 {
     DamagePlayerEvent e = (DamagePlayerEvent)gevent;
     e.player.setLifeRelative(-e.damage);
 }
Ejemplo n.º 12
0
 private void _damagecreature(GameEvent gevent)
 {
     DamageCreatureEvent e = (DamageCreatureEvent)gevent;
     e.creature.damage(e.damage);
 }
Ejemplo n.º 13
0
        private void _counterspell(GameEvent gevent)
        {
            CounterSpellEvent e = (CounterSpellEvent)gevent;
            Stack<StackWrapper> xd = new Stack<StackWrapper>();
            while (true)
            {
                StackWrapper w = stackxd.Pop();
                if (w.card == e.card)
                {
                    break;
                }
                xd.Push(w);
            }
            while (xd.Count > 0)
            {
                stackxd.Push(xd.Pop());
            }

            handleEvent(new MoveCardEvent(e.card, LocationPile.GRAVEYARD));
        }
Ejemplo n.º 14
0
        private void _cast(GameEvent gevent)
        {
            CastEvent e = (CastEvent)gevent;
            StackWrapper v = e.getStackWrapper();
            //v.card = v.card.createDummy();
            Card card = v.card;

            moveCardTo(card, game.stack);
            stackxd.Push(v);
            v.card.stackWrapper = v;

            v.card.owner?.notifyObservers();
        }
Ejemplo n.º 15
0
 private void _summontoken(GameEvent gevent)
 {
     SummonTokenEvent e = (SummonTokenEvent)gevent;
     Card card = game.makeCard(e.player, e.id);
     handleEvent(new MoveCardEvent(card, LocationPile.FIELD));
 }
Ejemplo n.º 16
0
 private void _topcard(GameEvent gevent)
 {
     TopEvent e = (TopEvent)gevent;
     e.card.exhausted = true;
 }
Ejemplo n.º 17
0
 private void _gainbonusmana(GameEvent gevent)
 {
     GainBonusManaEvent e = (GainBonusManaEvent)gevent;
     e.player.addBonusMana(e.colour, 1);
 }
Ejemplo n.º 18
0
        private bool friendlyETB(GameEvent e)
        {
            if (e.type != GameEventType.MOVECARD) { return false; }
            MoveCardEvent moveEvent = (MoveCardEvent)e;

            return moveEvent.to.pile == LocationPile.FIELD && moveEvent.card.controller == this.controller;
        }
Ejemplo n.º 19
0
 private void _gainlife(GameEvent gevent)
 {
     GainLifeEvent e = (GainLifeEvent)gevent;
     e.player.setLifeRelative(e.life);
 }
Ejemplo n.º 20
0
 protected override GameEvent[] resolve(GameInterface ginterface, Target t, Card resolvingCard)
 {
     GameEvent[] r = new GameEvent[colours.Length];
     for (int i = 0; i < r.Length; i++)
     {
         r[i] = new GainBonusManaEvent(t.player, colours[i]);
     }
     return r;
 }
Ejemplo n.º 21
0
 private void _gainmanaorb(GameEvent gevent)
 {
     GainManaOrbEvent e = (GainManaOrbEvent)gevent;
     e.player.addMana(e.getColor());
 }
Ejemplo n.º 22
0
 private void _modifycard(GameEvent gevent)
 {
     ModifyCardEvent e = (ModifyCardEvent)gevent;
     e.card.modify(e.modifiable, e.value, e.clojure);
 }
Ejemplo n.º 23
0
 private void _untopplayer(GameEvent gevent)
 {
     //todo(seba) make this raise UNTOPCARD events
     UntopPlayerEvent e = (UntopPlayerEvent)gevent;
     e.player.untop();
 }