Exemple #1
0
        private void UpdatePanelsData(IReadOnlyCollection <TvPanelsDto> data)
        {
            var curScreens = ScreenHandler.GetScreens();

            var isEqual = true;

            foreach (var screen in curScreens)
            {
                var screenItem = data.SingleOrDefault(o => o.Num == screen) ?? new TvPanelsDto
                {
                    Num   = screen,
                    Types = new[] { ScreenType.None }
                };

                var currentItem = new WindowPagesConfig
                {
                    ScreenNum = screen,
                    Pages     = new IReportPage[] { }
                };

                if (_monWinPagesDic.ContainsKey(screen))
                {
                    currentItem = _monWinPagesDic[screen];
                }

                isEqual = currentItem.Pages.Select(o => o.ScreenType).SequenceEqual(screenItem.Types);
                if (!isEqual)
                {
                    break;
                }
            }

            if (!isEqual)
            {
                lock (_updateDataLocker)
                {
                    Dispatcher.Invoke(RemoveAllWindows);

                    foreach (var screen in curScreens)
                    {
                        var screenItem = data.SingleOrDefault(o => o.Num == screen) ?? new TvPanelsDto
                        {
                            Num   = screen,
                            Types = new[] { ScreenType.None }
                        };

                        WindowPagesConfig config;
                        var pages = new List <IReportPage>();
                        Dispatcher.Invoke(() =>
                        {
                            foreach (var type in screenItem.Types)
                            {
                                //todo factory?
                                IReportPage page;
                                switch (type)
                                {
                                case ScreenType.ScheduleDeviationTable:
                                    page = new ScheduleDeviationTablePage(_refreshDataInterval);
                                    break;

                                case ScreenType.ScheduleDeviationGraph:
                                    page = new ScheduleDeviationGraphPage(_refreshDataInterval, _diagramHoursBack, _diagramHoursForward);
                                    break;

                                case ScreenType.BrigadeScheduleDeviationTable:
                                    page = new BrigadeScheduleDeviationTablePage(_refreshDataInterval);
                                    break;

                                case ScreenType.ToDeviationTable:
                                    page = new ToDeviationTablePage(_refreshDataInterval);
                                    break;

                                case ScreenType.CriticalMalfunctionsTable:
                                    page = new CriticalMalfunctionsTablePage(_refreshDataInterval);
                                    break;

                                case ScreenType.TrainsInDepoMalfunctionsTable:
                                    page = new TrainsInDepoMalfunctionsTablePage(_refreshDataInterval);
                                    break;

                                case ScreenType.TrainsInDepoStatusTable:
                                    page = new TrainsInDepoStatusTablePage(_refreshDataInterval);
                                    break;

                                case ScreenType.JournalsTable:
                                    page = new JournalsTablePage(_refreshDataInterval);
                                    break;

                                default:
                                    page = new StartPage();
                                    break;
                                }

                                pages.Add(page);
                            }

                            config = new WindowPagesConfig
                            {
                                ScreenNum  = screen,
                                CurrentIdx = 0,
                                Window     = new ScreenWindow(),
                                Pages      = pages.ToArray()
                            };

                            _monWinPagesDic[screen] = config;

                            ShowOnMonitor(screen, config.Window);
                            //navigate to first page
                            config.Window.MainFrame.Navigate(config.Pages[0]);
                        });
                    }

                    Task.Run(() =>
                    {
                        UpdateData();
                    });
                }
            }
        }
Exemple #2
0
        public VncHost(int port, string displayname, ScreenHandler sc)
        {
            Port = port;
            DisplayName = displayname;
            screenHandler = sc;
            Start();

        }
Exemple #3
0
 public HUD(Game1 _game, ScreenHandler _screenHandler) : base(_game, _screenHandler)
 {
     SetScreenName("HUD");
     SetScreenState(ScreenState.Overlaying);
 }
