Beispiel #1
0
        void SessionFounder()
        {
            Random random = new Random();

            while (sessionAwaitPlayers.Count > 1)
            {
                lock (sessionAwaitPlayers)
                {
                    var p1 = sessionAwaitPlayers[random.Next(sessionAwaitPlayers.Count)];
                    sessionAwaitPlayers.Remove(p1);
                    var p2 = sessionAwaitPlayers[random.Next(sessionAwaitPlayers.Count)];
                    sessionAwaitPlayers.Remove(p2);
                    var session = new CardSessionServer.Session(new Position(8, 8), new Pair <Modifier, int>[]
                    {
                        new Pair <Modifier, int>(new DurableModifier(typeof(Destroyable), "DeltaHealth", new object[] { 10 }), 15),
                        new Pair <Modifier, int>(new Modifier(typeof(Attacker), "DeltaAttack", new object[] { -10 }), 15)
                    });

                    foreach (var f in p1.PlayerInfo.SharedPlayerInfo.CurrentSoliders)
                    {
                        var ser = Soliders.Find(q => q.Obj2 == f).Obj1;
                        var o   = BinarySerializer.Deserialize(BinarySerializer.Serialize(ser));
                        ((Container)o).SetOwner(p1.ControllerInfo);
                        session.AddObject((Container)o);
                    }
                    foreach (var f in p1.PlayerInfo.SharedPlayerInfo.CurrentSpells)
                    {
                        var ser = Spells.Find(q => q.Obj2 == f).Obj1;
                        var o   = BinarySerializer.Deserialize(BinarySerializer.Serialize(ser));
                        ((Container)o).SetOwner(p1.ControllerInfo);
                        session.AddObject((Container)o);
                    }

                    foreach (var f in p2.PlayerInfo.SharedPlayerInfo.CurrentSoliders)
                    {
                        var ser = Soliders.Find(q => q.Obj2 == f).Obj1;
                        var o   = BinarySerializer.Deserialize(BinarySerializer.Serialize(ser));
                        ((Container)o).SetOwner(p2.ControllerInfo);
                        session.AddObject((Container)o);
                    }
                    foreach (var f in p2.PlayerInfo.SharedPlayerInfo.CurrentSpells)
                    {
                        var ser = Spells.Find(q => q.Obj2 == f).Obj1;
                        var o   = BinarySerializer.Deserialize(BinarySerializer.Serialize(ser));
                        ((Container)o).SetOwner(p2.ControllerInfo);
                        session.AddObject((Container)o);
                    }

                    session.AddController(p1);
                    session.AddController(p2);

                    session.StartSession();
                }
            }
        }
Beispiel #2
0
        public Pair <InterpretedObject, Info> LootSolider(List <Pair <InterpretedObject, Info> > owned)
        {
            if (owned.Count == Soliders.Count)
            {
                return(null);
            }
            Random random = new Random();
            var    f      = Soliders.FindAll(q => !owned.Contains(q.Obj2));

            return(f[random.Next(f.Count)].Obj2);
        }
Beispiel #3
0
 public Supervisor(List <Pair <Container, Info> > soliders, List <Pair <Container, Info> > spells,
                   SimpleDatabase.Database database, int startSolidersCount, int startSpellsCount)
 {
     if ((this.database = database) == null)
     {
         throw new ArgumentNullException(nameof(database));
     }
     foreach (var f in soliders)
     {
         Soliders.Add(new Pair <Container, Pair <InterpretedObject, Info> >(f.Obj1, new Pair <InterpretedObject, Info>(Interpretor.Interpretate(f.Obj1), f.Obj2)));
     }
     foreach (var f in spells)
     {
         Spells.Add(new Pair <Container, Pair <InterpretedObject, Info> >(f.Obj1, new Pair <InterpretedObject, Info>(Interpretor.Interpretate(f.Obj1), f.Obj2)));
     }
     (sessionFounder = new Task(new Action(SessionFounder))).Start();
     StartSolidersCount = startSolidersCount;
     StartSpellsCount   = startSpellsCount;
 }