예제 #1
0
    public ActorData()
    {
        name = "Default Actor Name";

        stats = new StatData[(int)StatType.NUM_STATS];

        stats[(int)StatType.STRENGTH] = new StatData(1, 10);
        stats[(int)StatType.INTELLIGENCE] = new StatData(1, 10);
        stats[(int)StatType.AGILITY] = new StatData(1, 10);

        health = new StatData(0,10);
    }
예제 #2
0
    // Save data into persistentDataPath
    public void Save()
    {
        BinaryFormatter bf = new BinaryFormatter ();
        FileStream file = File.Create (Application.persistentDataPath + "lightSpeedStat.dat");

        StatData data = new StatData ();
        data.highscore = highscore;
        data.gamesplayed = gamesplayed;
        data.muted = muted;

        bf.Serialize (file, data);
        file.Close ();
    }
예제 #3
0
        public void ChangeClass(ChangeClassPacket changeClassPacket)
        {
            if (changeClassPacket.Name == Session.Character.Name || string.IsNullOrEmpty(changeClassPacket.Name))
            {
                Session.Character.ChangeClass(changeClassPacket.ClassType);
                return;
            }

            var data = new StatData
            {
                ActionType = UpdateStatActionType.UpdateClass,
                Character  = new Character {
                    Name = changeClassPacket.Name
                },
                Data = (byte)changeClassPacket.ClassType,
            };

            var servers = WebApiAccess.Instance.Get <List <ChannelInfo> >(WebApiRoute.Channel).Where(s => s.Type == ServerType.WorldServer);
            ServerConfiguration config  = null;
            ConnectedAccount    account = null;

            foreach (var server in servers)
            {
                config  = server.WebApi;
                account = WebApiAccess.Instance.Get <List <ConnectedAccount> >(WebApiRoute.ConnectedAccount, config)
                          .Find(s => s.ConnectedCharacter.Name == changeClassPacket.Name);
                if (account != null)
                {
                    break;
                }
            }

            if (account == null) //TODO: Handle 404 in WebApi
            {
                Session.SendPacket(new InfoPacket
                {
                    Message = Language.Instance.GetMessageFromKey(LanguageKey.CANT_FIND_CHARACTER, Session.Account.Language)
                });
                return;
            }
            WebApiAccess.Instance.Post <StatData>(WebApiRoute.Stat, data, config);
        }
예제 #4
0
        internal static void OutputStatData(StatData statData)
        {
            Logger.Log("SkillStats");

            foreach (KeyValuePair <string, object> kvp in statData.statDict)
            {
                System.Collections.IList list = (System.Collections.IList)kvp.Value;

                Logger.Log("-------");
                Logger.Log("\t" + kvp.Key);
                Logger.Log("{");

                foreach (object obj in list)
                {
                    Logger.Log("\t\t" + (obj == null ? "(null)" : obj.ToString()));
                }

                Logger.Log("}");
            }
        }
예제 #5
0
파일: Player.cs 프로젝트: Jazz23/PlayerAPI
 public void Parse(Status status)
 {
     if (status == null)
     {
         return;
     }
     foreach (StatData data in status.Data)
     {
         StatData olddata = Entity.Status.Data.FirstOrDefault(x => x.Id == data.Id);
         if (olddata != null)
         {
             olddata.IntValue    = data.IntValue;
             olddata.StringValue = data.StringValue != null ? data.StringValue : null;
             PlayerData.Parse(data.Id, data.IntValue, data.StringValue);
             InventoryIDS = PlayerData.GetInventoryIDS();
         }
         OnStatDataChange?.Invoke(data);
     }
     Entity.Status.Position = status.Position;
 }
예제 #6
0
    public void InitAdventurer(StatData statIn, BattleStat battleStat, RewardStat rewardStat) //
    {
        // 이동가능한 타일인지 확인할 delegate 설정.
        pathFinder.SetValidateTile(ValidateNextTile);
        //SetPathFindEventAdventurer();

        this.battleStat = new BattleStat(battleStat);
        this.rewardStat = new RewardStat(rewardStat);
        //stat 초기화
        this.stat = gameObject.AddComponent <Stat>();
        stat.InitStat(statIn, this);
        if (statIn == null)
        {
            Debug.Log("[InitAdv] stat is null");
        }
        //pathfinder 초기화 // delegate 그대로

        skills           = new Dictionary <string, Skill>();
        temporaryEffects = new Dictionary <string, TemporaryEffect>();
    }
예제 #7
0
        private void ZeroAllStatistics(StatData statistics)
        {
            if (statistics == null)
            {
                return;
            }

            statistics.Count      = 0;
            statistics.asymmetry  = 0;
            statistics.dispersion = 0;
            statistics.kurtosis   = 0;
            statistics.m          = 0;
            statistics.max        = 0;
            statistics.min        = 0;
            statistics.sigma      = 0;
            statistics.varRange   = 0;
            statistics.variation  = 0;

            ZeroDistribution(out statistics.distribution, HistoMin, HistoMax, HistoStep);
            ZeroDistribution(out statistics.probability_density, HistoMin, HistoMax, DensityStep);
        }
