Exemple #1
0
        public static async void Awake(this BenchmarkClientComponent self, BenchmarkClientComponent.ClientSetting clientSetting)
        {
            try
            {
                self.networkComponent  = clientSetting.networkComponent;
                self.ipEndPoint        = clientSetting.ipEndPoint;
                self.testPlayerSetting = clientSetting.testPlayerSetting;
                self.stateMachine      = new StateMachine <BenchmarkClientComponent>();
                self.robotMode         = clientSetting.robotMode;
                self.roadSettingId     = clientSetting.roadSettingId;
                self.IsFromPool        = false;

                //self.InitializeStateMachine();

                /****************/

                await self.SignIn(self.testPlayerSetting.DeviceUniqueIdentifier);

                //設定玩家資料
                TestPlayerDataComponent playerDataComponent = self.session.AddComponent <TestPlayerDataComponent>();
                playerDataComponent.testPlayerSetting = clientSetting.testPlayerSetting;
                self.Init();
            }
            catch (Exception e)
            {
                Console.WriteLine($"Msg:{e.Message}, Stack:{e.StackTrace}");
            }
        }
Exemple #2
0
        public static async void Awake(this BenchmarkComponent self, ClientConfig clientConfig)
        {
            try
            {
                self.timerComponent  = Game.Scene.GetComponent <TimerComponent>();
                self.networkProfiler = new ProfilerUtility.NetworkProfiler();

                if (!File.Exists(clientConfig.UserCollectionPath))
                {
                    Console.WriteLine($"Invalid user data path: {clientConfig.UserCollectionPath}");
                    return;
                }
                IPEndPoint        ipEndPoint       = ETModel.NetworkHelper.ToIPEndPoint(clientConfig.Address);
                NetOuterComponent networkComponent = Game.Scene.GetComponent <NetOuterComponent>();

                string json = await File.ReadAllTextAsync(clientConfig.UserCollectionPath);

                List <BsonDocument> users = BsonSerializer.Deserialize <List <BsonDocument> >(json);
                //users = users.Where(e => e["identity"].AsInt32 == (int)User.Identity.TestPlayer).ToList();
                users = users.Where(e => e["userId"].AsString.Length == 10).ToList();

                int limit = clientConfig.Count * clientConfig.RobotCount;
                for (int i = clientConfig.CurrentRobot, j = 0; i < limit; i += clientConfig.RobotCount, j++)
                {
                    //self.TestAsync(networkComponent, ipEndPoint, i);
                    if (i >= users.Count)
                    {
                        Console.WriteLine($"testing player is over count of collection");
                        break;
                    }
                    BsonDocument      user = users[i];
                    TestPlayerSetting testPlayerSetting = new TestPlayerSetting();
                    //testPlayerSetting.DeviceUniqueIdentifier = user["email"].AsString;
                    testPlayerSetting.DeviceUniqueIdentifier = user["userId"].AsString;
                    BenchmarkClientComponent.ClientSetting clientSetting = new BenchmarkClientComponent.ClientSetting
                    {
                        networkComponent  = networkComponent,
                        ipEndPoint        = ipEndPoint,
                        testPlayerSetting = testPlayerSetting,
                        robotMode         = (BenchmarkClientComponent.RobotMode)clientConfig.RobotMode,
                        roadSettingId     = clientConfig.RoadSettingId,
                    };
                    var client = ComponentFactory.Create <BenchmarkClientComponent, BenchmarkClientComponent.ClientSetting>(clientSetting);
                    client.index = j;
                    self.clients.Add(testPlayerSetting.DeviceUniqueIdentifier, client);
                    self.clientList.Add(client);
                }

                while (!self.IsDisposed)
                {
                    await self.timerComponent.WaitForSecondAsync(1);

                    if (self.watchTargetList.Count != 0)
                    {
                        foreach (var v in self.clientList.Where(e => self.watchTargetList.Contains(e.index)))
                        {
                            v.PrintMessage();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }