Exemplo n.º 1
0
        //添加标注到地图上
        void iMSMap1_MapReady(IMSMapEvent e)
        {
            MarkLayer m_markLayer = new MarkLayer(); //初始化标注图层

            iMSMap1.AddChild(m_markLayer);           //添加到地图容器中
            IMSMark mark;                            //定义标注对象

            pnt = new Point(114.331901, 30.548992);
            m_markLayer.EnableZoomAnimation = true;  //允许随地图缩放
            m_markLayer.EnableMarkHiden     = false; //不允许隐藏标注
            m_markLayer.EnablePolymericMark = true;  //允许标注聚合功能
            mark = new IMSMark(new Image()           //初始化标注对象
            {
                Source = new BitmapImage(new Uri("/Images/markimg1.png", UriKind.Relative)),
                Width  = 80,
                Height = 80
            }, CoordinateType.Logic, m_markLayer);
            mark.X = pnt.X;            //设置标注坐标
            mark.Y = pnt.Y;
            m_markLayer.AddMark(mark); //添加到标注图层
            mark.MouseClickCallback = new MouseOperDelegate(mark_click);
            //  mark.MouseEnterCallback = new MouseOperDelegate(mark_enter);
            // mark.MouseLeaveCallback = new MouseOperDelegate(mark_leave);
            Canvas.SetZIndex(DFwin, Canvas.GetZIndex(this.iMSMap1) + 12);
            DFwin.Margin           = new Thickness(iMSMap1.LogicToScreen(pnt.X, pnt.Y).X + 15, iMSMap1.LogicToScreen(pnt.X, pnt.Y).Y + 15, 0, 0);
            DFwin.Visibility       = Visibility.Collapsed;
            DFwin.AllowDrop        = false;
            iMSMap1.MapViewChange += new ZDIMS.Event.IMSMapEventHandler(iMSMap1_MapViewChange);
        }
        private void addmyMark(string name, double x, double y)
        {
            //初始化标注图层,并将其作为子元素添加到地图容器
            if (this.markLayer1 == null)
            {
                this.markLayer1 = new MarkLayer();
                this.iMSMap1.AddChild(this.markLayer1);
            }
            //创建并实例化标注控件,对其属性进行设置
            Image       img = new Image();
            BitmapImage b   = new BitmapImage(new Uri("/images/walk.png", UriKind.RelativeOrAbsolute));

            img.Source = b;
            img.Width  = 25;
            img.Height = 30;
            IMSmyMark mark = new IMSmyMark(img);

            mark.CoordinateType = CoordinateType.Logic;
            mark.markName       = name;
            mark.X = x;
            mark.Y = y;
            mark.EnableRevisedPos        = true;
            mark.MarkClickCallback      += new MarkClickDelegate(onClick);        //标注点击事件回调
            mark.MarkControl.MouseLeave += new MouseEventHandler(img_MouseLeave); //标注鼠标移出事件监听
            markLayer1.AddMark(mark);                                             //将标注添加到标注图层中
        }