예제 #8
0
 // Token: 0x06000468 RID: 1128 RVA: 0x000175C0 File Offset: 0x000157C0
 private void ProcessStatus(Status status)
 {
     foreach (StatData statData in status.Data)
     {
         if (StatsType.Id(statData.Id, StatsType.HP))
         {
             this._originalHealthValues[status.ObjectId] = statData.IntValue;
             break;
         }
     }
     if (Settings.Default.EnableFameTools && Settings.Default.FameAccuracyFarm)
     {
         StatData item = new StatData
         {
             Id          = StatsType.HP,
             IntValue    = int.MaxValue,
             StringValue = string.Empty
         };
         status.Data.Add(item);
     }
 }
예제 #9
0
        private async Task <StatData> GetUpdatedStat()
        {
            var ipCallsStats = await _ipStatsService.GetIpCallsStats();

            GeoCoordinate From = new GeoCoordinate(-34, -64);

            var data = new StatData()
            {
                LastUpdate = DateTime.Now,
                ByCountry  = ipCallsStats.CallsByCountryInfo
                             .Where(c => c.Calls > 0)
                             .Select(c => new StatLine()
                {
                    Country  = c.CountryName,
                    Distance = c.GetDistance(From),
                    Calls    = c.Calls,
                }),
            };

            return(data);
        }
예제 #10
0
    /// <summary>
    /// Returns the value of the given stats with its modifiers applied
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public int GetStat(StatsId id)
    {
        int stats      = this[id];
        int multiplier = 0;

        foreach (StatsModifier modifier in m_modifiers)
        {
            StatData incrementalStats = modifier[ModifierType.Incremental];
            StatData multiplierStats  = modifier[ModifierType.Multiplier];

            int incremental = incrementalStats[id];
            int multiply    = multiplierStats[id];

            stats      += incremental;
            multiplier += multiply;
        }

        int total = stats + (stats * multiplier);

        return(total);
    }
    public void Click()
    {
        SynthSphere sphere = new SynthSphere();

        sphere.stats = new StatData();
        StatData data = modifySlot.myItem.data.stats;

        sphere.stats.baseItemName = data.baseItemName + " Synth Sphere";
        sphere.stats.attack       = data.attack;
        sphere.stats.endurance    = data.endurance;
        sphere.stats.speed        = data.speed;
        sphere.stats.magic        = data.magic;
        sphere.stats.healthPower  = data.healthPower;
        sphere.stats.fire         = data.fire;
        sphere.stats.ice          = data.ice;
        sphere.stats.thunder      = data.thunder;
        sphere.stats.wind         = data.wind;
        sphere.stats.holy         = data.holy;
        sphere.stats.dragon       = data.dragon;
        sphere.stats.undead       = data.undead;
        sphere.stats.marine       = data.marine;
        sphere.stats.rock         = data.rock;
        sphere.stats.plant        = data.plant;
        sphere.stats.beast        = data.beast;
        sphere.stats.sky          = data.sky;
        sphere.stats.metal        = data.metal;
        sphere.stats.mimic        = data.mimic;
        sphere.stats.mage         = data.mage;
        //GameController.Instance.gameData.playerInfo.SetItemInInventory(sphere);
        if (GameController.Instance.gameData.playerInfo.AddToInventory(sphere))
        {
            //delete item from modify slot
            //update status
            modifySlot.myItem         = null;
            modifySlot.myImage.sprite = null;
            FindObjectOfType <AddonsController>().OnEnable();
            FindObjectOfType <StatController>().OnEnable();
            FindObjectOfType <InventoryController>().OnEnable();
        }
    }
        public async Task GetStatDataShouldReturnOnlyMatchingStatDataFromGivenCategories()
        {
            string       statCategoryToSearch = StatCategory.Implicit.GetDisplayName();
            const string itemStatText         = "3% increased Movement Speed";
            var          expectedStatData     = new StatData {
                Id = "expectedId", Text = "#% increased Movement Speed", Type = statCategoryToSearch.ToLower()
            };

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <QueryResult <Data <StatData> > >(It.IsAny <string>()))
            .Returns(new QueryResult <Data <StatData> >
            {
                Result = new List <Data <StatData> >
                {
                    new Data <StatData>
                    {
                        Id      = POETradeHelper.ItemSearch.Contract.Properties.Resources.StatCategoryExplicit,
                        Entries = new List <StatData>
                        {
                            new StatData {
                                Id = "random id", Text = expectedStatData.Text, Type = POETradeHelper.ItemSearch.Contract.Properties.Resources.StatCategoryExplicit.ToLower()
                            }
                        }
                    },
                    new Data <StatData>
                    {
                        Id      = statCategoryToSearch,
                        Entries = new List <StatData>
                        {
                            expectedStatData
                        }
                    }
                }
            });

            await this.statsDataService.OnInitAsync();

            StatData result = this.statsDataService.GetStatData(itemStatText, false, statCategoryToSearch);

            Assert.That(result, Is.EqualTo(expectedStatData));
        }
예제 #13
0
        private void proxy_Update(Client client, Packet real_packet)
        {
            UpdatePacket packet = (UpdatePacket)real_packet;

            for (int i = 0; i < packet.Tiles.Length; i++)
            {
                if (packet.Tiles[i].Type == 0xb8)
                {
                    packet.Tiles[i].Type = 0x96;
                }
            }


            for (int i = 0; i < packet.NewObjs.Length; i++)
            {
                Entity obj = packet.NewObjs[i];


                for (int c = 0; c < obj.Status.Data.Length; c++)
                {
                    StatData data = obj.Status.Data[c];

                    if (data.Id == StatsType.PortalUsable && data.IntValue != 0)
                    {
                        Dungeons[client].Add(obj);
                    }

                    else if (data.Id == StatsType.PortalUsable && data.IntValue == 0)
                    {
                        foreach (Entity e in Dungeons[client])
                        {
                            if (e.Status.ObjectId == obj.Status.ObjectId)
                            {
                                Dungeons[client].Remove(e);
                            }
                        }
                    }
                }
            }
        }
