Ejemplo n.º 1
0
        public int AddTemplate(int FolderId, string TxtNewNoteName, string Content)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢筆記資料夾
            CNoteFolder myFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                   .FirstOrDefault(f => f.fFolderId == FolderId);
            int   level  = CNoteFactory.fn私人筆記查詢(myFolder).Where(n => n.fIsTrash == false).Count();
            CNote myNote = new CNote()
            {
                fCreateDateTime   = DateTime.UtcNow.AddHours(08),
                fEditDateTime     = DateTime.UtcNow.AddHours(08),
                fFolderId         = FolderId,
                fIsMyFavourite    = false,
                fIsTrash          = false,
                fHTMLContent      = "",
                fJsonContent      = Content,
                fNoteListLevel    = level,
                fNoteListName     = TxtNewNoteName,
                fTheContactPerson = null,
                fTheShareLink     = null
            };

            int noteid = CNoteFactory.fn私人筆記新增(myFolder, myNote);

            return(noteid);
        }
Ejemplo n.º 2
0
        public ActionResult DeleteNote(int FolderId, int NoteId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢筆記資料夾
            CNoteFolder myFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                   .FirstOrDefault(f => f.fFolderId == FolderId);

            CNote myNote = CNoteFactory.fn私人筆記查詢(myFolder)
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            CNoteFactory.fn私人筆記刪除(myNote);
            //查詢所有的筆記資料夾
            List <CNoteFolder> lsFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                          .ToList();
            //筆記資料夾包含筆記的列表
            List <CNoteFolderViewModel> lsNotefolderVM = new List <CNoteFolderViewModel>();

            //讀取筆記資料夾內的筆記
            foreach (var folder in lsFolder)
            {
                List <CNote> myLsNote = CNoteFactory.fn私人筆記查詢(folder)
                                        .ToList();
                lsNotefolderVM.Add(new CNoteFolderViewModel()
                {
                    fFolderId   = folder.fFolderId,
                    fFolderName = folder.fFolderName,
                    fMemberId   = folder.fMemberId,
                    lsNote      = myLsNote
                });
            }

            return(PartialView("_TrashView", lsNotefolderVM));
            //return "筆記永久刪除成功!";
        }
Ejemplo n.º 3
0
        public string Search(int FolderId, int NoteId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記全部查詢()
                           .FirstOrDefault(n => n.fNoteId == NoteId && n.fIsTrash == false);

            return(myNote.fJsonContent);
        }
Ejemplo n.º 4
0
        public string SearchFavor(int FolderId, int NoteId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢筆記資料夾
            CNoteFolder myFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                   .FirstOrDefault(f => f.fFolderId == (int)FolderId);
            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記查詢(myFolder)
                           .FirstOrDefault(n => n.fNoteId == NoteId && n.fIsTrash == false && n.fIsMyFavourite == true);

            return(myNote.fJsonContent);
        }
Ejemplo n.º 5
0
        public string UpdateVersion(int NoteId, string JsonContent)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員

            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記全部查詢()
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            myNote.fJsonContent  = JsonContent;
            myNote.fEditDateTime = DateTime.UtcNow.AddHours(08);
            CNoteFactory.fn私人筆記更新(myNote);
            return("筆記更新成功");
        }
Ejemplo n.º 6
0
        public string AddVersion(int NoteId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員

            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記全部查詢()
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            myNote.fEditDateTime = DateTime.UtcNow.AddHours(08);
            CVersionFactory.fn筆記版本控制新增(myNote);

            return("版本紀錄新增成功!");
        }
Ejemplo n.º 7
0
        public ActionResult SearchVersion(int FolderId, int NoteId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢筆記資料夾
            CNoteFolder myFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                   .FirstOrDefault(f => f.fFolderId == (int)FolderId);
            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記查詢(myFolder)
                           .FirstOrDefault(n => n.fNoteId == NoteId && n.fIsTrash == false);
            List <CVersion> lsVersion = CVersionFactory.fn筆記版本控制查詢(myNote);

            return(PartialView("_SearchVersionView", lsVersion));
        }