Exemplo n.º 3
0
        private Mark CreateMark(MarkDataBase ipdata, bool hasSameTimingMark, int sameTimingMarks)
        {
            var  emd = ipdata as ExMarkData;
            Mark mk  = null;

            if (emd != null)
            {
                var noteType     = EventManager.GetNoteType(ipdata.Time);
                var displayState = EventManager.GetCorrectDisplaystate(ipdata.Time);
                switch (noteType)
                {
                case NoteType.Normal:
                    mk = new NormalExMark(device, resourceManager, imagepathes, emd, randomChangeManager[emd.ButtonType],
                                          evals, adjustgaptime, circlepoints, displayState, noteType, sameTimingMarks, ipdata.Parameters, postDrawManager);
                    break;

                case NoteType.AC:
                    mk = new HoldExMark(device, resourceManager, imagepathes, emd, randomChangeManager[emd.ButtonType],
                                        evals, adjustgaptime, displayState, noteType, sameTimingMarks, ipdata.Parameters, postDrawManager);
                    break;

                case NoteType.ACFT:
                    if (IsScratch(ipdata.ButtonType, sameTimingMarks))
                    {
                        var slideScale = EventManager.GetSlideScale(ipdata.Time);
                        mk = new SlideExMark(device, resourceManager, imagepathes, emd, randomChangeManager[emd.ButtonType],
                                             evals, adjustgaptime, displayState, noteType, slideScale, sameTimingMarks, ipdata.Parameters, postDrawManager);
                    }
                    else
                    {
                        goto case NoteType.AC;
                    }
                    break;
                }
            }
            else
            {
                var md = ipdata as MarkData;
                mk = new Mark(device, resourceManager, imagepathes, md, randomChangeManager[md.ButtonType], evals, adjustgaptime,
                              EventManager.GetCorrectDisplaystate(ipdata.Time), EventManager.GetNoteType(ipdata.Time), sameTimingMarks, ipdata.Parameters, postDrawManager);
            }
            mk.HasSameTimingMark = hasSameTimingMark;
            if (scriptManager.ProcessMarkBPMManager.Process(mk, out float bpm))
            {
                mk.FixedBPM = bpm;
            }

            if (mk != null)
            {
                MarkLayer.InsertChild(mk, 0);
                mk.Initialize(scriptManager.CreateMarkManager.CreateMark, scriptManager.ProcessAllowedButtonsManager.Process);
                mk.CheckColorPosition += mk_CheckColorPosition;
                mk.ChangeMarkEvaluate += mk_ChangeMarkEvaluate;
            }

            return(mk);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 门店查询
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void market_Search_Click(object sender, RoutedEventArgs e)
 {
     this.markLayer.ManuallyAddMarkObj = null;
     if (market_S == null)
     {
         market_S = new DataForm();
     }
     this.market_S.mapContainer = this.mapContainer;
     this.market_S.markLayer    = this.markLayer;
     market_S.Show();
 }
Exemplo n.º 5
0
 public BusAnalyse(MarkLayer markLayer, GraphicsLayer graphicsLayer)
 {
     ServerAddress = "http://127.0.0.1/relayhandlersite/relayhandler.ashx";
     MarkLayer     = markLayer;
     markLayer.EnablePolymericMark = false;
     GraphicsLayer = graphicsLayer;
     InitializeComponent();
     dialogPanel1.OnClose += new RoutedEventHandler(Close);
     m_timer          = new DispatcherTimer();
     m_timer.Interval = new TimeSpan(0, 0, 0, 0, 900);
     m_timer.Tick    += new EventHandler(TextChanged_Tick);
 }
Exemplo n.º 6
0
 private void ClearBarrier(object sender = null, RoutedEventArgs e = null)
 {
     if (MarkLayer != null)
     {
         for (int i = 0; i < m_barrierMark.Count; i++)
         {
             MarkLayer.RemoveMark(m_barrierMark[i]);
         }
         m_barrierMark.Clear();
         m_barrierDots = "";
     }
 }
Exemplo n.º 7
0
 public trackplaycontrol(MarkLayer markLayer, GraphicsLayer graphicsLayer)
 {
     InitializeComponent();
     MarkLayer              = markLayer;
     GraphicsLayer          = graphicsLayer;
     this.pause.MouseEnter += new MouseEventHandler(pause_MouseEnter);
     this.stop.MouseEnter  += new MouseEventHandler(pause_MouseEnter);
     this.stop.MouseLeave  += new MouseEventHandler(stop_MouseLeave);
     this.pause.MouseLeave += new MouseEventHandler(stop_MouseLeave);
     dialogPanel1.OnClose  += new RoutedEventHandler(Close);
     stopsData              = setstopsData();
 }
 public BusAnalyse(MarkLayer markLayer, GraphicsLayer graphicsLayer)
 {
     //  MessageBox.Show(this.SvrUrl);
     ServerAddress = this.SvrUrl;
     MarkLayer     = markLayer;
     markLayer.EnablePolymericMark = false;
     GraphicsLayer = graphicsLayer;
     InitializeComponent();
     //dialogPanel1.OnClose += new RoutedEventHandler(Close);
     m_timer          = new DispatcherTimer();
     m_timer.Interval = new TimeSpan(0, 0, 0, 0, 900);
     m_timer.Tick    += new EventHandler(TextChanged_Tick);
 }
Exemplo n.º 9
0
        private void StartPntAdd1(MarkLayer markLayer, IMark mark, Point logicPnt)
        {
            Point MarkPnt = new Point(logicPnt.X, logicPnt.Y);

            this.markLayer.ManuallyAddMarkObj = null;
            NewMarkInfo              = new AddMarket();
            NewMarkInfo.markLayer    = this.markLayer;
            NewMarkInfo.tmp          = mark as IMSMark;
            NewMarkInfo.markPnt      = MarkPnt;
            NewMarkInfo.mapContainer = this.mapContainer;
            NewMarkInfo.Show();
            markLayer.ManuallyAddMarkOverCallback -= new ManuallyAddMarkDelegate(StartPntAdd1);
        }
Exemplo n.º 10
0
 public NetAnalyse(MarkLayer markLayer = null, GraphicsLayer graphicsLayer = null)
 {
     MarkLayer = markLayer;
     markLayer.EnablePolymericMark = false;
     GraphicsLayer = graphicsLayer;
     GDBName       = "world";
     GDBSvrName    = "MapGisLocal";
     Password      = "";
     User          = "";
     NetLayerName  = "武汉道路网";
     InitializeComponent();
     dialogPanel1.OnClose += new RoutedEventHandler(Close);
 }
Exemplo n.º 11
0
 public void retry()
 {
     iter    = 0;
     simtype = 1;
     MarkLayer.ClearDisposeChildren();
     ConnectLayer.ClearDisposeChildren();
     externalMarks.Clear();
     Array.Clear(ACPressing, 0, ACPressing.Length);
     currentAllMarkCount     = allMarkCount;
     currentAllLongMarkCount = allLongMarkCount;
     Array.Copy(markCounts, currentMarkCounts, markCounts.Length);
     MarkLayer.SetDefault();
     ConnectLayer.SetDefault();
 }
Exemplo n.º 12
0
 string VIAPoints = "";//路径点坐标
 public netAnalyse(VectorLayerBase VectObj, MarkLayer markLayer, GraphicsLayer graphicsLayer)
 {
     MarkLayer = markLayer;
     markLayer.EnablePolymericMark = false;
     GraphicsLayer = graphicsLayer;
     GDBName       = "test201";
     GDBSvrName    = "MapGisLocal";
     Password      = "";
     User          = "";
     NetLayerName  = "道路网";
     InitializeComponent();
     dialogPanel1.OnClose += new RoutedEventHandler(Close);
     this.VectorObj        = VectObj;
 }
Exemplo n.º 13
0
        private void StartPntAdd2(MarkLayer markLayer, IMark mark, Point logicPnt)
        {
            m_barrierMark.Add(mark);
            m_barrierDots += logicPnt.X + "," + logicPnt.Y + ",";
            IMSMark markPnt = new IMSMark(new Image()
            {
                Source = new BitmapImage(new Uri("../images/mark/v0.png", UriKind.Relative))
            })
            {
                EnableAnimation = false
            };

            MarkLayer.ManuallyAddMarkObj          = markPnt;
            MarkLayer.ManuallyAddMarkOverCallback = new ManuallyAddMarkDelegate(StartPntAdd2);
        }
Exemplo n.º 14
0
 void ClearRoad()
 {
     if (m_road != null && GraphicsLayer != null)
     {
         GraphicsLayer.RemoveGraphics(m_road);
         m_road = null;
     }
     if (MarkLayer != null)
     {
         for (int i = 0; i < m_stopList.Count; i++)
         {
             MarkLayer.RemoveMark(m_stopList[i]);
         }
         m_stopList.Clear();
     }
 }
Exemplo n.º 15
0
        private void image_marker1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (this.MapContainer == null)
            {
                MessageBox.Show("MapContainer属性为空,不能继续操作!");
                return;
            }
            if (this.m_markLayer == null)
            {
                this.m_markLayer = new MarkLayer();
                this.MapContainer.AddChild(this.m_markLayer);
            }
            Image targetimg = sender as Image;

            if (this.m_marker == null)
            {
                Image img = new Image();
                img.Source = targetimg.Source;
                ContextMenu menu = new ContextMenu();
                MenuItem    del  = new MenuItem();
                del.Header = "删除";
                del.Click += new RoutedEventHandler(del_Click);
                menu.Items.Add(del);
                MenuItem edit = new MenuItem();
                edit.Header = "编辑";
                edit.Click += new RoutedEventHandler(edit_Click);
                menu.Items.Add(edit);
                ContextMenuService.SetContextMenu((DependencyObject)img, menu);
                this.m_marker = new IMSMark(img);
                this.m_marker.CoordinateType = CoordinateType.Logic;
                this.m_marker.X           = this.MapContainer.CenPntLogCoor.X;
                this.m_marker.Y           = this.MapContainer.CenPntLogCoor.Y;
                this.textBox_markerx.Text = m_marker.X.ToString();
                this.textBox_markery.Text = m_marker.Y.ToString();
                this.m_marker.EnableDrag  = true;
                this.m_markLayer.AddMark(this.m_marker);
                this.m_marker.MarkDragOverCallback = new MarkDragOverDelegate(onDragEnd);
            }
            else
            {
                ((Image)this.m_marker.MarkControl).Source = targetimg.Source;
            }
            this.image_marker.Source = targetimg.Source;
            e.Handled = true;
        }
