Beispiel #1
0
        private static void SpawnAlchemists(AlchemistsIndulger indulger)
        {
            for (int i = 0; i < 100; i++)
            {
                int       rand      = random.Next(4);
                Alchemist alchemist = null;

                switch (rand)
                {
                case 0:
                    alchemist = new AlchemistA();
                    break;

                case 1:
                    alchemist = new AlchemistB();
                    break;

                case 2:
                    alchemist = new AlchemistC();
                    break;

                case 3:
                    alchemist = new AlchemistD();
                    break;
                }

                Thread thread = new Thread(() =>
                {
                    alchemist.RequestResources(indulger);
                });
                thread.IsBackground = true;
                thread.Start();
            }
        }
Beispiel #2
0
        private static void StartAlchemistsIndulger(AlchemistsIndulger indulger)
        {
            var iThread = new Thread(
                () => indulger.StartIndulging()
                );

            iThread.IsBackground = true;
            iThread.Start();
        }
Beispiel #3
0
        public override void RequestResources(AlchemistsIndulger indulger)
        {
            Console.WriteLine($"{Name} requests resources.");
            indulger.ResourceRequestedBy(this);

            indulger.GuildDSem.Wait();

            Console.WriteLine($"{Name} has been indulged.");
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            var factories = CreateFactories();
            var indulger  = new AlchemistsIndulger(resourceCreatedSem,
                                                   factories[0], factories[1], factories[2]);

            StartAlchemistsIndulger(indulger);
            StartFactories(factories);

            SpawnWarlockAndSorcerer(factories);
            SpawnAlchemists(indulger);

            Task.Delay(20000).Wait();
        }
Beispiel #5
0
 public abstract void RequestResources(AlchemistsIndulger indulger);