Пример #1
0
        public void FetchLevel(string levelName = "default")
        {
            HttpRequestOptions options = new HttpRequestOptions();

            options.Method = HttpRequestMethod.GET;

            var result = WaitFor(ScenePrivate.HttpClient.Request, $"{LevelUrl}/{levelName}", options) as HttpClient.RequestData;

            if (!result.Success || result.Response.Status != 200)
            {
                Log.Write(LogLevel.Error, $"Bad request fetching level, {result.Response.Status}");
                return;
            }

            string        jsonResponse = result.Response.Body;
            LevelResponse parsed       = ((JsonSerializationData <LevelResponse>)(WaitFor(JsonSerializer.Deserialize <LevelResponse>, jsonResponse))).Object;

            foreach (BitDefinition bitDefinition in parsed.data.bits)
            {
                FetchBit(bitDefinition.name);
            }

            foreach (ObjectiveEntity entity in parsed.data.objectives)
            {
                var match = ObjectivePositions.Find(entity.definition.p);
                if (match == null)
                {
                    ScenePrivate.CreateClusterData data = Spawner.SpawnGlobalObjective(entity);
                    Objectives.AddLast(data);
                    ObjectivePositions.AddLast(entity.definition.p);
                }
            }
        }