Example #1
0
        static void DoCombo()
        {
            if (W.Ready && myMenu.Get <MenuCheckbox>("cbW").Checked)
            {
                var WTarget = TSW.GetTarget(myHero.Position, W.Data.Range, (x) => W.Data.GetDamage(x));
                CastW(WTarget);
            }

            if (E.Ready && myMenu.Get <MenuCheckbox>("cbE").Checked)
            {
                var ETarget = TSE.GetTarget(myHero.Position, E.Data.Range, (x) => E.Data.GetDamage(x));
                CastE(ETarget);
            }

            if (Q.Ready && myMenu.Get <MenuCheckbox>("cbQ").Checked)
            {
                if (myMenu.Get <MenuCheckbox>("cbWE").Checked&& !W.Ready && !E.Ready)
                {
                    return;
                }
                var QTarget = TSQ.GetTarget(myHero.Position, Q.Data.ChargedMaxRange + myMenu.Get <MenuSlider>("QExtend").CurrentValue, (x) => Q.Data.GetDamage(x));
                CastQ(QTarget);
            }
        }
Example #2
0
        static void DoHarass()
        {
            if (E.Ready && myHero.ManaPercent >= myMenu.Get <MenuSlider>("hrMPE").CurrentValue&& myMenu.Get <MenuCheckbox>("hrE").Checked)
            {
                var ETarget = TSE.GetTarget(myHero.Position, E.Data.Range, (x) => E.Data.GetDamage(x));
                CastE(ETarget);
            }

            if (W.Ready && myHero.ManaPercent >= myMenu.Get <MenuSlider>("hrMPW").CurrentValue&& myMenu.Get <MenuCheckbox>("hrW").Checked)
            {
                var WTarget = TSW.GetTarget(myHero.Position, W.Data.Range, (x) => W.Data.GetDamage(x));
                CastW(WTarget);
            }

            if (Q.Ready && (QData.Active || myHero.ManaPercent >= myMenu.Get <MenuSlider>("hrMPQ").CurrentValue) && myMenu.Get <MenuCheckbox>("hrQ").Checked)
            {
                if (myMenu.Get <MenuCheckbox>("hrWE").Checked&& !W.Ready && !E.Ready)
                {
                    return;
                }
                var QTarget = TSQ.GetTarget(myHero.Position, Q.Data.ChargedMaxRange + myMenu.Get <MenuSlider>("QExtend").CurrentValue, (x) => Q.Data.GetDamage(x));
                CastQ(QTarget);
            }
        }
        /// <summary>
        /// File upload packet of segments to upload in separated threads
        /// </summary>
        /// <param name="AccountSrc"></param>
        /// <param name="AccountDst"></param>
        /// <param name="MailSendParam_"></param>
        /// <param name="MF"></param>
        /// <param name="FileName"></param>
        /// <param name="FileSegmentProgress"></param>
        /// <param name="FileSegmentCount"></param>
        /// <param name="FileSegmentToDo"></param>
        /// <param name="FileSegmentSize"></param>
        /// <param name="SegmentMode"></param>
        /// <param name="SegmentImageSize"></param>
        /// <param name="cancel"></param>
        public static bool FileUploadMsg(int[] AccountSrc, int[] AccountDst, List <MailSendParam> MailSendParam_, ref MailFile[] MF, string[] FileName, ref int[] FileSegmentProgress, int[] FileSegmentCount, int[] FileSegmentToDo, int FileSegmentSize, int SegmentMode, int SegmentImageSize, CancellationTokenSource cancel)
        {
            Stopwatch_ SW = new Stopwatch_();

            // Assign slots to each used account to reuse as many of existing connection as possible
            for (int i = 0; i < AccountSrc.Length; i++)
            {
                int           SmtpClientSlot     = 0;
                HashSet <int> SmtpClientSlotUsed = new HashSet <int>();
                SmtpClientSlotUsed.Clear();
                for (int ii = 0; ii < MailSendParam_.Count; ii++)
                {
                    if (MailSendParam_[ii].AccountSrcN == i)
                    {
                        SmtpClientSlotUsed.Add(MailSendParam_[ii].SmtpClientSlot);
                    }
                }
                while (SmtpClientSlotUsed.Contains(SmtpClientSlot))
                {
                    SmtpClientSlot++;
                }
                for (int ii = 0; ii < MailSendParam_.Count; ii++)
                {
                    if (MailSendParam_[ii].AccountSrcN == i)
                    {
                        if (MailSendParam_[ii].SmtpClientSlot < 0)
                        {
                            MailSendParam_[ii].SmtpClientSlot = SmtpClientSlot;
                            SmtpClientSlot++;
                        }
                    }
                }
            }

            // Size of segment packet
            int TotalSize = 0;

            int I = 0;

            // If number of sending threads is 1, there is not necessary to create separate thread
            if (MailSendParam_.Count == 1)
            {
                MailSendParam MailSendParam___ = MailSendParam_[0];
                MailSendParam___.Idx      = I;
                MailSendParam___.ThreadNo = 1;
                MailSend(ref MailSendParam___, FileName, FileSegmentSize, FileSegmentCount, MailAccountList, AccountDst, SegmentMode, SegmentImageSize, cancel);
            }
            else
            {
                List <Thread> Thr = new List <Thread>();
                while ((I < MailSendParam_.Count) && (I < ThreadsUpload))
                {
                    MailSendParam MailSendParam___ = MailSendParam_[I];
                    MailSendParam___.Idx      = I;
                    MailSendParam___.ThreadNo = Thr.Count + 1;
                    Thread Thr_ = new Thread(() => MailSend(ref MailSendParam___, FileName, FileSegmentSize, FileSegmentCount, MailAccountList, AccountDst, SegmentMode, SegmentImageSize, cancel));
                    Thr_.Start();
                    Thr.Add(Thr_);
                    I++;
                }
                foreach (Thread Thr_ in Thr)
                {
                    Thr_.Join();
                }
                I--;
            }

            // Encounting data size and removing segments from packet, which are sent correctly,
            // changing account number to next number in current group for not sent segments
            bool UploadedSomething = false;

            while (I >= 0)
            {
                if (MailSendParam_[I].Good)
                {
                    UploadedSomething = true;
                    MF[MailSendParam_[I].FileI].MapSet(MailSendParam_[I].FileSegmentNum, 1);
                    FileSegmentProgress[MailSendParam_[I].FileI]++;
                    TotalSize += MailSendParam_[I].FileSegmentSize;
                    MailSendParam_.RemoveAt(I);
                }
                else
                {
                    MF[MailSendParam_[I].FileI].MapSet(MailSendParam_[I].FileSegmentNum, 0);
                    MailSendParam_[I].AccountSrcN++;
                    if (AccountSrc[MailSendParam_[I].AccountSrcN] < 0)
                    {
                        MailSendParam_[I].AccountSrcN--;
                        while (AccountSrc[MailSendParam_[I].AccountSrcN] >= 0)
                        {
                            MailSendParam_[I].AccountSrcN--;
                        }
                        MailSendParam_[I].AccountSrcN++;
                    }
                    MailSendParam_[I].AccountSrc     = AccountSrc[MailSendParam_[I].AccountSrcN];
                    MailSendParam_[I].SmtpClientSlot = -1;
                }
                I--;
            }

            // Print progress after packet send attemp and transfer of the packet segments
            long GetDataSizeSum         = 0;
            long GetDataSizeSegSum      = 0;
            int  FileSegmentProgressSum = 0;
            int  FileSegmentToDoSum     = 0;

            for (int i_ = 0; i_ < MF.Length; i_++)
            {
                GetDataSizeSum         += MF[i_].GetDataSize();
                GetDataSizeSegSum      += MF[i_].GetDataSizeSeg();
                FileSegmentProgressSum += FileSegmentProgress[i_];
                FileSegmentToDoSum     += FileSegmentToDo[i_];
            }
            Console_WriteLine("Upload progress: " + FileSegmentProgressSum + "/" + FileSegmentToDoSum);
            Console_WriteLine("Upload speed: " + KBPS(TotalSize, SW.Elapsed()));
            Log(TSW.Elapsed().ToString(), LogDiffS(FileSegmentProgressSum).ToString(), FileSegmentProgressSum.ToString(), FileSegmentToDoSum.ToString(), LogDiffB(KBPS_Bytes).ToString(), KBPS_B(), GetDataSizeSum.ToString(), GetDataSizeSegSum.ToString());

            // If uploaded something, return true, otherwise return false
            if (UploadedSomething)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #4
0
 private static void TxScrollWindowEx(IntPtr pThis, int dx, int dy, IntPtr lprcScroll, IntPtr lprcClip, IntPtr hrgnUpdate, IntPtr lprcUpdate, TSW fuScroll) => GetHost(pThis).TxScrollWindowEx(dx, dy, lprcScroll, lprcClip, hrgnUpdate, lprcUpdate, fuScroll);