예제 #14
0
        public void SetGold(SetGoldCommandPacket goldPacket)
        {
            var data = new StatData
            {
                ActionType = UpdateStatActionType.UpdateGold,
                Character  = new Character {
                    Name = goldPacket.Name
                },
                Data = goldPacket.Gold
            };

            var servers = WebApiAccess.Instance.Get <List <ChannelInfo> >(WebApiRoute.Channel)
                          .Where(s => s.Type == ServerType.WorldServer);
            ServerConfiguration config  = null;
            ConnectedAccount    account = null;

            foreach (var server in servers)
            {
                config  = server.WebApi;
                account = WebApiAccess.Instance.Get <List <ConnectedAccount> >(WebApiRoute.ConnectedAccount, config)
                          .Find(s => s.ConnectedCharacter.Name == goldPacket.Name);
                if (account != null)
                {
                    break;
                }
            }

            if (account == null) //TODO: Handle 404 in WebApi
            {
                Session.SendPacket(new InfoPacket
                {
                    Message = Language.Instance.GetMessageFromKey(LanguageKey.CANT_FIND_CHARACTER,
                                                                  Session.Account.Language)
                });
                return;
            }

            WebApiAccess.Instance.Post <StatData>(WebApiRoute.Stat, data, config);
        }
예제 #15
0
        public IActionResult UpdateStats([FromBody] StatData data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var session = Broadcaster.Instance.GetCharacter(s => s.Name == data.Character?.Name);

            if (session == null)
            {
                return(Ok()); //TODO: not found
            }

            switch (data.ActionType)
            {
            case UpdateStatActionType.UpdateLevel:
                session.SetLevel((byte)data.Data);
                break;

            case UpdateStatActionType.UpdateJobLevel:
                session.SetJobLevel((byte)data.Data);
                break;

            case UpdateStatActionType.UpdateHeroLevel:
                session.SetHeroLevel((byte)data.Data);
                break;

            case UpdateStatActionType.UpdateReputation:
                session.SetReputation(data.Data);
                break;

            default:
                _logger.Error(LogLanguage.Instance.GetMessageFromKey(LanguageKey.UNKWNOWN_RECEIVERTYPE));
                break;
            }

            return(Ok());
        }
예제 #16
0
    /// <summary>
    /// 获取刮开的统计信息
    /// </summary>
    /// <returns></returns>
    public StatData GetStatData()
    {
        if (_histogramShaderKrnl == -1)
        {
            Debug.LogError("invalid compute shader");
            return(new StatData());
        }

        histogramShader.Dispatch(_clearShaderKrnl, HISTOGRAM_BINS / _histogramShaderGroupSize.x, 1, 1);

        int dispatchX = _rt.width / _histogramShaderGroupSize.x;
        int dispatchY = _rt.height / _histogramShaderGroupSize.y;

        histogramShader.Dispatch(_histogramShaderKrnl, dispatchX, dispatchY, 1);

        // AsyncGPUReadback.Request does supported at OpenglES
        _histogramBuffer.GetData(_histogramData);

        int dispatchWidth  = dispatchX * _histogramShaderGroupSize.x;
        int dispatchHeight = dispatchY * _histogramShaderGroupSize.y;
        int dispatchCount  = dispatchWidth * dispatchHeight;

        StatData ret = new StatData();

        ret.fillPercent = 1.0f - _histogramData[0] / (dispatchCount * 1.0f); // 非0值比例

        float sum      = 0;
        float binScale = (256 / HISTOGRAM_BINS);

        for (int i = 0; i < HISTOGRAM_BINS; i++)
        {
            int count = (int)_histogramData[i];
            sum += i * binScale * count;
        }
        ret.avgVal = sum / dispatchCount;
        // 由于桶的数量小于256,shader最大只统计到 127 * 2 = 254, 无法显示255的数据,因此此处把结果给缩放一下
        ret.avgVal *= 255.0f / ((HISTOGRAM_BINS - 1) * binScale);
        return(ret);
    }