Ejemplo n.º 8
0
        public string UpdateNoteLevel(int FolderId, int NoteId, int Level)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員

            CNote myNote = CNoteFactory.fn私人筆記全部查詢()
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            //if(myNote.fFolderId == FolderId && myNote.fNoteId == NoteId && myNote.fNoteListLevel == Level)
            //    return myNote.fNoteListName + " 筆記順序更新成功!";
            myNote.fFolderId      = FolderId;
            myNote.fNoteListLevel = Level;
            CNoteFactory.fn私人筆記更新(myNote);
            return(myNote.fNoteListName + " 筆記順序更新成功!");
        }
Ejemplo n.º 9
0
        public string NoteRename(int FolderId, int NoteId, string NoteName)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢筆記資料夾
            CNoteFolder myFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                   .FirstOrDefault(f => f.fFolderId == FolderId);
            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記查詢(myFolder)
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            myNote.fNoteListName = NoteName;
            myNote.fEditDateTime = DateTime.UtcNow.AddHours(08);
            CNoteFactory.fn私人筆記更新(myNote);
            return("筆記已重新命名!");
        }
Ejemplo n.º 10
0
        public string Update(int FolderId, int NoteId, string JsonContent)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢筆記資料夾
            CNoteFolder myFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                   .FirstOrDefault(f => f.fFolderId == FolderId);
            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記查詢(myFolder)
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            myNote.fJsonContent  = JsonContent;
            myNote.fEditDateTime = DateTime.UtcNow.AddHours(08);
            CNoteFactory.fn私人筆記更新(myNote);
            return("筆記更新成功");
        }
        //修改GET抓取JSON資料
        //string myProductContent;
        public JsonResult EditProduct(int?fProductId)
        {
            //登入的會員資訊
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];
            //防止未登入者進入

            CProduct myProduct = CProductFactory.fn商品查詢().FirstOrDefault(p => p.fProductId == fProductId);

            List <CProductPicture> lsMyProductPicture = CProductPictureFactory.fn商品圖片查詢().Where(p => p.fProductId == fProductId).ToList();

            List <CProductCompare> lsProductCategory = CProductCompareFactory.fn商品類別對照查詢().Where(c => c.fProductId == fProductId).ToList();
            List <CNoteFolder>     lsFolder          = CNoteFolderFactory.fn筆記資料夾查詢(member).ToList();

            //筆記資料夾包含筆記的列表
            List <CNoteFolderViewModel> lsNotefolderVM = new List <CNoteFolderViewModel>();

            //讀取筆記資料夾內的筆記
            foreach (var folder in lsFolder)
            {
                List <CNote> myLsNote = CNoteFactory.fn私人筆記查詢(folder).OrderBy(n => n.fNoteListLevel).Where(n => n.fJsonContent == myProduct.fContent).ToList();
                lsNotefolderVM.Add(new CNoteFolderViewModel()
                {
                    fFolderId   = folder.fFolderId,
                    fFolderName = folder.fFolderName,
                    fMemberId   = folder.fMemberId,
                    lsNote      = myLsNote
                });
            }
            CNote mynote = CNoteFactory.fn私人筆記全部查詢().FirstOrDefault(n => n.fJsonContent == myProduct.fContent);

            CShoppingAccountCenterVM ShoppingAccountCenter = new CShoppingAccountCenterVM()
            {
                lsCategoryCompare = lsProductCategory,
                lsProductPicture  = lsMyProductPicture,
                Product           = myProduct,
                lsNotefolderVM    = lsNotefolderVM,
                NoteId            = mynote.fNoteId
                                    //Content = myProductContent,
            };

            string value = string.Empty;

            value = JsonConvert.SerializeObject(ShoppingAccountCenter, Formatting.Indented, new JsonSerializerSettings
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });
            return(Json(value, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 12
0
        public string UpdateFavor(int FolderId, int NoteId, bool IsFavor)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            //查詢筆記資料夾
            CNoteFolder myFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                   .FirstOrDefault(f => f.fFolderId == FolderId);
            //查詢指定筆記內容
            CNote myNote = CNoteFactory.fn私人筆記查詢(myFolder)
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            myNote.fIsMyFavourite = IsFavor;
            myNote.fEditDateTime  = DateTime.UtcNow.AddHours(08);
            CNoteFactory.fn私人筆記更新(myNote);

            return("我的最愛筆記已更新!");
        }
Ejemplo n.º 13
0
        public string MoveOutTrash(int FolderId, int NoteId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員

            CNoteFolder m原筆記資料夾 = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                  .FirstOrDefault(f => f.fFolderId == FolderId);

            CNote myNote = CNoteFactory.fn私人筆記查詢(m原筆記資料夾)
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            myNote.fIsTrash = false;

            CNoteFactory.fn私人筆記更新(myNote);

            return("筆記還原!");
        }
Ejemplo n.º 14
0
        public ActionResult MoveToTrash(int FolderId, int NoteId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員

            CNoteFolder m原筆記資料夾 = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                  .FirstOrDefault(f => f.fFolderId == FolderId);
            CNoteFolder m未分類筆記 = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                 .FirstOrDefault(f => f.fFolderName == "未分類筆記");

            CNote myNote = CNoteFactory.fn私人筆記查詢(m原筆記資料夾)
                           .FirstOrDefault(n => n.fNoteId == NoteId);

            myNote.fIsTrash  = true;
            myNote.fFolderId = m未分類筆記.fFolderId;

            CNoteFactory.fn私人筆記更新(myNote);

            //查詢所有的筆記資料夾
            List <CNoteFolder> lsFolder = CNoteFolderFactory.fn筆記資料夾查詢(member)
                                          .ToList();
            //筆記資料夾包含筆記的列表
            List <CNoteFolderViewModel> lsNotefolderVM = new List <CNoteFolderViewModel>();

            //讀取筆記資料夾內的筆記
            foreach (var folder in lsFolder)
            {
                List <CNote> myLsNote = CNoteFactory.fn私人筆記查詢(folder)
                                        .ToList();
                lsNotefolderVM.Add(new CNoteFolderViewModel()
                {
                    fFolderId   = folder.fFolderId,
                    fFolderName = folder.fFolderName,
                    fMemberId   = folder.fMemberId,
                    lsNote      = myLsNote
                });
            }

            return(PartialView("_TrashView", lsNotefolderVM));
            //return "筆記移到垃圾桶!";
        }
Ejemplo n.º 15
0
        public void ToOrder(int totalprice, int remain, int cartId)
        {
            CMember member = (CMember)Session[CMemberSession.Session_Login_User];//會員
            COrder  o      = new COrder();

            o.fPurchaseDate = DateTime.UtcNow.AddHours(08);
            o.fTotalPrice   = totalprice;
            o.fMemberId     = member.fMemberId;
            COrderFactory.fn訂單新增(o);

            CMemberFactory.fn會員更新點數(member, remain);

            CNotice c = new CNotice();

            c.fCategoryType   = "系統";
            c.fLink           = "超連結";
            c.fNoticeDatetime = DateTime.UtcNow.AddHours(08);
            c.fMemberId       = member.fMemberId;
            c.fNoticeContent  = "您的訂單已完成了";
            CNoticeFactory.fn通知訂單訊息新增(c);

            List <CCartProduct> CP = CCartProductFactory.fn購物車商品個人查詢(cartId).ToList();

            var f = CNoteFolderFactory.fn筆記資料夾查詢(member).Where(q => q.fFolderName == "未分類筆記").ToList();

            int orderid = COrderFactory.fn訂單查詢(member).LastOrDefault().fOrderId;

            foreach (var a in CP)
            {
                CDetailOrderFactory.fn訂單明細新增(orderid, a.fProductId);
                CNotice c1 = new CNotice();
                c1.fCategoryType   = "銷售";
                c1.fLink           = "超連結";
                c1.fNoticeDatetime = DateTime.UtcNow.AddHours(08);
                c1.fMemberId       = a.fMemberSellerId;
                c1.fNoticeContent  = "您的" + a.fName + "已被購買";
                CNoticeFactory.fn通知訂單訊息新增(c1);

                CIncome i1 = new CIncome();
                i1.fIncome          = a.fPrice;
                i1.fPaymentDateTime = DateTime.UtcNow.AddHours(08);
                i1.fIncomeCategory  = "獲利";
                i1.fMemberId        = a.fMemberSellerId;
                CIncomeFactory.fn公司獲利新增(i1);

                var     point  = CMemberFactory.fn會員查詢().Where(z => z.fMemberId == a.fMemberSellerId);
                int     point1 = (point.Single().fMoneyPoint) + a.fPrice;
                CMember cm1    = new CMember();
                cm1.fMemberId = point.Single().fMemberId;
                CMemberFactory.fn會員更新點數(cm1, point1);

                var t = CNoteFactory.fn私人筆記全部查詢().Where(q => q.fFolderId == f.Single().fFolderId).ToList();

                int t1 = t.Count();

                CNote n = new CNote();
                n.fNoteListName     = a.fName;
                n.fCreateDateTime   = DateTime.UtcNow.AddHours(08);
                n.fEditDateTime     = DateTime.UtcNow.AddHours(08);
                n.fNoteListLevel    = t1;
                n.fIsMyFavourite    = false;
                n.fIsTrash          = false;
                n.fFolderId         = f.Single().fFolderId;
                n.fJsonContent      = a.fContent;
                n.fTheShareLink     = null;
                n.fTheContactPerson = null;
                n.fHTMLContent      = "";
                CNoteFactory.fn訂單私人筆記新增(n);
            }

            CCartFactory.fn購物車個人更新(cartId);
        }
Ejemplo n.º 16
0
        public CFumen(string filename)
        {
            using (var sr = new StreamReader(filename, Encoding.GetEncoding("Shift_JIS")))
            {
                int          nbranch        = 0;
                List <CNote> notes          = new List <CNote>();
                bool         noteload       = false;
                int          nowcourse      = 0;
                double       dbbpm          = 0;
                double       dbscroll       = 0;
                double[]     dbmeasure      = new double[2];
                long         ltime          = 0;
                long         lhbstime       = 0;
                long         lbranchtime    = 0;
                long         lbranchhbstime = 0;
                while (sr.Peek() != -1)
                {
                    var str   = sr.ReadLine();
                    int slash = 0;
                    int num   = 0;
                    foreach (var ch in str)
                    {
                        if (ch == '/')
                        {
                            slash++;
                        }
                        else
                        {
                            if (slash < 2)
                            {
                                num++;
                                slash = 0;
                            }
                        }
                    }
                    if (slash == 2)
                    {
                        str = str.Remove(num, str.Length - num);
                    }
                    var strsplit = str.Split(':');
                    if (strsplit.Length > 1)
                    {
                        if (strsplit[0].ToUpper() == "TITLE")
                        {
                            strTITLE = strsplit[1];
                        }
                        if (strsplit[0].ToUpper() == "SUBTITLE")
                        {
                            strSUBTITLE = strsplit[1];
                        }
                        if (strsplit[0].ToUpper() == "WAVE")
                        {
                            strWAVE = strsplit[1];
                        }
                        if (strsplit[0].ToUpper() == "BPM")
                        {
                            if (double.TryParse(strsplit[1], out double db))
                            {
                                dbBPM = db;
                            }
                            else
                            {
                                dbBPM = 150;
                            }
                        }
                        if (strsplit[0].ToUpper() == "OFFSET")
                        {
                            if (double.TryParse(strsplit[1], out double db))
                            {
                                dbOFFSET = db;
                            }
                            else
                            {
                                dbOFFSET = 150;
                            }
                        }
                        if (strsplit[0].ToUpper() == "DEMOSTART")
                        {
                            if (double.TryParse(strsplit[1], out double db))
                            {
                                dbDEMOSTART = db;
                            }
                            else
                            {
                                dbDEMOSTART = 150;
                            }
                        }
                        if (strsplit[0].ToUpper() == "COURSE")
                        {
                            nowcourse = StringToCourse(strsplit[1]);
                        }
                        if (strsplit[0].ToUpper() == "LEVEL")
                        {
                            if (int.TryParse(strsplit[1], out int n))
                            {
                                ClCourse[nowcourse].nLEVEL = n;
                            }
                            else
                            {
                                ClCourse[nowcourse].nLEVEL = 0;
                            }
                        }
                        if (strsplit[0].ToUpper() == "BALLOON")
                        {
                            foreach (var sp in str.Split(','))
                            {
                                if (int.TryParse(sp, out int n))
                                {
                                    ClCourse[nowcourse].BALLOONS.Add(n);
                                }
                                else
                                {
                                    ClCourse[nowcourse].BALLOONS.Add(5);
                                }
                            }
                        }
                    }
                    if (str.ToUpper() == "#END")
                    {
                        noteload = false;
                    }
                    if (str.ToUpper().Contains("#BPMCHANGE"))
                    {
                        dbbpm = double.Parse(str.ToUpper().Replace("#BPMCHANGE", ""));
                    }
                    if (str.ToUpper().Contains("#SCROLL"))
                    {
                        dbscroll = double.Parse(str.ToUpper().Replace("#SCROLL", ""));
                    }
                    if (str.ToUpper().Contains("#MEASURE"))
                    {
                        var split = str.ToUpper().Replace("#MEASURE", "").Split('/');
                        for (int i = 0; i < 2; i++)
                        {
                            if (double.TryParse(split[i], out double d))
                            {
                                dbmeasure[i] = double.Parse(split[i]);
                            }
                            else
                            {
                                dbmeasure[i] = 1;
                            }
                        }
                    }
                    if (str.ToUpper().Contains("#BRANCHSTART"))
                    {
                        var sp = str.ToUpper().Replace("#BRANCHSTART", "").Split(',');
                        lbranchtime    = ltime;
                        lbranchhbstime = lhbstime;
                        CNote cnote = new CNote();
                        cnote.chNumber     = '0';
                        cnote.dbBPM        = dbbpm;
                        cnote.dbSCROLL     = dbscroll;
                        cnote.dbMEASURE[0] = dbmeasure[0];
                        cnote.dbMEASURE[1] = dbmeasure[1];
                        cnote.bDraw        = true;
                        cnote.lTime        = ltime;
                        cnote.lHBSTime     = lhbstime;
                        cnote.bBranchStart = true;
                        if (sp[0].Contains("P"))
                        {
                            cnote.eBranchType = CNote.BranchType.P;
                        }
                        if (sp[0].Contains("R"))
                        {
                            cnote.eBranchType = CNote.BranchType.R;
                        }
                        if (int.TryParse(sp[1], out int n1))
                        {
                            cnote.nBranchX = n1;
                        }
                        if (int.TryParse(sp[2], out int n2))
                        {
                            cnote.nBranchY = n2;
                        }
                        ClCourse[nowcourse].Notes.Add(cnote);
                    }
                    if (str.ToUpper() == "#BRANCHEND")
                    {
                        nbranch = 0;
                    }
                    if (str.ToUpper() == "#N")
                    {
                        ltime    = lbranchtime;
                        lhbstime = lbranchhbstime;
                        nbranch  = 0;
                    }
                    if (str.ToUpper() == "#E")
                    {
                        ltime    = lbranchtime;
                        lhbstime = lbranchhbstime;
                        nbranch  = 1;
                    }
                    if (str.ToUpper() == "#M")
                    {
                        ltime    = lbranchtime;
                        lhbstime = lbranchhbstime;
                        nbranch  = 2;
                    }
                    if (noteload && !str.Contains("#"))
                    {
                        foreach (var ch in str)
                        {
                            if (ch == '/')
                            {
                                break;
                            }
                            switch (ch)
                            {
                            case ',':
                            {
                                if (notes.Count > 0)
                                {
                                    foreach (var cnote in notes)
                                    {
                                        cnote.lTime    = ltime;
                                        cnote.lHBSTime = lhbstime;
                                        ClCourse[nowcourse].Notes.Add(cnote);
                                        ltime    += (long)((240000000 / cnote.dbBPM) * (cnote.dbMEASURE[0] / cnote.dbMEASURE[1])) / notes.Count;
                                        lhbstime += (long)(740000) / notes.Count;
                                    }
                                }
                                else
                                {
                                    CNote cnote = new CNote();
                                    if (nbranch == 0)
                                    {
                                        cnote.bDraw = true;
                                    }
                                    cnote.chNumber     = ch;
                                    cnote.dbBPM        = dbbpm;
                                    cnote.dbSCROLL     = dbscroll;
                                    cnote.dbMEASURE[0] = dbmeasure[0];
                                    cnote.dbMEASURE[1] = dbmeasure[1];
                                    cnote.lTime        = ltime;
                                    cnote.lHBSTime     = lhbstime;
                                    cnote.nBranch      = nbranch;
                                    ClCourse[nowcourse].Notes.Add(cnote);
                                    ltime    += (long)((240000000 / cnote.dbBPM) * (cnote.dbMEASURE[0] / cnote.dbMEASURE[1]));
                                    lhbstime += (long)(740000);
                                }
                                notes.Clear();
                            }
                            break;

                            default:
                            {
                                if (ch != ' ')
                                {
                                    CNote cnote = new CNote();
                                    if (nbranch == 0)
                                    {
                                        cnote.bDraw = true;
                                    }
                                    cnote.nBranch      = nbranch;
                                    cnote.chNumber     = ch;
                                    cnote.dbBPM        = dbbpm;
                                    cnote.dbSCROLL     = dbscroll;
                                    cnote.dbMEASURE[0] = dbmeasure[0];
                                    cnote.dbMEASURE[1] = dbmeasure[1];
                                    notes.Add(cnote);
                                    if (ch == '1' || ch == '2' || ch == '3' || ch == '4')
                                    {
                                        ClCourse[nowcourse].nNoteCount[nbranch]++;
                                    }
                                }
                            }
                            break;
                            }
                        }
                    }
                    if (str.ToUpper() == "#START")
                    {
                        nbranch      = 0;
                        dbbpm        = dbBPM;
                        dbscroll     = 1;
                        dbmeasure[0] = 4;
                        dbmeasure[1] = 4;
                        ltime        = 0;
                        lhbstime     = 0;
                        noteload     = true;
                    }
                }
            }
        }
Ejemplo n.º 17
0
        public static void UpdatePoints(float Time)
        {
            bool DEBUG_HIT = false;

            CSong song = _GameMode.GetSong();

            if (song == null)
            {
                return;
            }

            float b = GetBeatFromTime(Time, song.BPM, song.Gap);

            if (b <= _Beat)
            {
                return;
            }

            _Beat        = b;
            _CurrentBeat = (int)Math.Floor(_Beat);

            _MidBeatD     = -0.5f + GetBeatFromTime(Time, song.BPM, song.Gap + CConfig.MicDelay / 1000f);
            _CurrentBeatD = (int)Math.Floor(_MidBeatD);

            for (int p = 0; p < _NumPlayer; p++)
            {
                CSound.AnalyzeBuffer(p);
            }

            if (_OldBeatD >= _CurrentBeatD)
            {
                return;
            }

            for (int p = 0; p < _NumPlayer; p++)
            {
                for (int beat = _OldBeatD + 1; beat <= _CurrentBeatD; beat++)
                {
                    if ((_GameMode.GetCurrentGameMode() == EGameMode.TR_GAMEMODE_MEDLEY && song.Medley.EndBeat == beat) ||
                        (_GameMode.GetCurrentGameMode() == EGameMode.TR_GAMEMODE_SHORTSONG && song.ShortEnd == beat))
                    {
                        _Player[p].SongFinished = true;
                    }

                    CLine[] lines = song.Notes.GetLines(_Player[p].LineNr).Line;
                    int     Line  = -1;

                    for (int j = 0; j < lines.Length; j++)
                    {
                        if (beat >= lines[j].StartBeat && beat <= lines[j].EndBeat)
                        {
                            Line = j;
                            break;
                        }
                    }

                    if (Line >= 0)
                    {
                        if (Line != _Player[p].CurrentLine)
                        {
                            _Player[p].CurrentNote = -1;
                        }

                        _Player[p].CurrentLine = Line;

                        while (_Player[p].SingLine.Count <= Line)
                        {
                            _Player[p].SingLine.Add(new CLine());
                        }

                        CNote[] notes = lines[Line].Notes;
                        int     Note  = -1;
                        for (int j = 0; j < notes.Length; j++)
                        {
                            if (beat >= notes[j].StartBeat && beat <= notes[j].EndBeat)
                            {
                                Note = j;
                                break;
                            }
                        }

                        if (Note >= 0)
                        {
                            _Player[p].CurrentNote = Note;

                            if (Line == lines.Length - 1)
                            {
                                if (Note == lines[Line].NoteCount - 1)
                                {
                                    if (notes[Note].EndBeat == beat)
                                    {
                                        _Player[p].SongFinished = true;
                                    }
                                }
                            }

                            if (notes[Note].PointsForBeat > 0 && (CSound.RecordToneValid(p) || DEBUG_HIT))
                            {
                                int Tone       = notes[Note].Tone;
                                int TonePlayer = CSound.RecordGetTone(p);

                                while (TonePlayer - Tone > 6)
                                {
                                    TonePlayer -= 12;
                                }

                                while (TonePlayer - Tone < -6)
                                {
                                    TonePlayer += 12;
                                }

                                if (DEBUG_HIT)
                                {
                                    TonePlayer = Tone;
                                }

                                _Player[p].NoteDiff = Math.Abs(Tone - TonePlayer);
                                if (_Player[p].NoteDiff <= (2 - (int)_Player[p].Difficulty))
                                {
                                    // valid
                                    //CSound.RecordSetTone(p, Tone);
                                    double points = (CSettings.MaxScore - CSettings.LinebonusScore) * (double)notes[Note].PointsForBeat / (double)song.Notes.GetLines(_Player[p].LineNr).Points;
                                    if (notes[Note].NoteType == ENoteType.Golden)
                                    {
                                        _Player[p].PointsGoldenNotes += points;
                                    }

                                    _Player[p].Points += points;

                                    // update player notes (sung notes)
                                    if (_Player[p].SingLine[Line].NoteCount > 0)
                                    {
                                        CNote nt = _Player[p].SingLine[Line].LastNote;
                                        if (notes[Note].StartBeat == beat || nt.EndBeat + 1 != beat || nt.Tone != Tone)
                                        {
                                            _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, Tone, String.Empty, true, notes[Note].NoteType));
                                        }
                                        else
                                        {
                                            _Player[p].SingLine[Line].IncLastNoteLength();
                                        }
                                    }
                                    else
                                    {
                                        _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, Tone, String.Empty, true, notes[Note].NoteType));
                                    }

                                    _Player[p].SingLine[Line].LastNote.IsPerfect(notes[Note]);
                                    _Player[p].SingLine[Line].IsPerfect(lines[Line]);
                                }
                                else
                                {
                                    if (_Player[p].SingLine[Line].NoteCount > 0)
                                    {
                                        CNote nt = _Player[p].SingLine[Line].LastNote;
                                        if (nt.EndBeat + 1 != beat || nt.Hit)
                                        {
                                            _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, TonePlayer, String.Empty, false, ENoteType.Freestyle));
                                        }
                                        else
                                        {
                                            if (nt.Tone == TonePlayer && nt.EndBeat + 1 == beat)
                                            {
                                                _Player[p].SingLine[Line].IncLastNoteLength();
                                            }
                                            else
                                            {
                                                _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, TonePlayer, String.Empty, false, ENoteType.Freestyle));
                                            }
                                        }
                                    }
                                    else
                                    {
                                        _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, TonePlayer, String.Empty, false, ENoteType.Freestyle));
                                    }
                                }
                            }

                            // Line Bonus
                            int NumLinesWithPoints = song.Notes.GetNumLinesWithPoints(_Player[p].LineNr);
                            if (Note == lines[Line].NoteCount - 1 && NumLinesWithPoints > 0)
                            {
                                if (notes[Note].EndBeat == beat && lines[Line].Points > 0f)
                                {
                                    double factor = (double)_Player[p].SingLine[Line].Points / (double)lines[Line].Points;
                                    if (factor < 0.4)
                                    {
                                        factor = 0.0;
                                    }
                                    else if (factor > 0.9)
                                    {
                                        factor = 1.0;
                                    }
                                    else
                                    {
                                        factor -= 0.4;
                                        factor *= 2;
                                        factor *= factor;
                                    }

                                    double points = CSettings.LinebonusScore * factor * 1f / NumLinesWithPoints;
                                    _Player[p].Points          += points;
                                    _Player[p].PointsLineBonus += points;
                                }
                            }
                        }
                    }
                }
            }
            _OldBeatD = _CurrentBeatD;
        }
