public override void afterEvent(CardEngine engine, Event e)
 {
     Player[] sortedPlayers = engine.getProp <Player[]>("sortedPlayers");
     if (e.name is "onInitReplace")
     {
         //玩家准备完毕
         e.getProp <Player>("player").setProp("prepared", true);
         //判断是否所有玩家都准备完毕
         if (engine.getPlayers().All(p => { return(p.getProp <bool>("prepared")); }))
         {
             //对战开始
             engine.start();
         }
     }
     else if (e.name == "onStart")
     {
         engine.turnStart(sortedPlayers[0]);
     }
     else if (e.name == "onTurnEnd")
     {
         int index = Array.IndexOf(sortedPlayers, engine.getProp <Player>("currentPlayer"));
         index++;
         if (index >= sortedPlayers.Length)
         {
             index = 0;
         }
         Player nextPlayer = sortedPlayers[index];
         engine.turnStart(nextPlayer);
     }
 }
Beispiel #2
0
        public void removeBuffWhenInjureTest()
        {
            CardEngine game = new CardEngine(null, null, 0)
            {
                logger = new UnityLogger()
            };
            Card card = new Card(0);

            card.setLife(5);
            card.setCurrentLife(5);
            TestBuff buff = new TestBuff(new LifeModifier(3, true));

            card.addBuff(game, buff);
            Assert.AreEqual(3, card.getLife());
            Assert.AreEqual(3, card.getCurrentLife());
            card.removeBuff(game, buff);
            Assert.AreEqual(5, card.getLife());
            Assert.AreEqual(5, card.getCurrentLife());
            card.addBuff(game, buff);
            Assert.AreEqual(3, card.getLife());
            Assert.AreEqual(3, card.getCurrentLife());
            //不满血
            card.setCurrentLife(1);
            card.removeBuff(game, buff);
            Assert.AreEqual(5, card.getLife());
            Assert.AreEqual(1, card.getCurrentLife());
        }