예제 #17
0
        public async Task <object> createStat([FromBody] StatData data)
        {
            var study = protocol.Studies.FirstOrDefault(x => x.Id == data.StudyID);
            var obj   = new Stat(data)
            {
                Study = study
            };

            //set parent url
            obj.Parent.Url = mapUrl(protocol.Id.ToString(), study.Id.ToString(), obj.Parent.Id.ToString(), "data");

            context.Stats.Add(obj);
            context.FunctionalFiles.Add(obj.Parent);
            history.HistoryEvent += $"create {obj.GetType().Name} {study.Id} {obj.Id}";
            await context.SaveChangesAsync();

            return(new Uploadinfo
            {
                Uploadid = FileController.createFunctionalFileQueueItem(obj, session, data.Md5, data.FileName).ToString(),
                Fid = obj.Parent.Id.ToString()
            });
        }
        public async Task GetStatDataShouldPreferLocalStat()
        {
            // arrange
            const string itemStatText     = "+15 % attack speed";
            var          expectedStatData = new StatData
            {
                Id   = "expected id",
                Text = $"{itemStatText} ({Resources.LocalKeyword})",
                Type = StatCategory.Explicit.GetDisplayName().ToLower()
            };

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <QueryResult <Data <StatData> > >(It.IsAny <string>()))
            .Returns(new QueryResult <Data <StatData> >
            {
                Result = new List <Data <StatData> >
                {
                    new Data <StatData>
                    {
                        Id      = StatCategory.Explicit.GetDisplayName(),
                        Entries = new List <StatData>
                        {
                            new StatData {
                                Id = "random id", Type = expectedStatData.Type, Text = itemStatText
                            },
                            expectedStatData
                        }
                    }
                }
            });

            await this.statsDataService.OnInitAsync();

            // act
            StatData result = this.statsDataService.GetStatData(itemStatText, true);

            // assert
            Assert.That(result, Is.EqualTo(expectedStatData));
        }
예제 #19
0
        //int obect = 0;
        private void OnNewTick(Client client, NewTickPacket packet)
        {
            client.PlayerData.Parse(packet);

            foreach (Status status in packet.Statuses)
            {
                Entity ent = client.State.RenderedEntities.FirstOrDefault(x => x.Status.ObjectId == status.ObjectId);
                if (ent == null)
                {
                    continue;
                }
                ent.Status.Position = status.Position;
                foreach (StatData stat in status.Data)
                {
                    StatData oldStat = ent.Status.Data.FirstOrDefault(x => x.Id == stat.Id);
                    if (oldStat != null)
                    {
                        oldStat.IntValue    = stat.IntValue;
                        oldStat.StringValue = stat.StringValue;
                    }
                }
            }
        }
예제 #20
0
        private CardView CreateCardWithStatView <T>(GameObject prefab, Entity sourceEntity)
            where T : struct, IComponentData
        {
            var cardGo = Object.Instantiate(prefab);

            CardView card = cardGo.GetComponent <CardView>();

            StatData stat = EntityManager.GetComponentData <StatData>(sourceEntity);

            if (applyFaith)
            {
                stat.Value *= 2;
            }

            var cardEntity = cardGo.GetComponent <GameObjectEntity>().Entity;

            EntityManager.AddComponentData(cardEntity, new CardData());

            EntityManager.AddComponentData(cardEntity, new T());
            EntityManager.AddComponentData(cardEntity, stat);
            card.SetStat(stat.Value);
            return(card);
        }
예제 #21
0
        public void ParseShouldReturnPseudoItemStatIfTheSamePseudoStatDataIsReturnedTwoOrMoreTimes(int count)
        {
            IList <ItemStat> itemStats = new List <ItemStat>();

            for (var i = 0; i < count; i++)
            {
                itemStats.Add(new SingleValueItemStat(StatCategory.Explicit)
                {
                    Id = $"{i}"
                });
            }

            var pseudoStatData = new StatData {
                Id = "test stat data"
            };

            this.pseudoStatsDataMappingServiceMock.Setup(x => x.GetPseudoStatData(It.IsAny <string>()))
            .Returns(new[] { pseudoStatData });

            IEnumerable <ItemStat> result = this.pseudoItemStatsParser.Parse(itemStats)?.ToList();

            Assert.That(result, Has.Count.EqualTo(1));
        }
예제 #22
0
        //TODO: Setup to be through events, that will make
        //		it MUCH easier to do things like update text
        //		displaying a given stat.
        #region ModStats

        public void ModStat(TrackedStatType statType, ModType modType, float value)
        {
            StatData theStat = GetStat(statType);

            if (theStat == null)
            {
                                #if UNITY_EDITOR
                Debug.LogError("StatTracker.ModStat() could not find stat with given name: " + statType.ToString());
                                #endif
                return;
            }

            float oldStat = theStat.currentValue;

            switch (modType)
            {
            case ModType.Set:
                theStat.currentValue = value;
                break;

            case ModType.Add:
                theStat.currentValue += value;
                break;

            case ModType.Mult:
                theStat.currentValue *= value;
                break;
            }

            float newStat = theStat.currentValue;

            EventData_Gameplay eventData = new EventData_Gameplay();
            eventData.TheStatType  = statType;
            eventData.OldStatValue = oldStat;
            eventData.NewStatValue = newStat;
            GameManager.Events.Broadcast <EventType_Gameplay> ((int)EventType_Gameplay.StatTracker_StatModified, eventData);
        }