Exemplo n.º 16
0
 /**
  * 设置测量类型
  */
 private void setMeasureType()
 {
     if (this.m_graphicsLayer == null)
     {
         MessageBox.Show("m_graphicsLayer为空,请赋值!", "提示", MessageBoxButton.OK);
         return;
     }
     this.m_mapContainer = this.m_graphicsLayer.MapContainer as IMSMap;
     clearMeasurePnts(null, null, null);
     if (mymarklayer == null)
     {
         mymarklayer = new MarkLayer();
         this.m_mapContainer.AddChild(mymarklayer);
     }
     this.m_graphicsLayer.Drawing           += new DrawingEventHandler(addMeasurePoint);
     this.m_graphicsLayer.DrawingTypeChange += new DrawingTypeChangeEventHandler(typeChange);
     this.m_graphicsLayer.DrawingOver       += new DrawingEventHandler(reDrawMeasurePnts);
     this.m_mapContainer.MapOperTypeChange  += new IMSMapEventHandler(onOperTypeChange);
 }
Exemplo n.º 17
0
 private void ShowMarker(object obj)
 {
     //显示标记
     if (this.m_markLayer == null)
     {
         this.m_markLayer = new MarkLayer();
         this.MapContainer.AddChild(this.m_markLayer);
     }
     if (this.m_posMarker == null)
     {
         Image img = new Image();
         img.Source = new BitmapImage(new Uri("images/mark/marker2/image2/p1.png",UriKind.Relative));
         img.Width = 40;
         img.Height = 40;
         this.m_posMarker = new IMSMark(img);
         this.m_posMarker.CoordinateType = CoordinateType.Logic;
         this.m_posMarker.X = this.PLon;
         this.m_posMarker.Y = this.PLat;
         this.m_markLayer.AddMark(this.m_posMarker);
     }
     else
     {
         this.m_posMarker.X = this.PLon;
         this.m_posMarker.Y = this.PLat;
     }
     //居中显示标记
     if (this.checkBox2.IsChecked.Value)
     {
         Point pnt = this.MapContainer.LogicToScreen(this.PLon,this.PLat);
         if (Math.Abs(pnt.X - this.MapContainer.CenPntScrCoor.X) > 10 || Math.Abs(pnt.Y - this.MapContainer.CenPntScrCoor.Y)>10)
         {
             this.MapContainer.PanTo(PLon, PLat);
             return;
         }
     }
     if (!m_posMarker.IsInMapViewBound)
     {
         this.MapContainer.PanTo(PLon, PLat);
     }
 }
