示例#1
0
 private void Reset()
 {
     this.m_enLastEventPriority = CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_INVALID;
     this.m_lLastEventStartTime = 0L;
     this.m_lLastEventEndTime   = 0L;
     this.m_lGameStartTime      = 0L;
     this.m_lGameEndTime        = 0L;
     this.m_iContinuKillMaxNum  = -1;
     this.m_bIsStartRecordOk    = false;
     this.m_bIsMvp                   = false;
     this.m_iHostPlaterKillNum       = 0;
     this.m_iHostPlaterDeadNum       = 0;
     this.m_iHostPlaterAssistNum     = 0;
     this.m_bIsCallGameJoyGenerate   = false;
     this.m_bIsCallStopGameJoyRecord = false;
     this.m_lVideoTimeLen            = 0L;
     if (this.m_hostActor)
     {
         this.m_hostActor.Release();
     }
     if (this.m_stRecordInfo != null)
     {
         this.m_stRecordInfo.Clear();
     }
     this.m_uiEventStartTimeInterval            = GameDataMgr.GetGlobeValue(219) * 1000u;
     this.m_uiEventEndTimeInterval              = GameDataMgr.GetGlobeValue(249) * 1000u;
     this.m_uiEventNumMax                       = GameDataMgr.GetGlobeValue(220);
     this.m_ui543KillEventTotalTime             = GameDataMgr.GetGlobeValue(221) * 1000u;
     this.m_ui210KillEventTotalTime             = GameDataMgr.GetGlobeValue(256) * 1000u;
     this.m_uiMinSpaceLimit                     = GameDataMgr.GetGlobeValue(231);
     this.m_uiOnceDoubleEventTimeIntervalReduce = GameDataMgr.GetGlobeValue(248) * 1000u;
 }
示例#2
0
        private void UpdateRecordEvent(PoolObjHandle <ActorRoot> eventActor, CRecordUseSDK.RECORD_EVENT_PRIORITY eventPriority)
        {
            if (!this.m_bIsRecordMomentsEnable || !this.m_bIsStartRecordOk)
            {
                return;
            }
            if (eventPriority != CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_INVALID && Singleton <GamePlayerCenter> .get_instance().GetHostPlayer().Captain != eventActor)
            {
                return;
            }
            long num  = GameJoy.get_getSystemCurrentTimeMillis() - this.m_lGameStartTime;
            bool flag = false;

            if (eventActor && eventActor.get_handle().ActorControl != null)
            {
                HeroWrapper heroWrapper = eventActor.get_handle().ActorControl as HeroWrapper;
                if (heroWrapper != null)
                {
                    flag = heroWrapper.IsInMultiKill();
                }
            }
            if (!flag || eventPriority == CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_INVALID)
            {
                if (this.m_enLastEventPriority > CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_INVALID)
                {
                    this.AddRecordEvent(this.m_enLastEventPriority, this.m_lLastEventStartTime, this.m_lLastEventEndTime);
                }
                this.m_enLastEventPriority = eventPriority;
                this.m_lLastEventStartTime = num;
                this.m_lLastEventEndTime   = num;
            }
            else
            {
                if (this.m_enLastEventPriority != CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_INVALID && eventPriority <= this.m_enLastEventPriority)
                {
                    return;
                }
                if (this.m_enLastEventPriority <= CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_ASSIST)
                {
                    this.m_lLastEventStartTime = num;
                }
                this.m_enLastEventPriority = eventPriority;
                this.m_lLastEventEndTime   = num;
            }
        }
示例#3
0
        private void AddRecordEvent(CRecordUseSDK.RECORD_EVENT_PRIORITY eventPriority, long lStartTime, long lEndTime)
        {
            if (this.m_stRecordInfo == null)
            {
                return;
            }
            SortedList <long, long> sortedList = null;

            if (!this.m_stRecordInfo.TryGetValue(eventPriority, ref sortedList))
            {
                sortedList = new SortedList <long, long>();
                this.m_stRecordInfo.Add(eventPriority, sortedList);
            }
            if (sortedList != null && !sortedList.ContainsKey(lStartTime))
            {
                sortedList.Add(lStartTime, lEndTime);
            }
            this.m_enLastEventPriority = CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_INVALID;
        }
示例#4
0
 public RECORD_INFO(CRecordUseSDK.RECORD_EVENT_PRIORITY _eventPriority, long _lEndTime)
 {
     this.eventPriority = _eventPriority;
     this.lEndTime      = _lEndTime;
 }