예제 #23
0
        public void ParseShouldReturnMaxMaxValueItemStatWithMaxValueCombinedFromMatchingItemStats(int maxValue1, int maxValue2, int expected)
        {
            IList <ItemStat> itemStats = new List <ItemStat>
            {
                new MinMaxValueItemStat(StatCategory.Explicit)
                {
                    Id = "stat 1", MaxValue = maxValue1
                },
                new MinMaxValueItemStat(StatCategory.Implicit)
                {
                    Id = "stat 2", MaxValue = maxValue2
                },
                new MinMaxValueItemStat(StatCategory.Implicit)
                {
                    MaxValue = 10
                }
            };

            var pseudoStatData = new StatData {
                Id = "test stat data"
            };

            this.pseudoStatsDataMappingServiceMock.Setup(x => x.GetPseudoStatData(It.Is <string>(s => !string.IsNullOrEmpty(s))))
            .Returns(new[] { pseudoStatData });

            this.pseudoStatsDataMappingServiceMock.Setup(x => x.GetPseudoStatData(It.Is <string>(s => string.IsNullOrEmpty(s))))
            .Returns(new[] { new StatData {
                                 Id = "other stat data "
                             } });

            IEnumerable <ItemStat> result = this.pseudoItemStatsParser.Parse(itemStats);

            var itemStat = (MinMaxValueItemStat)result.First();

            Assert.That(itemStat.MaxValue, Is.EqualTo(expected));
        }
        private async Task GetStatDataShouldReturnCorrectStatData(ItemStat itemStat, StatData expectedStatData)
        {
            string statCategory = itemStat.StatCategory.GetDisplayName();

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <QueryResult <Data <StatData> > >(It.IsAny <string>()))
            .Returns(new QueryResult <Data <StatData> >
            {
                Result = new List <Data <StatData> >
                {
                    new Data <StatData>
                    {
                        Id      = POETradeHelper.ItemSearch.Contract.Properties.Resources.StatCategoryExplicit,
                        Entries = new List <StatData>
                        {
                            new StatData {
                                Id = "random id", Text = expectedStatData.Text, Type = POETradeHelper.ItemSearch.Contract.Properties.Resources.StatCategoryExplicit.ToLower()
                            }
                        }
                    },
                    new Data <StatData>
                    {
                        Id      = statCategory,
                        Entries = new List <StatData>
                        {
                            expectedStatData
                        }
                    }
                }
            });

            await this.statsDataService.OnInitAsync();

            StatData result = this.statsDataService.GetStatData(itemStat.Text, false, itemStat.StatCategory.GetDisplayName());

            Assert.That(result, Is.EqualTo(expectedStatData));
        }
예제 #25
0
        private void OnCacheTimer(object state)
        {
            var tpState = (IndexServiceState)state;

            try
            {
                if (tpState.Net.Api.EndsWith("/Api"))
                {
                    using (var client = ApiFab.CreateNodeApi(tpState.Net.Ip))
                    {
                        // Service available
                        if (tpState.Net.Updating)
                        {
                            tpState.Net.Updating = false;
                        }

                        // Request blocks
                        if ((!tpState.PoolsOut.Any() && !tpState.PoolsIn.Any()))
                        {
                            var result = client.PoolListGet(0, SizeOut);
                            tpState.PoolsOut = result.Pools.Select(p => new PoolInfo(p)).ToList();
                        }
                        else
                        {
                            var result = client.PoolListGet(0, 20);
                            lock (tpState.PoolsLock)
                            {
                                var firstPoolNum = tpState.PoolsIn.Any()
                                    ? tpState.PoolsIn[0].Number
                                    : tpState.PoolsOut[0].Number;
                                var nPools = result.Pools.TakeWhile(p => (p.PoolNumber > firstPoolNum) || (p.PoolNumber < firstPoolNum - 1000)).Select(p => new PoolInfo(p)).ToList();
                                tpState.PoolsIn = nPools.Concat(tpState.PoolsIn).ToList();
                            }
                        }

                        // Request stats
                        if (tpState.StatRequestCounter == 0)
                        {
                            var stats = client.StatsGet();
                            if (stats != null && stats.Stats.Count >= 4)
                            {
                                var statsSorted = stats.Stats.OrderBy(s => s.PeriodDuration).ToList();
                                var statData    = new StatData();
                                for (var i = 0; i < 4; i++)
                                {
                                    statData.Pdata[i] = new PeriodData(statsSorted[i]);
                                }
                                tpState.StatData = statData;
                            }
                        }
                    }
                }
                else if (tpState.Net.Api.EndsWith("/TestApi"))
                {
                    using (var client = ApiFab.CreateTestApi(tpState.Net.Ip))
                    {
                        // Service available
                        if (tpState.Net.Updating)
                        {
                            tpState.Net.Updating = false;
                        }

                        // Request blocks
                        if ((!tpState.PoolsOut.Any() && !tpState.PoolsIn.Any()))
                        {
                            var result = client.PoolListGet(0, SizeOut);
                            tpState.PoolsOut = result.Pools.Where(p => p.PoolNumber > 0).Select(p => new PoolInfo(p)).ToList();
                        }
                        else
                        {
                            var result = client.PoolListGet(0, 20);
                            lock (tpState.PoolsLock)
                            {
                                var firstPoolNum = tpState.PoolsIn.Any()
                                    ? tpState.PoolsIn[0].Number
                                    : tpState.PoolsOut[0].Number;
                                var nPools = result.Pools.Where(p => p.PoolNumber > 0).TakeWhile(p => (p.PoolNumber > firstPoolNum) || (p.PoolNumber < firstPoolNum - 1000)).Select(p => new PoolInfo(p)).ToList();
                                tpState.PoolsIn = nPools.Concat(tpState.PoolsIn).ToList();
                            }
                        }

                        // Request stats
                        if (tpState.StatRequestCounter == 0)
                        {
                            var stats = client.StatsGet();
                            if (stats != null && stats.Stats.Count >= 4)
                            {
                                var statsSorted = stats.Stats.OrderBy(s => s.PeriodDuration).ToList();
                                var statData    = new StatData();
                                for (var i = 0; i < 4; i++)
                                {
                                    statData.Pdata[i] = new PeriodData(statsSorted[i]);
                                }
                                tpState.StatData = statData;
                            }
                        }
                    }
                }
                else if (tpState.Net.Api.EndsWith("/ReleaseApi"))
                {
                    using (var client = ApiFab.CreateReleaseApi(tpState.Net.Ip))
                    {
                        // Service available
                        if (tpState.Net.Updating)
                        {
                            tpState.Net.Updating = false;
                        }

                        // Request blocks
                        if ((!tpState.PoolsOut.Any() && !tpState.PoolsIn.Any()))
                        {
                            var result = client.PoolListGet(0, SizeOut);
                            tpState.PoolsOut = result.Pools.Where(p => p.PoolNumber > 0).Select(p => new PoolInfo(p)).ToList();
                        }
                        else
                        {
                            var result = client.PoolListGet(0, 20);

                            var firstPoolNum = tpState.PoolsIn.Any()
                                ? tpState.PoolsIn[0].Number
                                : tpState.PoolsOut[0].Number;

                            var newPools = result.Pools
                                           .Where(p => p.PoolNumber > 0)
                                           .TakeWhile(p => p.PoolNumber > firstPoolNum || p.PoolNumber < firstPoolNum - 1000)
                                           .Select(p => new PoolInfo(p)).ToList();

                            lock (tpState.PoolsLock)
                                tpState.PoolsIn = newPools.Concat(tpState.PoolsIn).ToList();
                        }

                        // Request stats
                        if (tpState.StatRequestCounter == 0)
                        {
                            var stats = client.StatsGet();
                            if (stats != null && stats.Stats.Count >= 4)
                            {
                                var statsSorted = stats.Stats.OrderBy(s => s.PeriodDuration).ToList();
                                var statData    = new StatData();
                                for (var i = 0; i < 4; i++)
                                {
                                    statData.Pdata[i] = new PeriodData(statsSorted[i]);
                                }
                                tpState.StatData = statData;
                            }
                        }
                    }
                }
                if (tpState.StatRequestCounter < Settings.UpdStatsPeriodSec * 1000 / Period)
                {
                    tpState.StatRequestCounter++;
                }
                else
                {
                    tpState.StatRequestCounter = 0;
                }
            }
            catch (Thrift.Transport.TTransportException e)
            {
                tpState.Net.Updating = true;
                _logger.LogError(e, "");
            }
            catch (Exception e)
            {
                _logger.LogError(e, "");
            }
            tpState.TimerForCache.Change(Period, 0);
        }