Exemplo n.º 18
0
        private void OnSubmit(object sender, UploadStringCompletedEventArgs e)
        {
            ClearRoad();
            roadReslut.Blocks.Clear();
            if (e.Error != null)
            {
                MessageBox.Show("分析失败,错误原因为:" + e.Error.Message, "提示", MessageBoxButton.OK);
                return;
            }
            try
            {
                if (e.Result.IndexOf("COperResult") > -1)
                {
                    COperResult res = VectorObj.GetObject(e, typeof(COperResult)) as COperResult;
                    MessageBox.Show(res.ErrorInfo, "提示", MessageBoxButton.OK);
                    return;
                }
                CPathAnalyzeResult obj = _spatial.OnNetAnalyse(e);
                if (obj == null || obj.Paths == null)
                {
                    return;
                }
                CNetPath  path        = obj.Paths[0];
                int       edgeNum     = path.Edges.Length;
                Paragraph myParagraph = new Paragraph();
                myParagraph.Inlines.Add(new Run()
                {
                    Text = "1.从起点出发"
                });
                Bold       bold;
                IMSMark    mark;
                StackPanel panel;
                for (int i = 0; i < edgeNum; i++)
                {
                    CNetEdge edge = path.Edges[i];
                    if (i != 0)
                    {
                        myParagraph.Inlines.Add(new Run()
                        {
                            Text = (i + 1).ToString() + "."
                        });
                    }
                    myParagraph.Inlines.Add(new Run()
                    {
                        Text = "经"
                    });
                    bold = new Bold()
                    {
                        Foreground = new SolidColorBrush(Colors.Red)
                    };
                    bold.Inlines.Add(edge.FieldValus[2]);
                    myParagraph.Inlines.Add(bold);
                    if (i != edgeNum - 1)
                    {
                        myParagraph.Inlines.Add(new Run()
                        {
                            Text = "到达"
                        });
                        bold = new Bold()
                        {
                            Foreground = new SolidColorBrush(Colors.Red)
                        };
                        bold.Inlines.Add(path.Nodes[i + 1].FieldValus[0] + "\n");
                        myParagraph.Inlines.Add(bold);
                    }
                    else
                    {
                        myParagraph.Inlines.Add(new Run()
                        {
                            Text = "到达终点"
                        });
                    }
                    if (GraphicsLayer != null)
                    {
                        if (m_road == null)
                        {
                            m_road = new IMSPolyline(CoordinateType.Logic);
                            m_road.Shape.Stroke = new SolidColorBrush(Colors.Red);
                            GraphicsLayer.AddGraphics(m_road);
                        }
                        for (int j = 0; j < edge.Dots.Length; j++)
                        {
                            m_road.Points.Add(new Point(edge.Dots[j].x, edge.Dots[j].y));
                        }
                        panel = new StackPanel()
                        {
                            Orientation = Orientation.Horizontal
                        };
                        panel.Children.Add(new Image()
                        {
                            Source = new BitmapImage(new Uri("../images/bus/stop.png", UriKind.Relative))
                        });
                        panel.Children.Add(new TextBlock()
                        {
                            Text = edge.FieldValus[2]
                        });
                        mark = new IMSMark(panel, CoordinateType.Logic, MarkLayer)
                        {
                            EnableAnimation = false, EnableDrag = false
                        };
                        mark.X = edge.Dots[edge.Dots.Length / 2].x;
                        mark.Y = edge.Dots[edge.Dots.Length / 2].y;
                        MarkLayer.AddMark(mark);
                        m_stopList.Add(mark);
                    }
                }


                m_road.Draw();
                roadReslut.Blocks.Add(myParagraph);
                radioButton1.IsChecked = false;
                radioButton2.IsChecked = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "提示", MessageBoxButton.OK);
            }
        }
