Beispiel #1
0
        protected override void OnUpdate()
        {
            var sexTypes  = GetComponentDataFromEntity <SexData>(true);
            var adultData = GetComponentDataFromEntity <Adult>(true);

            Entities
            .WithReadOnly(adultData)
            .WithReadOnly(sexTypes)
            .ForEach((
                         ref LookingForMate lookingForMate,
                         in Translation position,
                         in AnimalTypeData animalType,
                         in SexData sexType,
                         in DynamicBuffer <BucketAnimalData> sensedAnimals) =>
            {
                int closestMateIndex      = -1;
                float closestMateDistance = 0f;

                for (int i = 0; i < sensedAnimals.Length; i++)
                {
                    var sensedAnimalInfo = sensedAnimals[i];

                    AnimalTypeData targetAnimalType = sensedAnimalInfo.AnimalTypeData;
                    SexData targetSexType           = sexTypes[sensedAnimalInfo.Entity];
                    bool targetAdult      = adultData.Exists(sensedAnimalInfo.Entity);
                    float3 targetPosition = sensedAnimalInfo.Position;
                    float targetDistance  = math.distance(targetPosition, position.Value);

                    if (animalType.AnimalTypeId != targetAnimalType.AnimalTypeId)
                    {
                        continue;                                                               // Not the same type of animal
                    }
                    if (closestMateIndex != -1 && targetDistance >= closestMateDistance)
                    {
                        continue;                                                                      // Not the closest
                    }
                    if (sexType.Sex == targetSexType.Sex)
                    {
                        continue;                                       // Not the opposite sex
                    }
                    if (!targetAdult)
                    {
                        continue;                   // Not an adult
                    }
                    closestMateIndex    = i;
                    closestMateDistance = targetDistance;
                }

                // Set result
                if (closestMateIndex != -1)
                {
                    lookingForMate.HasFound = true;
                    lookingForMate.Entity   = sensedAnimals[closestMateIndex].Entity;
                    lookingForMate.Position = sensedAnimals[closestMateIndex].Position;
                }
                else
                {
                    lookingForMate.HasFound = false;
                }
            }).ScheduleParallel();
Beispiel #2
0
    public void ShowDay(DateTime day)
    {
        sd = mwm.sd;

        DataList dataList = new DataList();

        for (int i = 0; i < mwm.data.list.Count; i++)
        {
            DateTime tmp = DateTime.Parse(mwm.data.list[i].Date);
            if (tmp.Year == day.Year && tmp.DayOfYear == day.DayOfYear)
            {
                dataList.list.Add(mwm.data.list[i]);
            }
            if (tmp.Year > day.Year || tmp.DayOfYear > day.DayOfYear)
            {
                break;
            }
        }
        dataList.list.Reverse();

        if (dataList.list.Count < 3)
        {
            Content.GetComponent <RectTransform>().sizeDelta = new Vector2(0, 600);
        }
        else if (dataList.list.Count < 20)
        {
            Content.GetComponent <RectTransform>().sizeDelta = new Vector2(0, 600 + (dataList.list.Count - 2) * 300);
        }
        else
        {
            Content.GetComponent <RectTransform>().sizeDelta = new Vector2(0, 600 + 18 * 300);
        }

        for (int i = 0; i < 20; i++)
        {
            if (i < dataList.list.Count)
            {
                SexData sex = dataList.list[dataList.list.Count - 1 - i];
                Content.transform.GetChild(0).GetChild(i).GetChild(1).GetComponent <Text>().text = sd.names[0] + ": " + sex.leftPartner.ToString();
                Content.transform.GetChild(0).GetChild(i).GetChild(2).GetComponent <Text>().text = sd.names[1] + ": " + sex.rightPartner.ToString();
                Content.transform.GetChild(0).GetChild(i).GetChild(5).GetComponent <Text>().text = sex.Date;
                if (sex.time > 0)
                {
                    Content.transform.GetChild(0).GetChild(i).GetChild(6).GetComponent <Text>().text = (Mathf.Floor(sex.time / 6f) / 10f).ToString(".0") + " min";
                }
                else
                {
                    Content.transform.GetChild(0).GetChild(i).GetChild(6).gameObject.SetActive(false);
                    Content.transform.GetChild(0).GetChild(i).GetChild(4).gameObject.SetActive(false);
                }
                Content.transform.GetChild(0).GetChild(i).gameObject.SetActive(true);
            }
            else
            {
                Content.transform.GetChild(0).GetChild(i).gameObject.SetActive(false);
            }
        }
    }
    public void OKBtn()
    {
        SexData sex = new SexData();

        sex.leftPartner  = int.Parse(pages[1].transform.GetChild(4).GetComponent <Text>().text);
        sex.rightPartner = int.Parse(pages[1].transform.GetChild(5).GetComponent <Text>().text);
        sex.initiator    = pages[1].transform.GetChild(11).GetComponent <Toggle>().isOn;
        bool[] tmp =
        {
            pages[1].transform.GetChild(14).GetComponent <Toggle>().isOn,
            pages[1].transform.GetChild(15).GetComponent <Toggle>().isOn,
            pages[1].transform.GetChild(16).GetComponent <Toggle>().isOn,
            pages[1].transform.GetChild(17).GetComponent <Toggle>().isOn,
        };
        sex.types = tmp;
        if (sex.leftPartner > 0 || sex.rightPartner > 0)
        {
            sex.Date = DateTime.Now.ToString();
            sex.time = timeOf;

            data.list.Add(sex);
            string json = JsonUtility.ToJson(data);
            File.WriteAllText(Application.persistentDataPath + dataFilename, json);

            pages[1].transform.GetChild(4).GetComponent <Text>().text = "0";
            pages[1].transform.GetChild(5).GetComponent <Text>().text = "0";
            pages[1].SetActive(false);
            if (pages[3].active)
            {
                pages[3].SetActive(false);
                pages[0].SetActive(true);
            }
        }
        counters[0].text = (int.Parse(counters[0].text) + sex.leftPartner).ToString();
        counters[1].text = (int.Parse(counters[1].text) + sex.rightPartner).ToString();

        if ((sd.countIndex == 0 && (int.Parse(counters[0].text) > 68 || int.Parse(counters[1].text) > 68)) || (sd.countIndex == 1 && DateTime.Parse(sex.Date) > countFrom + new TimeSpan(30, 0, 0, 0)))
        {
            countFrom    = DateTime.Now;
            sd.countFrom = countFrom.ToString();
            string json = JsonUtility.ToJson(sd);
            File.WriteAllText(Application.persistentDataPath + statsFileName, json);
            counters[0].text = "0";
            counters[1].text = "0";
        }
        Liquid();
    }
        public static TokenData CreateUnknownSexToken(string token, string gameCategory, string femaleFolder, string maleFolder)
        {
            return(new TokenData
            {
                Token = token,
                GetFolder = (fileString, startIndex) =>
                {
                    var substring = fileString.Substring(startIndex); // only check for sex token starting from index
                    var index = SexData.Find(substring).First().Item2;
                    var sexChar = substring[index + 1];
                    var sex = BitConverter.GetBytes(sexChar)[0];

                    var useCommon = Config.Default.UseCommonFolder || string.IsNullOrWhiteSpace(femaleFolder) || string.IsNullOrWhiteSpace(maleFolder);
                    return useCommon ? Path.Combine(Config.Default.CommonFolderPath, gameCategory, sex == 0 ? CardConstants.MaleCategory : CardConstants.FemaleCategory) : sex == 0 ? maleFolder : femaleFolder;
                }
            });
        }
        public void NotifyAboutGet()
        {
            Interlocked.Increment(ref _getCount);

            if (_getCount == _desiredGetCount)
            {
                Task.Run(() =>
                {
                    var sw = new Stopwatch();
                    sw.Start();
                    Console.WriteLine($"{DateTime.Now.ToLongTimeString()} Started preparation for POST");

                    //_swMemory = new System.Timers.Timer(1000);
                    //_swMemory.Elapsed += (sender, args) => { TotalMemoryHelper.Show(); };
                    //_swMemory.Start();

                    StatusData.PrepareForUpdates();
                    CityData.PrepareForUpdates();
                    CountryData.PrepareForUpdates();
                    SNameData.PrepareForUpdates();

                    FNameData.PrepareForUpdates();
                    SexData.PrepareForUpdates();
                    PremiumData.PrepareForUpdates();
                    CodeData.PrepareForUpdates();

                    DomainData.PrepareForUpdates();
                    BirthYearData.PrepareForUpdates();
                    InterestsData.PrepareForUpdates();
                    JoinedYearData.PrepareForUpdates();

                    TotalMemoryHelper.Show();
                    GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
                    GC.Collect();
                    GC.WaitForFullGCApproach();
                    TotalMemoryHelper.Show();


                    Console.WriteLine($"{DateTime.Now.ToLongTimeString()} Finished preparation for POST in {sw.ElapsedMilliseconds} ms");
                });
            }
        }
        private void Statistics(bool full)
        {
            Console.WriteLine($"Current TimeStamp: {Holder.Instance.CurrentTimeStamp}");

            Console.WriteLine($"Sex {SexData.GetStatistics(full)}");
            Console.WriteLine($"Status {StatusData.GetStatistics(full)}");
            Console.WriteLine($"Premium {PremiumData.GetStatistics(full)}");

            Console.WriteLine($"City {CityData.GetStatistics(full)}");
            Console.WriteLine($"Country {CountryData.GetStatistics(full)}");

            Console.WriteLine(value: $"Code {CodeData.GetStatistics(full)}");
            Console.WriteLine($"Domain {DomainData.GetStatistics(full)}");
            Console.WriteLine($"FName {FNameData.GetStatistics(full)}");
            Console.WriteLine($"SName {SNameData.GetStatistics(full)}");

            Console.WriteLine($"Interests {InterestsData.GetStatistics(full)}");

            Console.WriteLine($"BirthYear {BirthYearData.GetStatistics(full)}");
            Console.WriteLine($"JoinedYear {JoinedYearData.GetStatistics(full)}");
        }
    public void TimeSpaceSelector(int t)
    {
        pages[2].transform.GetChild(0).GetChild(0).GetComponent <Text>().text = sd.names[0];
        pages[2].transform.GetChild(0).GetChild(1).GetComponent <Text>().text = sd.names[1];
        selector.rectTransform.localPosition = new Vector3(t * 258, selector.rectTransform.localPosition.y, 0);
        DataList dataList = new DataList();

        if (t < 0)
        {
            for (int i = 0; DateTime.Now.Ticks - DateTime.Parse(data.list[data.list.Count - 1 - i].Date).Ticks < 6048000000040L; i++)
            {
                dataList.list.Add(data.list[data.list.Count - 1 - i]);
                if (i + 1 == data.list.Count)
                {
                    break;
                }
            }
            dataList.list.Reverse();
        }
        else if (t < 1)
        {
            for (int i = 0; DateTime.Now.Ticks - DateTime.Parse(data.list[data.list.Count - 1 - i].Date).Ticks < 25920000000030L; i++)
            {
                dataList.list.Add(data.list[data.list.Count - 1 - i]);
                if (i + 1 == data.list.Count)
                {
                    break;
                }
            }
            dataList.list.Reverse();
        }
        else
        {
            dataList = data;
        }

        int left  = 0;
        int right = 0;

        for (int i = 0; i < dataList.list.Count; i++)
        {
            left  += dataList.list[i].leftPartner;
            right += dataList.list[i].rightPartner;
        }

        pages[2].transform.GetChild(0).GetChild(2).GetComponent <Text>().text = left.ToString();
        pages[2].transform.GetChild(0).GetChild(3).GetComponent <Text>().text = right.ToString();

        if (dataList.list.Count < 5)
        {
            Content.GetComponent <RectTransform>().sizeDelta = new Vector2(0, 1100);
        }
        else if (dataList.list.Count < 20)
        {
            Content.GetComponent <RectTransform>().sizeDelta = new Vector2(0, 1200 + (dataList.list.Count - 4) * 300);
        }
        else
        {
            Content.GetComponent <RectTransform>().sizeDelta = new Vector2(0, 1200 + 16 * 300);
        }

        for (int i = 0; i < 20; i++)
        {
            if (i < dataList.list.Count)
            {
                SexData sex = dataList.list[dataList.list.Count - 1 - i];
                Content.transform.GetChild(0).GetChild(i).GetChild(1).GetComponent <Text>().text = sd.names[0] + ": " + sex.leftPartner.ToString();
                Content.transform.GetChild(0).GetChild(i).GetChild(2).GetComponent <Text>().text = sd.names[1] + ": " + sex.rightPartner.ToString();
                Content.transform.GetChild(0).GetChild(i).GetChild(5).GetComponent <Text>().text = sex.Date;
                if (sex.time > 0)
                {
                    Content.transform.GetChild(0).GetChild(i).GetChild(6).GetComponent <Text>().text = (Mathf.Floor(sex.time / 6f) / 10f).ToString(".0") + " min";
                }
                else
                {
                    Content.transform.GetChild(0).GetChild(i).GetChild(6).gameObject.SetActive(false);
                    Content.transform.GetChild(0).GetChild(i).GetChild(4).gameObject.SetActive(false);
                }
                Content.transform.GetChild(0).GetChild(i).gameObject.SetActive(true);
            }
            else
            {
                Content.transform.GetChild(0).GetChild(i).gameObject.SetActive(false);
            }
        }
    }
        public void CreateMainIndexes(bool afterPost, Stopwatch sw)
        {
            if (afterPost)
            {
                FNameData.PrepareForSort();
                SNameData.PrepareForSort();
                SexData.PrepareForSort();
                StatusData.PrepareForSort();
                CityData.PrepareForSort();
                CountryData.PrepareForSort();
                CodeData.PrepareForSort();
                DomainData.PrepareForSort();
                BirthYearData.PrepareForSort();
                InterestsData.PrepareForSort();
                JoinedYearData.PrepareForSort();
                PremiumData.PrepareForSort();
                GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
                GC.Collect();
                GC.WaitForFullGCApproach();

                Console.WriteLine($"Preparation for sort done in [{sw.ElapsedMilliseconds}] ms");

                Task.Run(() =>
                {
                    LikesBuffer.FillLikes();
                    LikesBuffer = null;
                    Console.WriteLine($"Likes filling done in [{sw.ElapsedMilliseconds}] ms");
                });
            }

            var preparationForGroup1 = Task.Run(() =>
            {
                EmailsStorage.SortAndPropagate();
                FNameData.Sort();
                SNameData.Sort();
                SexData.Sort();
            });

            var preparationForGroup2 = Task.Run(() =>
            {
                StatusData.Sort();
                CityData.Sort();
                CountryData.Sort();
                CodeData.Sort();
                DomainData.Sort();
            });

            var preparationForGroup3 = Task.Run(() =>
            {
                BirthYearData.Sort();
                InterestsData.Sort();
                JoinedYearData.Sort();
                PremiumData.Sort();
            });

            Task.WaitAll(preparationForGroup1, preparationForGroup2, preparationForGroup3);
            Console.WriteLine($"Ids sorting done in [{sw.ElapsedMilliseconds}] ms");

            Holder.Instance.Group.CleanCacheAndCreateNewCache();
            Console.WriteLine($"Cache recreating done in [{sw.ElapsedMilliseconds}] ms");

            Statistics(false);
        }