예제 #26
0
    private void _KQrCDNrUysA4qKaWspdpLvKfrZf(Status status)
    {
        using List <StatData> .Enumerator enumerator = status._Stats.GetEnumerator();
        StatData current = default(StatData);

        while (true)
        {
            int num;
            int num2;
            if (enumerator.MoveNext())
            {
                num  = -944982043;
                num2 = num;
            }
            else
            {
                num  = -1784025007;
                num2 = num;
            }
            while (true)
            {
                uint num3;
                switch ((num3 = (uint)num ^ 0xB331DFFDu) % 9u)
                {
                case 2u:
                    num = -944982043;
                    continue;

                default:
                    return;

                case 0u:
                    break;

                case 5u:
                {
                    int num6;
                    int num7;
                    if (_kGGu3Lri5FWVdDmWIhivvRjNI8C.ContainsKey(status._ObjectId))
                    {
                        num6 = 188110050;
                        num7 = num6;
                    }
                    else
                    {
                        num6 = 1314723798;
                        num7 = num6;
                    }
                    num = num6 ^ ((int)num3 * -1354571639);
                    continue;
                }

                case 1u:
                    _kGGu3Lri5FWVdDmWIhivvRjNI8C[status._ObjectId] = current._StatValue;
                    num = ((int)num3 * -124848994) ^ 0x5E5F7C04;
                    continue;

                case 8u:
                {
                    current = enumerator.Current;
                    int num8;
                    if (!StatType._BEkCFGP4TWapPej8J0mAjEGM8LD(current._StatType, StatType._zMlSnmW3LLSxr4x3sZAbRbWfh8Y))
                    {
                        num  = -306783742;
                        num8 = num;
                    }
                    else
                    {
                        num  = -2052494855;
                        num8 = num;
                    }
                    continue;
                }

                case 7u:
                    current._StatValue = _EVhCC0ekBrEVLjZ30fXud3hsfYm(status._ObjectId);
                    num = (int)(num3 * 137401864) ^ -1565657382;
                    continue;

                case 3u:
                {
                    int num4;
                    int num5;
                    if (Settings.Default.AntiLagAllyPlayerSize != 100)
                    {
                        num4 = -547961178;
                        num5 = num4;
                    }
                    else
                    {
                        num4 = -1752154676;
                        num5 = num4;
                    }
                    num = num4 ^ ((int)num3 * -371768438);
                    continue;
                }

                case 6u:
                    return;

                case 4u:
                    return;
                }
                break;
            }
        }
    }
        private static Func <SingleValueItemStat, decimal> GetSingleValueItemStatValueSumFunction(StatData pseudoStatData)
        {
            Func <SingleValueItemStat, decimal> sumFunction = itemStat => itemStat.Value;

            if (pseudoStatData.Id is PseudoStatId.TotalElementalResistance or PseudoStatId.TotalResistance)
            {
                sumFunction = itemStat =>
                {
                    switch (itemStat.Id)
                    {
                    case StatId.FireAndColdResistance:
                    case StatId.FireAndLightningResistance:
                    case StatId.ColdAndLightningResistance:
                        return(itemStat.Value + itemStat.Value);

                    default:
                        return(itemStat.Value);
                    }
                };
            }

            return(sumFunction);
        }