Exemple #4
0
 private void OnCreateNewCharacterButtonClick(object sender, EventArgs e)
 {
     ScreenHandler.ShowRaceScreen();
 }
 private void OnRaceScreenButtonClick(object sender, EventArgs e)
 {
     ScreenHandler.ShowRaceScreen();
 }
 private void OnMainScreenButtonClick(object sender, EventArgs e)
 {
     MainForm.GetInstance().RightPanel.Controls.RemoveAt(0);
     ScreenHandler.ShowStartScreen();
 }
        public static NetworkModel LoadModelToMap(NetworkModel networkModel, ModelVisual3D myModel)
        {
            networkModel = XmlHandler.Load <NetworkModel>(@"..\..\Geographic.xml");

            // SUBSTATIONS
            for (int i = 0; i < networkModel.Substations.Count; i++)
            {
                SubstationEntity s = networkModel.Substations[i];
                double           latitude, longitude, mapX, mapY;

                // preracunavanje u koordinate
                CoordinatesHandler.ToLatLon(networkModel.Substations[i].X, networkModel.Substations[i].Y, 34, out latitude, out longitude);
                networkModel.Substations[i].X = latitude;
                networkModel.Substations[i].Y = longitude;

                // preracunavanje u poziciju na mapi
                CoordinatesHandler.FromCoordinatesToMapPosition(latitude, longitude, out mapX, out mapY);
                networkModel.Substations[i].MapX = mapX;
                networkModel.Substations[i].MapY = mapY;

                // crtanje cvora koji je u opsegu mape
                if (mapX != -1 && mapY != -1)
                {
                    // provera da li postoji cvorova na toj lokaciji, redjanje na spratove
                    // u prvom prolazu se sigurno crta
                    double z = 0;

                    if (Points.Count != 0 || i != 0)
                    {
                        int    index = 0;
                        double x;
                        double y;
                        // ako postoji objekat unutar definisanog precnika, uvecava se brojac i definise se visina na kojoj je potrebno nacrtati sledeci objekat
                        if (HasEntityInRadius(mapX, mapY, out index, out x, out y))
                        {
                            s.MapX = x;
                            s.MapY = y;
                            mapX   = x;
                            mapY   = y;
                            //Points[new Tuple<double, double>(mapX, mapY)].Count++;
                            //z = 0.05 * Points[new Tuple<double, double>(mapX, mapY)].Count;
                            Points[index].Count++;
                            z = 0.05 * Points[index].Count;
                        }
                        else
                        {
                            z = 0;
                            //Points.Add(new Tuple<double, double>(mapX, mapY), new PointStack(mapX, mapY, 0));
                            Points.Add(new PointStack(mapX, mapY, 0));
                        }
                    }
                    else
                    {
                        z = 0;
                        //EntitiesDict.Add(new Tuple<double, double>(roundLat, roundLog), 0);
                        //Points.Add(new Tuple<double, double>(mapX, mapY), new PointStack(mapX, mapY, 0));
                        Points.Add(new PointStack(mapX, mapY, 0));
                    }

                    // kreiranje 3D modela kocke i dodavanje u ArrayList models, zbog Hit Testing-a
                    GeometryModel3D model3D = ScreenHandler.Make3DCube(mapX, mapY, z, 0.05, EntityType.Substation);
                    Transformation.models.Add(model3D);

                    // dodavanje entiteta u recnik, kljuc je njegov redni broj u okviru ArrayList-e models
                    Entities.Add(Transformation.models.Count - 1, s);

                    ScreenHandler.Draw3DCube(model3D, myModel);
                }
            }

            // NODES
            for (int i = 0; i < networkModel.Nodes.Count; i++)
            {
                NodeEntity n = networkModel.Nodes[i];
                double     latitude, longitude, mapX, mapY;

                // preracunavanje u koordinate
                CoordinatesHandler.ToLatLon(networkModel.Nodes[i].X, networkModel.Nodes[i].Y, 34, out latitude, out longitude);
                networkModel.Nodes[i].X = latitude;
                networkModel.Nodes[i].Y = longitude;

                // preracunavanje u poziciju na mapi
                CoordinatesHandler.FromCoordinatesToMapPosition(latitude, longitude, out mapX, out mapY);
                networkModel.Nodes[i].MapX = mapX;
                networkModel.Nodes[i].MapY = mapY;

                // crtanje c vora koji je u opsegu mape
                if (mapX != -1 && mapY != -1)
                {
                    /// provera da li postoji cvorova na toj lokaciji, redjanje na spratove
                    // u prvom prolazu se sigurno crta
                    double z = 0;

                    if (i != 0)
                    {
                        int    index = 0;
                        double x;
                        double y;
                        // ako postoji objekat unutar definisanog precnika, uvecava se brojac i definise se visina na kojoj je potrebno nacrtati sledeci objekat
                        if (HasEntityInRadius(mapX, mapY, out index, out x, out y))
                        {
                            n.MapX = x;
                            n.MapY = y;
                            mapX   = x;
                            mapY   = y;
                            //z = 0.05 * EntitiesDict[new Tuple<double, double>(roundLat, roundLog)];
                            //Points[new Tuple<double, double>(mapX, mapY)].Count++;
                            Points[index].Count++;
                            z = 0.05 * Points[index].Count;
                        }
                        else
                        {
                            z = 0;
                            //Points.Add(new Tuple<double, double>(mapX, mapY), new PointStack(mapX, mapY, 0));
                            Points.Add(new PointStack(mapX, mapY, 0));
                        }
                    }
                    else
                    {
                        z = 0;
                        //EntitiesDict.Add(new Tuple<double, double>(roundLat, roundLog), 0);
                        //Points.Add(new Tuple<double, double>(mapX, mapY), new PointStack(mapX, mapY, 0));
                        Points.Add(new PointStack(mapX, mapY, 0));
                    }

                    // kreiranje 3D modela kocke i dodavanje u ArrayList models, zbog Hit Testing-a
                    GeometryModel3D model3D = ScreenHandler.Make3DCube(mapX, mapY, z, 0.05, EntityType.Node);
                    Transformation.models.Add(model3D);

                    // dodavanje entiteta u recnik, kljuc je njegov redni broj u okviru ArrayList-e models
                    Entities.Add(Transformation.models.Count - 1, n);

                    ScreenHandler.Draw3DCube(model3D, myModel);
                }
            }

            // SWITCHES
            for (int i = 0; i < networkModel.Switches.Count; i++)
            {
                SwitchEntity s = networkModel.Switches[i];
                double       latitude, longitude, mapX, mapY;

                // preracunavanje u koordinate
                CoordinatesHandler.ToLatLon(networkModel.Switches[i].X, networkModel.Switches[i].Y, 34, out latitude, out longitude);
                networkModel.Switches[i].X = latitude;
                networkModel.Switches[i].Y = longitude;

                // preracunavanje u poziciju na mapi
                CoordinatesHandler.FromCoordinatesToMapPosition(latitude, longitude, out mapX, out mapY);
                networkModel.Switches[i].MapX = mapX;
                networkModel.Switches[i].MapY = mapY;

                // crtanje cvora koji je u opsegu mape
                if (mapX != -1 && mapY != -1)
                {
                    // provera da li postoji cvorova na toj lokaciji, redjanje na spratove
                    // u prvom prolazu se sigurno crta
                    double z = 0;

                    if (i != 0)
                    {
                        int    index = 0;
                        double x;
                        double y;
                        // ako postoji objekat unutar definisanog precnika, uvecava se brojac i definise se visina na kojoj je potrebno nacrtati sledeci objekat
                        if (HasEntityInRadius(mapX, mapY, out index, out x, out y))
                        {
                            s.MapX = x;
                            s.MapY = y;
                            mapX   = x;
                            mapY   = y;
                            //Points[new Tuple<double, double>(mapX, mapY)].Count++;
                            //z = 0.05 * Points[new Tuple<double, double>(mapX, mapY)].Count;
                            Points[index].Count++;
                            z = 0.05 * Points[index].Count;
                        }
                        else
                        {
                            z = 0;
                            //EntitiesDict.Add(new Tuple<double, double>(roundLat, roundLog), 0);
                            //Points.Add(new Tuple<double, double>(mapX, mapY), new PointStack(mapX, mapY, 0));
                            Points.Add(new PointStack(mapX, mapY, 0));
                        }
                    }
                    else
                    {
                        z = 0;
                        //EntitiesDict.Add(new Tuple<double, double>(roundLat, roundLog), 0);
                        //Points.Add(new Tuple<double, double>(mapX, mapY), new PointStack(mapX, mapY, 0));
                        Points.Add(new PointStack(mapX, mapY, 0));
                    }

                    // kreiranje 3D modela kocke i dodavanje u ArrayList models, zbog Hit Testing-a
                    GeometryModel3D model3D = ScreenHandler.Make3DCube(mapX, mapY, z, 0.05, EntityType.Switch);
                    Transformation.models.Add(model3D);

                    // dodavanje entiteta u recnik, kljuc je njegov redni broj u okviru ArrayList-e models
                    Entities.Add(Transformation.models.Count - 1, s);

                    ScreenHandler.Draw3DCube(model3D, myModel);
                }
            }

            // LINES
            int cnt = 0;

            for (int i = 0; i < networkModel.Lines.Count; i++)
            {
                Entity entityStart = null;
                Entity entityEnd   = null;

                entityStart = Entities.Values.ToList().Where(x => x.Id == networkModel.Lines[i].FirstEnd).FirstOrDefault();
                entityEnd   = Entities.Values.Where(x => x.Id == networkModel.Lines[i].SecondEnd).FirstOrDefault();


                if (entityStart == null || entityEnd == null)
                {
                    continue;
                }

                entityStart.NumConnctions++;
                entityEnd.NumConnctions++;
                cnt++;
                GeometryModel3D model3D = ScreenHandler.Make3DTube(entityStart.MapX + 0.025, entityStart.MapY + 0.025, entityEnd.MapX + 0.025, entityEnd.MapY + 0.025, 0, 0.05, EntityType.Switch);
                Transformation.models.Add(model3D);
                ScreenHandler.Draw3DCube(model3D, myModel);
                Entities.Add(Transformation.models.Count - 1, networkModel.Lines[i]);
            }

            return(networkModel);
        }