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); } }
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()); }
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()); } }
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(); }
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); }
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()); } }
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(); }
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")); }
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()); } }
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)); } }
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()); }
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; }
public static void setGem(this CardEngine engine, Player player, int value) { engine.doEvent(new GemChangeEvent(player, value)); }
public static void turnEnd(this CardEngine engine, Player player) { engine.doEvent(new TurnEndEvent(player)); }
//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)); }
//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 })); }
//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)); }
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); }
public SyncTriggerSystem(CardEngine game) { this.game = game; initDoEventActions(); }
public override void beforeEvent(CardEngine game, Event e) { }
public static BuffDefine getBuffDefine(CardEngine game, [ActionNodeParam("Id", isConst: true)] int id) { return(game.getBuffDefine(id)); }
public override string isUsable(CardEngine engine, Player player, Card card) { throw new NotImplementedException(); }
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(); }