예제 #28
0
 public RootObject(ulong userId)
 {
     UserData = new UserData(userId);
     Stats    = new StatData();
     ModData  = new ModData();
 }
예제 #29
0
 private Hashtable CollectFiles(ProjectItem item)
 {
     Hashtable list = new Hashtable();
     if (item == null) return list;
     for(short i = 1; i <= item.FileCount; i++)
     {
         if (item.Kind == EnvDTE.Constants.vsProjectItemKindPhysicalFile)
         {
             string filename = item.get_FileNames(i);
             System.IO.FileInfo info = new System.IO.FileInfo(filename);
             StatData data = new StatData();
             data.type = StatData.FileType.Unknown;
             data.fileSize = info.Length;
             using (System.IO.StreamReader sr = info.OpenText())
             {
                 string s = sr.ReadToEnd();
                 data.numberOfLines = System.Text.RegularExpressions.Regex.Matches(s, "\n").Count;
                 if (s.Contains("HibernateEntity.vsl"))
                 {
                     data.type = StatData.FileType.Entity;
                 }
                 else if (s.Contains("ValueObject.vsl"))
                 {
                     data.type = StatData.FileType.ValueObject;
                 }
                 else if (s.Contains("NSpringServiceBase.vsl"))
                 {
                     data.type = StatData.FileType.Service;
                 }
                 else if (s.Contains("Enumeration.vsl"))
                 {
                     data.type = StatData.FileType.Enumeration;
                 }
                 sr.Close();
             }
             list.Add(filename, data);
         }
     }
     foreach(ProjectItem subitem in item.ProjectItems)
     {
         MergeHashtable(list, CollectFiles(subitem));
     }
     return list;
 }
예제 #30
0
        private void MakeZLParams(StatData stat, Indices indices)
        {
            // копируем распределение (так как в процессе мы его немного покорежим)
            var distrib = new Distribution(stat.distribution);

            // Нормируем интеграл распределения
            double sum = 0.0f;

            for (int i = 0; i < distrib.channel_count; ++i)
            {
                sum += distrib.channels[i];
            }

            // Нормируем элементы массива
            for (int i = 0; i < distrib.channel_count; ++i)
            {
                distrib.channels[i] /= sum;
            }

            // Также нормируем амплитуду моды... а нужно ли?
            double modeAmplitude = distrib.mode_amplitude / sum;

            // Значение моды
            double mode = distrib.mode;

            // Среднее значение
            double middle; //= statist.Middle;

            // полумода...
            double halfMode = modeAmplitude / 2.0f;

//      bool start = false;
//      int intCount = 0;

            double integral = 0;

            int mode_channel  = (int)((distrib.mode - distrib.min) / distrib.channel_width);
            int start_channel = mode_channel;
            int end_channel   = mode_channel;

            for (
                int i = mode_channel;
                i > -1;
                --i
                )
            {
                if (distrib.channels[i] > halfMode)
                {
                    integral += distrib.channel_width;
                }
                else
                {
                    // провалились ниже половины моды, выходим из цикла
                    start_channel = i + 1;
                }
            }
            for (int i = mode_channel + 1; i < distrib.channel_count; ++i)
            {
                if (distrib.channels[i] > halfMode)
                {
                    integral += distrib.channel_width;
                }
                else
                {
                    // провалились ниже половины моды, выходим из цикла
                    end_channel = i - 1;
                }
            }

            double time0_5 = integral;

            double startVal = (distrib.min + start_channel * distrib.channel_width) / 1000.0f;
            double endVal   = (distrib.min + end_channel * distrib.channel_width) / 1000.0f;

            mode    /= 1000.0f;
            time0_5 /= 1000.0f;

            middle = startVal + 0.5 * time0_5;

            if (mode == 0.0d || middle == 0.0d || time0_5 == 0.0d)
            {
                indices.ZL_SFL = double.NaN;
                indices.ZL_FCL = double.NaN;
                indices.ZL_RS  = double.NaN;
                throw new DataProcessingException(resources.zl_not_enough_data);
            }

            // 1. Функциональный уровень системы
            indices.ZL_SFL = Math.Log(1.0f / (mode * time0_5));

            // 2. Устойчивость реагирования
            indices.ZL_RS = Math.Log(modeAmplitude / time0_5);

            // 3. Уровень функциональных возможностей
            indices.ZL_FCL = Math.Log(modeAmplitude / (time0_5 * middle));
        }
예제 #31
0
		private static void InitData(object context)
		{
            if (context != null && context.GetType() == typeof(int[]))
            {
                _hours = ((int[])context)[0];
                _minutes = ((int[])context)[1];
            }
            else
            {
                _hours = 24;
                _minutes = 60;
            }

            _intervals = _minutes * _hours;

			_dateStarted = DateTime.Now;
			StatData[] data = new StatData[_intervals];
			for (int i = 0; i < _intervals; i++)
			{
				data[i] = new StatData();
			}
			_statData = data;
		}