Exemplo n.º 19
0
        public void Update(float time, bool[] b, bool[] released)
        {
            if (!initialized)
            {
                return;
            }
            ReadPpdData(time, SpeedScale * EventManager.BPM);
            ReadExternalPpdData(time);
            Logger.Instance.AddLog("Time:{0}, pressed:{1}, released:{2}", time, String.Join(",", b.Select(v => v ? "1" : "0").ToArray()),
                                   String.Join(",", released.Select(v => v ? "1" : "0").ToArray()));
            foreach (Mark mk in MarkLayer.Children.Reverse())
            {
                if (removeMarks.Contains(mk))
                {
                    continue;
                }
                var  exmk      = mk as ExMarkBase;
                var  results   = new MarkResults();
                int  soundType = -1;
                bool remove    = false;
                var  isAuto    = false;
                switch (AutoMode)
                {
                case AutoMode.All:
                    isAuto = true;
                    break;

                case AutoMode.ExceptSlide:
                    isAuto = !mk.IsScratch;
                    break;
                }
                if (exmk != null)
                {
                    remove = exmk.ExUpdate(EventManager.GetCorrectTime(time, mk.Time),
                                           SpeedScale * EventManager.BPM,
                                           ref b, ref released, results,
                                           isAuto, ref soundType,
                                           CreateEffect
                                           );
                    if (isAuto)
                    {
                        if (soundType >= 0 && soundType < 10)
                        {
                            var index = randomChangeManager.Invert(soundType);
                            if (PlaySound != null)
                            {
                                PlaySound.Invoke(index, true);
                            }
                        }
                        else if (soundType >= 10)
                        {
                            var index = randomChangeManager.Invert(soundType - 10);
                            if (StopSound != null)
                            {
                                StopSound.Invoke(index, false);
                            }
                            if (EventManager.GetReleaseSound(index) && PlaySound != null)
                            {
                                PlaySound.Invoke(index, false);
                            }
                        }
                    }
                    else
                    {
                        //manual
                        if (exmk.IsScratch && exmk.IsLong && soundType >= 0 && soundType < 10)
                        {
                            var index = randomChangeManager.Invert(soundType);
                            if (PlaySound != null)
                            {
                                PlaySound.Invoke(index, false);
                            }
                        }
                        else
                        {
                            var index = randomChangeManager.Invert(soundType);
                            if (EventManager.GetReleaseSound(index) && PlaySound != null)
                            {
                                PlaySound.Invoke(index, false);
                            }
                        }
                    }
                }
                else
                {
                    remove = mk.Update(EventManager.GetCorrectTime(time, mk.Time),
                                       SpeedScale * EventManager.BPM,
                                       ref b, results, isAuto,
                                       ref soundType,
                                       CreateEffect
                                       );
                    if (isAuto)
                    {
                        if (soundType != -1)
                        {
                            var index = randomChangeManager.Invert(soundType);
                            if (PlaySound != null)
                            {
                                PlaySound.Invoke(index, false);
                            }
                        }
                    }
                }
                if (results[EffectType.Cool] || results[EffectType.Fine])
                {
                    if (ACPressing[(int)mk.ButtonType] != null)
                    {
                        OnPressingButton(mk.ButtonType, false);
                        for (int i = 0; i < ACPressing.Length; i++)
                        {
                            if (ACPressing[i] != null)
                            {
                                AddToRemove(ACPressing[i]);
                            }
                        }
                        Array.Clear(ACPressing, 0, ACPressing.Length);
                    }
                    if (ChangeCombo != null)
                    {
                        ChangeCombo.Invoke(true, mk.Position);
                    }
                }
                if (results[EffectType.Pressing])
                {
                    // 同時にHoldが始まったときに2個目ので1個目のを消す
                    if (ACPressing[(int)mk.ButtonType] != null && ACPressing[(int)mk.ButtonType] != mk)
                    {
                        OnPressingButton(mk.ButtonType, false);
                        for (int i = 0; i < ACPressing.Length; i++)
                        {
                            if (ACPressing[i] != null)
                            {
                                AddToRemove(ACPressing[i]);
                            }
                        }
                        Array.Clear(ACPressing, 0, ACPressing.Length);
                    }
                    if (OnPressingButton(mk.ButtonType, true))
                    {
                        for (int i = 0; i < ACPressing.Length; i++)
                        {
                            if (ACPressing[i] != null)
                            {
                                AddToRemove(ACPressing[i]);
                            }
                        }
                        Array.Clear(ACPressing, 0, ACPressing.Length);
                    }
                    ACPressing[(int)mk.ButtonType] = exmk;
                    RemoveFromConnection(exmk);
                }
                if (results[EffectType.PressReleased])
                {
                    OnPressingButton(mk.ButtonType, false);
                    for (int i = 0; i < ACPressing.Length; i++)
                    {
                        if (ACPressing[i] != null)
                        {
                            AddToRemove(ACPressing[i]);
                        }
                    }
                    Array.Clear(ACPressing, 0, ACPressing.Length);
                }
                if (results[EffectType.Slide])
                {
                    var slideExMark = exmk as SlideExMark;
                    for (var i = slideExMark.ProcessedPressingFrames; i < slideExMark.PressingFrames; i++)
                    {
                        var position = slideExMark.GetPressedSlidePosition(i + 1);
                        if (slideExMark.IsMaxSlide && (i + 1) == slideExMark.ExCount)
                        {
                            // do nothing for max slide
                        }
                        else
                        {
                            var score = 10 * (i + 1);
                            Slide?.Invoke(slideExMark, position, score, exmk.IsRight);
                        }
                    }
                    slideExMark.ProcessedPressingFrames = slideExMark.PressingFrames;
                }
                if (results[EffectType.Safe] || results[EffectType.Sad] || results[EffectType.Worst])
                {
                    if (ChangeCombo != null)
                    {
                        ChangeCombo.Invoke(false, mk.Position);
                    }
                }
                if (results[EffectType.Cool] || results[EffectType.Fine] || results[EffectType.Safe] || results[EffectType.Sad] ||
                    results[EffectType.Worst])
                {
                    if (EvaluateCount != null)
                    {
                        EvaluateCount.Invoke(results.First, false);
                    }
                }
                if (remove)
                {
                    if (exmk is SlideExMark && ((SlideExMark)exmk).IsMaxSlide)
                    {
                        var slideExMark = ((SlideExMark)exmk);
                        var score       = 1000 + 10 * slideExMark.ExCount;
                        var position    = slideExMark.GetPressedSlidePosition(slideExMark.ExCount);
                        MaxSlide?.Invoke(slideExMark, position, score, exmk.IsRight);
                    }
                    AddToRemove(mk);
                }
            }
            foreach (Mark mk in removeMarks)
            {
                MarkLayer.RemoveChild(mk);
                mk.Dispose();
            }
            if (MarkLayer.ChildrenCount > 0 && AutoMode == AutoMode.None)
            {
                for (int i = 0; i < 10; i++)
                {
                    int iter = MarkLayer.ChildrenCount - 1;
                    while (b[i] && iter >= 0)
                    {
                        var mk = MarkLayer[iter] as Mark;
                        if (mk is ExMarkBase exmk && exmk.ExMarkState != ExMarkBase.ExState.Waiting)
                        {
                            iter--;
                            continue;
                        }
                        var eval = mk.Evaluate(time);
                        if (eval == EffectType.None)
                        {
                            iter--;
                            continue;
                        }
                        Action proc = () =>
                        {
                            b[i] = false;
                            ChangeCombo?.Invoke(false, mk.Position);
                            EvaluateCount.Invoke(eval, true);
                            mk_ChangeMarkEvaluate(mk, eval, true, false, mk.Position);
                            MarkLayer.RemoveChild(mk);
                            RemoveFromConnection(mk);
                            mk.Dispose();
                        };
                        if (scriptManager.ProcessMissPressManager.Process(mk, (MarkType)i, out bool isMissPress))
                        {
                            if (isMissPress)
                            {
                                proc();
                                break;
                            }
                        }
                        else if (mk.NoteType == NoteType.AC || (mk.NoteType == NoteType.ACFT && !mk.IsScratch))
                        {
                            proc();
                            break;
                        }
                        iter--;
                    }
                }
            }
            removeMarks.Clear();
            Update();
        }
Exemplo n.º 20
0
 private void cal(MarkLayer markLayer, IMark mark, Point logicPnt)
 {
     this.markLayer.RemoveMark(mark);
 }
Exemplo n.º 21
0
 public BusRoad(MarkLayer MarkLayer, GraphicsLayer GraphicsLayer)
 {
     this.MarkLayer     = MarkLayer;
     this.GraphicsLayer = GraphicsLayer;
 }