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(); }); } } }
public VncHost(int port, string displayname, ScreenHandler sc) { Port = port; DisplayName = displayname; screenHandler = sc; Start(); }
public HUD(Game1 _game, ScreenHandler _screenHandler) : base(_game, _screenHandler) { SetScreenName("HUD"); SetScreenState(ScreenState.Overlaying); }
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); }