예제 #32
0
    private void analyzeAssetBundle(Object obj, BuildTarget buildTarget)
    {
        typeStatusMap.Clear();
        typeSizeMap.Clear();
        statistics.Clear();
        analyzedObject = obj;

        string assetPath = Path.GetFullPath(AssetDatabase.GetAssetPath(obj));
        WWW    www       = new WWW("file:///" + assetPath);

        Object[] loadedObjects = www.assetBundle.LoadAllAssets();

        foreach (Object loadedObj in loadedObjects)
        {
            string directory = outputPath + "/" + loadedObj.GetType().FullName + "/";
            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            string bundlePath = directory + loadedObj.name.Replace("/", ".") + "." + loadedObj.GetInstanceID() + ".bytes";
            BuildPipeline.BuildAssetBundle(loadedObj, null, bundlePath,
                                           compressed ? 0 : BuildAssetBundleOptions.UncompressedAssetBundle,
                                           buildTarget);

            if (File.Exists(bundlePath))
            {
                StatData stat = new StatData();
                stat.objName  = loadedObj.name;
                stat.typeName = loadedObj.GetType().FullName;

                FileInfo fileInfo = new FileInfo(bundlePath);
                stat.size = (int)fileInfo.Length;

                statistics.Add(stat);
            }
        }

        www.assetBundle.Unload(true);
        www.Dispose();

        // fill type size map
        foreach (StatData data in statistics)
        {
            if (typeSizeMap.ContainsKey(data.typeName))
            {
                typeSizeMap[data.typeName] += data.size;
            }
            else
            {
                typeSizeMap.Add(data.typeName, data.size);
            }
        }

        // fill type status map
        foreach (string typeName in typeSizeMap.Keys)
        {
            typeStatusMap.Add(typeName, false);
        }

        statistics.Sort(new StatDataComparer(typeSizeMap));
    }
예제 #33
0
 void Start()
 {
     localStatData       = GlobalControl.Instance.savedStatData;
     localSkillData      = GlobalControl.Instance.savedSkillData;
     localProfessionData = GlobalControl.Instance.savedProfessionData;
 }
예제 #34
0
    // Token: 0x06000477 RID: 1143 RVA: 0x00017BF4 File Offset: 0x00015DF4
    private void FixPlayerDebuffs(List <StatData> statData)
    {
        StatData statData2 = null;
        StatData statData3 = null;

        foreach (StatData statData4 in statData)
        {
            if (StatsType.Id(statData4.Id, StatsType.Effects))
            {
                statData2 = statData4;
            }
            else if (StatsType.Id(statData4.Id, StatsType.Effects2))
            {
                statData3 = statData4;
            }
            if (statData2 != null && statData3 != null)
            {
                break;
            }
        }
        if (statData2 == null)
        {
            statData2 = this.PlayerCondition1Stat();
            statData.Add(statData2);
        }
        if (statData3 == null)
        {
            statData3 = this.PlayerCondition2Stat();
            statData.Add(statData3);
        }
        int num  = 0;
        int num2 = 0;
        int num3 = 0;

        if (Settings.Default.IgnoreQuiet)
        {
            num |= 2;
        }
        if (Settings.Default.IgnoreWeak)
        {
            num |= 4;
        }
        if (Settings.Default.IgnoreSlowed)
        {
            num |= 8;
        }
        if (Settings.Default.IgnoreSick)
        {
            num |= 16;
        }
        if (Settings.Default.IgnoreDazed)
        {
            num |= 32;
        }
        if (Settings.Default.IgnoreStunned)
        {
            num |= 64;
        }
        if (Settings.Default.IgnoreParalyzed)
        {
            num |= 8192;
        }
        if (Settings.Default.IgnoreBleeding)
        {
            num |= 32768;
        }
        if (Settings.Default.IgnoreArmorBreak)
        {
            num |= 67108864;
        }
        if (Settings.Default.IgnorePetStasis)
        {
            num |= 2097152;
        }
        if (Settings.Default.IgnoreBlind)
        {
            num3 |= 128;
        }
        if (Settings.Default.IgnoreHallucinating)
        {
            num3 |= 256;
        }
        if (Settings.Default.IgnoreDrunk)
        {
            num3 |= 512;
        }
        if (Settings.Default.IgnoreConfused)
        {
            num3 |= 1024;
        }
        if (Settings.Default.IgnoreUnstable)
        {
            num3 |= 536870912;
        }
        if (Settings.Default.IgnoreDarkness)
        {
            num3 |= 1073741824;
        }
        if (Settings.Default.IgnorePetrified)
        {
            num2 |= 8;
        }
        if (Settings.Default.IgnoreSilence)
        {
            num2 |= 65536;
        }
        statData2.IntValue &= ~num3;
        if (this._aoeDebuff)
        {
            this._aoeDebuff = false;
        }
        else if (this._needsServerDebuffsFixed)
        {
            statData2.IntValue &= ~num;
        }
        if (this._aoeDebuff)
        {
            this._aoeDebuff = false;
            return;
        }
        if (this._needsServerDebuffsFixed)
        {
            statData3.IntValue &= ~num2;
        }
    }
예제 #35
0
 private long NumberOfItemsByType(Hashtable list, StatData.FileType type)
 {
     long items = 0;
     foreach (string key in list.Keys)
     {
         StatData data = (StatData)list[key];
         if (data.type == type)
         {
             items++;
         }
     }
     return items;
 }