Esempio n. 1
0
            public AIInstance(InstanceSelector instanceSelector, int instanceNumber, Queue decisionRequestQueue, AIRandomControl aiRandomControl)
            {
                taskTrees = new Dictionary <RequestedInfoKey, InfoProviderTaskTree>();

                this.instanceSelector     = instanceSelector;
                this.instanceNumber       = instanceNumber;
                this.decisionRequestQueue = decisionRequestQueue;
                this.decisionInProgress   = new object();

                //Setup the AI's and providers here
                infoStore = new InfoCollection();

                infoProviderDictList = new Dictionary <InfoProviderType, InfoProviderBase>();
                aiDictList           = new Dictionary <AIGeneration, AIBase>();

                //Setup the 1st infostore instance
                var GP   = new GameProvider(infoStore, infoProviderDictList, aiRandomControl);
                var WRP  = new ProviderWinRatio.WinRatioProvider(infoStore, infoProviderDictList, aiRandomControl);
                var BP   = new BetsProvider(infoStore, infoProviderDictList, aiRandomControl);
                var CP   = new CardsProvider(infoStore, infoProviderDictList, aiRandomControl);
                var AP   = new AggressionProvider(infoStore, infoProviderDictList, aiRandomControl);
                var PAPP = new PlayerActionPredictionProvider(infoStore, infoProviderDictList, aiRandomControl);

                //Hard lock the infostore collection preventing any further changes.
                infoStore.HardLockInfoList();

                //Setup the AI list
                //We are going to lock the AI's into random mode.
                aiDictList.Add(AIGeneration.SimpleV1, new SimpleAIV1(aiRandomControl));
                aiDictList.Add(AIGeneration.SimpleV2, new SimpleAIV2(aiRandomControl));
                aiDictList.Add(AIGeneration.NeuralV1, new NeuralAIv1(aiRandomControl));
                aiDictList.Add(AIGeneration.SimpleV3, new SimpleAIV3(aiRandomControl));
                aiDictList.Add(AIGeneration.NeuralV2, new NeuralAIv2(aiRandomControl));
                aiDictList.Add(AIGeneration.SimpleV4AggressionTrack, new SimpleAIV4AggTrack(aiRandomControl));
                aiDictList.Add(AIGeneration.NeuralV3, new NeuralAIv3(aiRandomControl));
                aiDictList.Add(AIGeneration.NeuralV4, new NeuralAIv4(aiRandomControl));
                aiDictList.Add(AIGeneration.SimpleV5, new SimpleAIv5(aiRandomControl));
                aiDictList.Add(AIGeneration.SimpleV6, new SimpleAIv6(aiRandomControl));
                aiDictList.Add(AIGeneration.NeuralV5, new NeuralAIv5(aiRandomControl));
                aiDictList.Add(AIGeneration.NeuralV6, new NeuralAIv6(aiRandomControl));
                aiDictList.Add(AIGeneration.SimpleV7, new SimpleAIv7(aiRandomControl));
                aiDictList.Add(AIGeneration.CheatV1, new CheatV1(aiRandomControl));
                aiDictList.Add(AIGeneration.NeuralV7, new NeuralAIv7(aiRandomControl));

                if (ConcurrencyMode.Concurrency == ConcurrencyMode.ConcurencyModel.MultiCore)
                {
                    providerTasks = new Dictionary <InfoProviderType, Task>();
                }
                else
                {
                    providerActions = new Dictionary <InfoProviderType, Action>();
                }
            }