示例#5
0
        private void ChooseTopEvent()
        {
            int  num  = 0;
            int  num2 = 0;
            bool flag = false;
            SortedList <long, CRecordUseSDK.RECORD_INFO> sortedList = new SortedList <long, CRecordUseSDK.RECORD_INFO>();
            SortedList <long, long> sortedList2 = null;

            for (CRecordUseSDK.RECORD_EVENT_PRIORITY rECORD_EVENT_PRIORITY = CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_PENTAKILL; rECORD_EVENT_PRIORITY > CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_DOUBLEKILL; rECORD_EVENT_PRIORITY--)
            {
                if (this.m_stRecordInfo != null && this.m_stRecordInfo.TryGetValue(rECORD_EVENT_PRIORITY, ref sortedList2) && sortedList2 != null)
                {
                    IEnumerator <KeyValuePair <long, long> > enumerator = sortedList2.GetEnumerator();
                    while (enumerator.MoveNext())
                    {
                        num2++;
                        if ((long)num2 > (long)((ulong)this.m_uiEventNumMax))
                        {
                            flag = true;
                            break;
                        }
                        KeyValuePair <long, long> current = enumerator.get_Current();
                        long arg_9F_0;
                        if (current.get_Key() < (long)((ulong)this.m_uiEventStartTimeInterval))
                        {
                            arg_9F_0 = 0L;
                        }
                        else
                        {
                            KeyValuePair <long, long> current2 = enumerator.get_Current();
                            arg_9F_0 = current2.get_Key() - (long)((ulong)this.m_uiEventStartTimeInterval);
                        }
                        long num3 = arg_9F_0;
                        KeyValuePair <long, long> current3 = enumerator.get_Current();
                        long num4 = current3.get_Value() + (long)((ulong)this.m_uiEventEndTimeInterval);
                        num4 = ((num4 <= this.m_lGameEndTime) ? num4 : this.m_lGameEndTime);
                        num += (int)(num4 - num3);
                        if ((long)num > (long)((ulong)this.m_ui543KillEventTotalTime))
                        {
                            flag = true;
                            break;
                        }
                        if (!sortedList.ContainsKey(num3))
                        {
                            sortedList.Add(num3, new CRecordUseSDK.RECORD_INFO(rECORD_EVENT_PRIORITY, num4));
                        }
                    }
                }
                if (flag)
                {
                    break;
                }
            }
            if (!flag && (long)num < (long)((ulong)this.m_ui210KillEventTotalTime))
            {
                bool flag2 = false;
                SortedList <int, SortedList <long, long> > sortedList3 = null;
                SortedList <long, long> sortedList4 = null;
                if (this.m_stRecordInfo != null && this.m_stRecordInfo.TryGetValue(CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_ASSIST, ref sortedList4))
                {
                    flag2 = true;
                }
                for (CRecordUseSDK.RECORD_EVENT_PRIORITY rECORD_EVENT_PRIORITY2 = CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_DOUBLEKILL; rECORD_EVENT_PRIORITY2 > CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_ASSIST; rECORD_EVENT_PRIORITY2--)
                {
                    if (this.m_stRecordInfo != null && this.m_stRecordInfo.TryGetValue(rECORD_EVENT_PRIORITY2, ref sortedList2) && sortedList2 != null)
                    {
                        IEnumerator <KeyValuePair <long, long> > enumerator2 = sortedList2.GetEnumerator();
                        while (enumerator2.MoveNext())
                        {
                            KeyValuePair <long, long> current4 = enumerator2.get_Current();
                            long arg_1ED_0;
                            if (current4.get_Key() < (long)((ulong)this.m_uiEventStartTimeInterval))
                            {
                                arg_1ED_0 = 0L;
                            }
                            else
                            {
                                KeyValuePair <long, long> current5 = enumerator2.get_Current();
                                arg_1ED_0 = current5.get_Key() - (long)((ulong)this.m_uiEventStartTimeInterval);
                            }
                            long num5 = arg_1ED_0;
                            KeyValuePair <long, long> current6 = enumerator2.get_Current();
                            long num6 = current6.get_Value() + (long)((ulong)this.m_uiEventEndTimeInterval) - (long)((ulong)this.m_uiOnceDoubleEventTimeIntervalReduce);
                            num6 = ((num6 <= this.m_lGameEndTime) ? num6 : this.m_lGameEndTime);
                            if (!flag2)
                            {
                                num2++;
                                if ((long)num2 > (long)((ulong)this.m_uiEventNumMax))
                                {
                                    flag = true;
                                    break;
                                }
                                num += (int)(num6 - num5);
                                if ((long)num > (long)((ulong)this.m_ui210KillEventTotalTime))
                                {
                                    flag = true;
                                    break;
                                }
                                if (!sortedList.ContainsKey(num5))
                                {
                                    sortedList.Add(num5, new CRecordUseSDK.RECORD_INFO(rECORD_EVENT_PRIORITY2, num6));
                                }
                            }
                            else
                            {
                                int assistCountWithTime = this.GetAssistCountWithTime((float)num5, (float)num6);
                                this.InsertAssistInfo(ref sortedList3, assistCountWithTime, num5, num6);
                            }
                        }
                        if (flag2 && sortedList3 != null && sortedList3.get_Count() > 0)
                        {
                            int count = sortedList3.get_Count();
                            for (int i = count - 1; i >= 0; i--)
                            {
                                sortedList2 = sortedList3.get_Values().get_Item(i);
                                if (sortedList2 != null)
                                {
                                    IEnumerator <KeyValuePair <long, long> > enumerator3 = sortedList2.GetEnumerator();
                                    while (enumerator3.MoveNext())
                                    {
                                        KeyValuePair <long, long> current7 = enumerator3.get_Current();
                                        long key = current7.get_Key();
                                        KeyValuePair <long, long> current8 = enumerator3.get_Current();
                                        long value = current8.get_Value();
                                        num2++;
                                        if ((long)num2 > (long)((ulong)this.m_uiEventNumMax))
                                        {
                                            flag = true;
                                            break;
                                        }
                                        num += (int)(value - key);
                                        if ((long)num > (long)((ulong)this.m_ui210KillEventTotalTime))
                                        {
                                            flag = true;
                                            break;
                                        }
                                        if (!sortedList.ContainsKey(key))
                                        {
                                            sortedList.Add(key, new CRecordUseSDK.RECORD_INFO(rECORD_EVENT_PRIORITY2, value));
                                        }
                                    }
                                }
                            }
                            sortedList3.Clear();
                        }
                    }
                    if (flag)
                    {
                        break;
                    }
                }
                if (!flag && this.m_stRecordInfo != null && this.m_stRecordInfo.TryGetValue(CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_ASSIST, ref sortedList2) && sortedList2 != null)
                {
                    IEnumerator <KeyValuePair <long, long> > enumerator4 = sortedList2.GetEnumerator();
                    while (enumerator4.MoveNext())
                    {
                        KeyValuePair <long, long> current9 = enumerator4.get_Current();
                        long arg_431_0;
                        if (current9.get_Key() < (long)((ulong)this.m_uiEventStartTimeInterval))
                        {
                            arg_431_0 = 0L;
                        }
                        else
                        {
                            KeyValuePair <long, long> current10 = enumerator4.get_Current();
                            arg_431_0 = current10.get_Key() - (long)((ulong)this.m_uiEventStartTimeInterval);
                        }
                        long num7 = arg_431_0;
                        KeyValuePair <long, long> current11 = enumerator4.get_Current();
                        long num8 = current11.get_Value() + (long)((ulong)this.m_uiEventEndTimeInterval) - (long)((ulong)this.m_uiOnceDoubleEventTimeIntervalReduce);
                        num8 = ((num8 <= this.m_lGameEndTime) ? num8 : this.m_lGameEndTime);
                        num2++;
                        if ((long)num2 > (long)((ulong)this.m_uiEventNumMax))
                        {
                            break;
                        }
                        num += (int)(num8 - num7);
                        if ((long)num > (long)((ulong)this.m_ui210KillEventTotalTime))
                        {
                            break;
                        }
                        if (!sortedList.ContainsKey(num7))
                        {
                            sortedList.Add(num7, new CRecordUseSDK.RECORD_INFO(CRecordUseSDK.RECORD_EVENT_PRIORITY.RECORD_EVENT_TYPE_ASSIST, num8));
                        }
                    }
                }
            }
            List <TimeStamp> list  = new List <TimeStamp>();
            long             num9  = 0L;
            long             num10 = 0L;
            IEnumerator <KeyValuePair <long, CRecordUseSDK.RECORD_INFO> > enumerator5 = sortedList.GetEnumerator();

            while (enumerator5.MoveNext())
            {
                KeyValuePair <long, CRecordUseSDK.RECORD_INFO> current12 = enumerator5.get_Current();
                long num11 = current12.get_Key();
                KeyValuePair <long, CRecordUseSDK.RECORD_INFO> current13 = enumerator5.get_Current();
                long lEndTime = current13.get_Value().lEndTime;
                if (list.get_Count() > 0 && num9 > num11)
                {
                    list.RemoveAt(list.get_Count() - 1);
                    num  -= (int)(num9 - num10);
                    num9  = (num9 + num11) / 2L;
                    num11 = num9;
                    num  += (int)(num9 - num10);
                    list.Add(new TimeStamp(num10, num9));
                }
                num10 = num11;
                num9  = lEndTime;
                list.Add(new TimeStamp(num11, lEndTime));
            }
            this.m_bIsCallGameJoyGenerate = true;
            Singleton <GameJoy> .get_instance().GenerateMomentsVideo(list, this.GetVideoName(), this.GetExtraInfos());
        }