Beispiel #3
0
        EventWitness[] generateWitnessTree(CardEngine engine, Player player, Event e)
        {
            List <EventWitness> wlist = new List <EventWitness>();

            if (e is VisibleEvent)
            {
                EventWitness w = (e as VisibleEvent).getWitness(engine, player);
                for (int i = 0; i < e.before.Count; i++)
                {
                    wlist.AddRange(generateWitnessTree(engine, player, e.before[i]));
                }
                for (int i = 0; i < e.child.Count; i++)
                {
                    w.child.AddRange(generateWitnessTree(engine, player, e.child[i]));
                }
                wlist.Add(w);
                for (int i = 0; i < e.after.Count; i++)
                {
                    wlist.AddRange(generateWitnessTree(engine, player, e.after[i]));
                }
                return(wlist.ToArray());
            }
            else
            {
                for (int i = 0; i < e.child.Count; i++)
                {
                    wlist.AddRange(generateWitnessTree(engine, player, e.child[i]));
                }
                return(wlist.ToArray());
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection();

            ConfigureServices(serviceCollection);
            var serviceProvider = serviceCollection.BuildServiceProvider();
            var context         = serviceProvider.GetRequiredService <AppDbContext>();

            DbInitializer.Initialize(serviceProvider);

            var engine = new CardEngine(null, new ProcessCardFactory(null, new CardSettingsRepository(context)), new Policy {
                Brand        = BrandType.Mastercard, Amount = 40,
                DeferPayment = DeferPaymentType.OnePayment
            });

            try
            {
                var response = engine.CreatePayment();
                System.Console.WriteLine(JsonSerializer.Serialize(response));
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
            }
            System.Console.ReadLine();
        }
Beispiel #5
0
        public void registerEffectTest()
        {
            CardEngine game = new CardEngine();

            game.triggers = new GameObject(typeof(TriggerManager).Name).AddComponent <TriggerManager>();
            Card card = new Card();

            _ = card.addBuff(game, new TestBuff());
        }
        private static SyncTriggerSystem createSystem()
        {
            CardEngine game = new CardEngine
            {
                time = new GameObject(nameof(TimeManager)).AddComponent <TimeManager>()
            };

            return(game.trigger);
        }
Beispiel #7
0
 public override void execute(CardEngine engine, Player player, Card card, Card[] targetCards)
 {
     try
     {
         engine.runAction(actionScript, new EffectGlobals()
         {
             engine = engine, player = player, card = card, targetCards = targetCards
         });
     }
     catch (Exception e)
     {
         throw new ContentException("卡片" + card.define + "的" + trigger + "效果执行失败:\n" + e.ToString());
     }
 }
Beispiel #8
0
        public Game(ElementManager elmManager, BetManager betManager, CardEngine cardEngine, ResizingHandler resizer)
        {
            this.handManager = new HandManager();
            this.betManager  = betManager;
            this.elmManager  = elmManager;
            this.cardEngine  = cardEngine;
            this.resizer     = resizer;

            this.roundIsOver = false;
            this.issplit     = false;
            this.start       = true;

            //Kinda starts the program u know?
            reset();
        }
Beispiel #9
0
        public void doActionTest()
        {
            CardEngine engine = new CardEngine();

            engine.addActionDefine("IntegerBinaryOperation", new IntegerOperationActionDefine());
            engine.addActionDefine("IntegerConst", new IntegerConstActionDefine());
            ActionNode action = new ActionNode("IntegerBinaryOperation", new ActionValueRef[]
            {
                new ActionValueRef(new ActionNode("IntegerConst", new ActionValueRef[0], new object[] { 2 }, new ActionNode[0])),
                new ActionValueRef(new ActionNode("IntegerConst", new ActionValueRef[0], new object[] { 2 }, new ActionNode[0]))
            }, new object[] { IntegerOperator.add }, new ActionNode[0]);
            EventArg eventArg = new EventArg();

            _ = engine.doActionAsync(null, null, eventArg, action);
            Assert.AreEqual(4, eventArg.getVar("@IntegerBinaryOperator_3_0"));
        }
Beispiel #10
0
 public override bool checkTarget(CardEngine engine, Player player, Card card, Card[] targetCards)
 {
     if (string.IsNullOrEmpty(filterScript))
     {
         return(true);
     }
     try
     {
         return(engine.runFunc <bool>(filterScript, new EffectGlobals()
         {
             engine = engine, player = player, card = card, targetCards = targetCards
         }));
     }
     catch (Exception e)
     {
         throw new ContentException("卡片" + card.define + "的" + trigger + "效果执行失败:\n" + e.ToString());
     }
 }
Beispiel #11
0
 public static void draw(this CardEngine engine, Player player)
 {
     if (player["Deck"].count > 0)
     {
         if (player["Hand"].count > 9)
         {
             engine.burn(player, player["Deck"].top);
         }
         else
         {
             engine.doEvent(new DrawEvent(player));
         }
     }
     else
     {
         engine.doEvent(new TiredEvent(player));
     }
 }
Beispiel #12
0
        public void haloAndSetBuffTest()
        {
            CardEngine game = new CardEngine(null, null, 0)
            {
                logger = new UnityLogger()
            };
            Card card = new Card(0);

            card.setLife(1);
            card.setCurrentLife(1);
            TestBuff haloBuff = new TestBuff(new LifeModifier(1));

            card.addBuff(game, haloBuff);
            TestBuff setBuff = new TestBuff(new LifeModifier(1, true));

            card.addBuff(game, setBuff);
            //刷新Buff
            card.removeBuff(game, haloBuff);
            card.addBuff(game, haloBuff);

            Assert.AreEqual(2, card.getCurrentLife());
            Assert.AreEqual(2, card.getLife());
        }
Beispiel #13
0
 public THHGame(IGameEnvironment env, bool shuffle = true, params CardDefine[] cards) : base(env, new HeartStoneRule(env), (int)DateTime.Now.ToBinary())
 {
     engine = new CardEngine(env, new HeartStoneRule(env), (int)DateTime.Now.ToBinary());
     engine.setProp("shuffle", shuffle);
     engine.afterEvent += afterEvent;
 }
Beispiel #14
0
 public static void setGem(this CardEngine engine, Player player, int value)
 {
     engine.doEvent(new GemChangeEvent(player, value));
 }
Beispiel #15
0
 public static void turnEnd(this CardEngine engine, Player player)
 {
     engine.doEvent(new TurnEndEvent(player));
 }
Beispiel #16
0
 //public static void damage(this CardEngine engine, Card[] cards, int amount)
 //{
 //    engine.doEvent(new DamageEvent(cards, cards.Select(c => { return amount; }).ToArray()));
 //}
 public static void damage(this CardEngine engine, Card[] cards, int[] amounts)
 {
     engine.doEvent(new DamageEvent(cards, amounts));
 }
Beispiel #17
0
 //public static void createToken(this CardEngine engine, Player player, CardDefine define, int position)
 //{
 //    Card card = new Card(define);
 //    engine.registerCard(card);
 //    engine.doEvent(new SummonEvent(player, card, position));
 //}
 public static void damage(this CardEngine engine, Card card, int amount)
 {
     engine.doEvent(new DamageEvent(card, new int[] { amount }));
 }
Beispiel #18
0
 //public static void summon(this CardEngine engine, Player player, CardDefine define, int position = -1)
 //{
 //    engine.summon(player, new Card(define), position < 0 ? player["Field"].count : position);
 //}
 public static void summon(this CardEngine engine, Player player, Card card, int position = -1)
 {
     engine.doEvent(new SummonEvent(player, card, position < 0 ? player["Field"].count : position));
 }
Beispiel #19
0
 public static void burn(this CardEngine engine, Player player, Card card)
 {
     engine.doEvent(new BurnEvent(player, card));
 }
 public override Task execute(CardEngine engine, Player player, Card card, object[] vars, object[] targets)
 {
     throw new NotImplementedException();
 }
 public override bool checkTargets(CardEngine engine, Player player, Card card, object[] targets)
 {
     throw new NotImplementedException();
 }
 public override PropModifier[] getPropertyModifiers(CardEngine game)
 {
     return(modifiers1);
 }
 public override IPassiveEffect[] getEffects(CardEngine game)
 {
     return(effects1);
 }
Beispiel #24
0
 public SyncTriggerSystem(CardEngine game)
 {
     this.game = game;
     initDoEventActions();
 }
 public override void beforeEvent(CardEngine game, Event e)
 {
 }
Beispiel #26
0
 public static BuffDefine getBuffDefine(CardEngine game, [ActionNodeParam("Id", isConst: true)] int id)
 {
     return(game.getBuffDefine(id));
 }
Beispiel #27
0
 public override string isUsable(CardEngine engine, Player player, Card card)
 {
     throw new NotImplementedException();
 }
Beispiel #28
0
 public override string isUsable(CardEngine engine, Player player, Card card)
 {
     return(null);
 }
 public override bool checkCondition(CardEngine engine, Player player, Card card, object[] vars)
 {
     throw new NotImplementedException();
 }