Ejemplo n.º 18
0
 public virtual void AddNote(int ID, CNote Note)
 {
 }
Ejemplo n.º 19
0
        public static void UpdatePoints(float Time)
        {
            bool DEBUG_HIT = false;

            CSong song = _GameMode.GetSong();

            if (song == null)
            {
                return;
            }

            _Beat        = GetBeatFromTime(Time, song.BPM, song.Gap);
            _CurrentBeat = (int)Math.Floor(_Beat);

            _MidBeatD     = -0.5f + GetBeatFromTime(Time, song.BPM, song.Gap + CConfig.MicDelay / 1000f);
            _CurrentBeatD = (int)Math.Floor(_MidBeatD);

            for (int p = 0; p < _NumPlayer; p++)
            {
                CSound.AnalyzeBuffer(p);
            }

            if (_OldBeatD == _CurrentBeatD)
            {
                return;
            }

            for (int p = 0; p < _NumPlayer; p++)
            {
                for (int beat = _OldBeatD + 1; beat <= _CurrentBeatD; beat++)
                {
                    CLine[] lines = song.Notes.GetLines(_Player[p].LineNr).Line;
                    int     Line  = -1;

                    for (int j = 0; j < lines.Length; j++)
                    {
                        if (beat >= lines[j].StartBeat && beat <= lines[j].EndBeat)
                        {
                            Line = j;
                            break;
                        }
                    }

                    if (Line >= 0)
                    {
                        if (Line != _Player[p].CurrentLine)
                        {
                            _Player[p].CurrentNote = -1;
                        }

                        _Player[p].CurrentLine = Line;

                        while (_Player[p].SingLine.Count <= Line)
                        {
                            _Player[p].SingLine.Add(new CLine());
                        }

                        CNote[] notes = lines[Line].Notes;
                        int     Note  = -1;
                        for (int j = 0; j < notes.Length; j++)
                        {
                            if (beat >= notes[j].StartBeat && beat <= notes[j].EndBeat)
                            {
                                Note = j;
                                break;
                            }
                        }

                        if (Note >= 0)
                        {
                            _Player[p].CurrentNote = Note;

                            if (Line == lines.Length - 1)
                            {
                                if (Note == lines[Line].NoteCount - 1)
                                {
                                    if (notes[Note].EndBeat == beat)
                                    {
                                        _Player[p].SongFinished = true;
                                    }
                                }
                            }

                            if (notes[Note].PointsForBeat > 0 && (CSound.RecordToneValid(p) || DEBUG_HIT))
                            {
                                int Tone       = notes[Note].Tone;
                                int TonePlayer = CSound.RecordGetTone(p);

                                while (TonePlayer - Tone > 6)
                                {
                                    TonePlayer -= 12;
                                }

                                while (TonePlayer - Tone < -6)
                                {
                                    TonePlayer += 12;
                                }

                                if (DEBUG_HIT)
                                {
                                    TonePlayer = Tone;
                                }

                                _Player[p].NoteDiff = Math.Abs(Tone - TonePlayer);
                                if (_Player[p].NoteDiff <= (2 - (int)_Player[p].Difficulty))
                                {
                                    // valid
                                    CSound.RecordSetTone(p, Tone);
                                    _Player[p].Points += (CSettings.MaxScore - CSettings.LinebonusScore) * (double)notes[Note].PointsForBeat / (double)song.Notes.GetLines(_Player[p].LineNr).Points;

                                    // update player notes (sung notes)
                                    if (_Player[p].SingLine[Line].NoteCount > 0)
                                    {
                                        CNote nt = _Player[p].SingLine[Line].LastNote;
                                        if (notes[Note].StartBeat == beat || nt.EndBeat + 1 != beat || nt.Tone != Tone)
                                        {
                                            _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, Tone, String.Empty, true, notes[Note].NoteType));
                                        }
                                        else
                                        {
                                            _Player[p].SingLine[Line].IncLastNoteLength();
                                        }
                                    }
                                    else
                                    {
                                        _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, Tone, String.Empty, true, notes[Note].NoteType));
                                    }

                                    _Player[p].SingLine[Line].LastNote.IsPerfect(notes[Note]);
                                    _Player[p].SingLine[Line].IsPerfect(lines[Line]);

                                    if (_Player[p].SingLine[Line].PerfectLine)
                                    {
                                        _Player[p].Points += CSettings.LinebonusScore * (double)lines[Line].Points / (double)song.Notes.GetPoints(_Player[p].LineNr);
                                    }
                                }
                                else
                                {
                                    if (_Player[p].SingLine[Line].NoteCount > 0)
                                    {
                                        CNote nt = _Player[p].SingLine[Line].LastNote;
                                        if (nt.EndBeat + 1 != beat || nt.Hit)
                                        {
                                            _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, TonePlayer, String.Empty, false, notes[Note].NoteType));
                                        }
                                        else
                                        {
                                            if (nt.Tone == TonePlayer && nt.EndBeat + 1 == beat)
                                            {
                                                _Player[p].SingLine[Line].IncLastNoteLength();
                                            }
                                            else
                                            {
                                                _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, TonePlayer, String.Empty, false, notes[Note].NoteType));
                                            }
                                        }
                                    }
                                    else
                                    {
                                        _Player[p].SingLine[Line].AddNote(new CNote(beat, 1, TonePlayer, String.Empty, false, notes[Note].NoteType));
                                    }
                                }
                            }
                        }
                    }
                }
            }
            _OldBeatD = _CurrentBeatD;
        }