示例#1
0
        private void CreateAndReloadMovieActors()
        {
            foreach (var person in ActorsEditList)
            {
                if (person.IsActorChecked)
                {
                    var actor = Actors.FirstOrDefault(x => x.Id == person.Id);
                    if (actor == null)
                    {
                        var movieActor = new PersonActorDetailModel()
                        {
                            Id      = Guid.NewGuid(),
                            MovieId = EditDetailModel.Id,
                            ActorId = person.Id
                        };

                        _movieActorRepository.Create(movieActor);
                        Actors.Add(person);
                    }
                }
                else
                {
                    var actor = Actors.FirstOrDefault(x => x.Id == person.Id);
                    if (actor != null)
                    {
                        _movieActorRepository.TryDeleteActorMovieRelation(EditDetailModel.Id, person.Id);
                        DeleteActorInActorListById(person.Id);
                    }
                }
            }
        }
示例#2
0
        private void DeleteActorInActorListById(Guid id)
        {
            var item  = Actors.FirstOrDefault(a => a.Id == id);
            var index = Actors.IndexOf(item);

            if (index != -1)
            {
                Actors.RemoveAt(index);
            }
        }
示例#3
0
 private void UpdatePeopleListWithActors()
 {
     foreach (var person in ActorsEditList)
     {
         var actor = Actors.FirstOrDefault(x => x.Id == person.Id);
         if (actor != null)
         {
             person.IsActorChecked = true;
         }
     }
 }
示例#4
0
        protected override void OnDoubleClick(EventArgs e)
        {
            base.OnDoubleClick(e);

            var x = Actors.FirstOrDefault(a => a.Value.Location() == GetBrushLocation());

            if (x.Key != null)
            {
                ActorDoubleClicked(x);
            }
        }
        internal override void HandleActorPropertiesReplication(INetworkMessageIn msg)
        {
            int actorQuantity = msg.ReadInt();

            for (int i = 0; i < actorQuantity; i++)
            {
                int id = msg.ReadInt();

                var actor = Actors.FirstOrDefault(a => a.Id == id);
                actor?.Deserialize(msg);
            }
        }
        internal override void HandleActorDestruction(INetworkMessageIn msg)
        {
            int id = msg.ReadInt();

            var actor = Actors.FirstOrDefault(a => a.Id == id);

            if (actor == null)
            {
                return;
            }

            actor.IsMarkedToDestroy = true;
            actor.RemoteDestroyed();
        }
        internal override void HandleActorReplication(INetworkMessageIn msg)
        {
            int actorQuantity = msg.ReadInt();

            for (int i = 0; i < actorQuantity; i++)
            {
                int id = msg.ReadInt();
                int x  = msg.ReadInt();
                int y  = msg.ReadInt();

                var actor = Actors.FirstOrDefault(a => a.Id == id);

                actor?.SetLocation(x, y);
            }
        }
示例#8
0
        void Erase()
        {
            // Crash preventing
            var brushLocation = GetBrushLocation();

            if (Map == null || brushLocation.X >= Map.MapSize.X ||
                brushLocation.Y >= Map.MapSize.Y ||
                brushLocation.X < 0 ||
                brushLocation.Y < 0)
            {
                return;
            }

            currentTool = null;

            var key = Actors.FirstOrDefault(a => a.Value.Location() == brushLocation);

            if (key.Key != null)
            {
                Actors.Remove(key.Key);
            }

            if (Map.MapResources.Value[brushLocation].Type != 0)
            {
                Map.MapResources.Value[brushLocation] = new ResourceTile(0, 0);
                var ch = new int2(brushLocation.X / ChunkSize, brushLocation.Y / ChunkSize);
                if (Chunks.ContainsKey(ch))
                {
                    Chunks[ch].Dispose();
                    Chunks.Remove(ch);
                }
            }

            AfterChange();
            ClearSelection();
        }
 public T?GetActor <T>() where T : Actor =>
 (T)Actors.FirstOrDefault(x => x.GetType() == typeof(T)) !;
 public Actor?GetActor(Type actorType) =>
 Actors.FirstOrDefault(x => x.GetType() == actorType);
 public Actor?GetActor(string actorName) =>
 Actors.FirstOrDefault(x => x.ActorName == actorName);
示例#12
0
        protected override void OnPaint(PaintEventArgs e)
        {
            if (Map == null)
            {
                return;
            }
            if (TileSet == null)
            {
                return;
            }

            for (var u = 0; u < Map.MapSize.X; u += ChunkSize)
            {
                for (var v = 0; v < Map.MapSize.Y; v += ChunkSize)
                {
                    var x = new int2(u / ChunkSize, v / ChunkSize);
                    if (!Chunks.ContainsKey(x))
                    {
                        Chunks[x] = RenderChunk(u / ChunkSize, v / ChunkSize);
                    }

                    var bmp = Chunks[x];

                    var drawX      = TileSetRenderer.TileSize * (float)ChunkSize * (float)x.X * Zoom + Offset.X;
                    var drawY      = TileSetRenderer.TileSize * (float)ChunkSize * (float)x.Y * Zoom + Offset.Y;
                    var sourceRect = new RectangleF(0, 0, bmp.Width, bmp.Height);
                    var destRect   = new RectangleF(drawX, drawY, bmp.Width * Zoom, bmp.Height * Zoom);
                    e.Graphics.DrawImage(bmp, destRect, sourceRect, GraphicsUnit.Pixel);
                }
            }

            e.Graphics.DrawRectangle(CordonPen,
                                     Map.Bounds.Left * TileSetRenderer.TileSize * Zoom + Offset.X,
                                     Map.Bounds.Top * TileSetRenderer.TileSize * Zoom + Offset.Y,
                                     Map.Bounds.Width * TileSetRenderer.TileSize * Zoom,
                                     Map.Bounds.Height * TileSetRenderer.TileSize * Zoom);

            e.Graphics.DrawRectangle(SelectionPen,
                                     (SelectionStart.X * TileSetRenderer.TileSize * Zoom) + Offset.X,
                                     (SelectionStart.Y * TileSetRenderer.TileSize * Zoom) + Offset.Y,
                                     (SelectionEnd - SelectionStart).X * TileSetRenderer.TileSize * Zoom,
                                     (SelectionEnd - SelectionStart).Y * TileSetRenderer.TileSize * Zoom);

            if (IsPaste)
            {
                var loc    = GetBrushLocation();
                var width  = Math.Abs((SelectionStart - SelectionEnd).X);
                var height = Math.Abs((SelectionStart - SelectionEnd).Y);

                e.Graphics.DrawRectangle(PastePen,
                                         (loc.X * TileSetRenderer.TileSize * Zoom) + Offset.X,
                                         (loc.Y * TileSetRenderer.TileSize * Zoom) + Offset.Y,
                                         width * (TileSetRenderer.TileSize * Zoom),
                                         height * (TileSetRenderer.TileSize * Zoom));
            }

            foreach (var ar in Actors)
            {
                if (actorTemplates.ContainsKey(ar.Value.Type))
                {
                    DrawActor(e.Graphics, ar.Value.Location(), actorTemplates[ar.Value.Type],
                              GetPaletteForActor(ar.Value));
                }
                else
                {
                    Console.WriteLine("Warning: Unknown or excluded actor: {0}", ar.Value.Type);
                }
            }

            if (ShowActorNames)
            {
                foreach (var ar in Actors)
                {
                    if (!ar.Key.StartsWith("Actor"))                            // if it has a custom name
                    {
                        e.Graphics.DrawStringContrast(Font, ar.Key,
                                                      (int)(ar.Value.Location().X *TileSetRenderer.TileSize *Zoom + Offset.X),
                                                      (int)(ar.Value.Location().Y *TileSetRenderer.TileSize *Zoom + Offset.Y),
                                                      Brushes.White,
                                                      Brushes.Black);
                    }
                }
            }

            if (ShowRuler && Zoom > 0.2)
            {
                for (var i = Map.Bounds.Left; i <= Map.Bounds.Right; i += 8)
                {
                    if (i % 8 == 0)
                    {
                        var point = new PointF(i * TileSetRenderer.TileSize * Zoom + Offset.X, (Map.Bounds.Top - 8) * TileSetRenderer.TileSize * Zoom + Offset.Y);
                        e.Graphics.DrawString((i - Map.Bounds.Left).ToString(), MarkerFont, TextBrush, point);
                    }
                }

                for (var i = Map.Bounds.Top; i <= Map.Bounds.Bottom; i += 8)
                {
                    if (i % 8 == 0)
                    {
                        var point = new PointF((Map.Bounds.Left - 8) * TileSetRenderer.TileSize * Zoom + Offset.X, i * TileSetRenderer.TileSize * Zoom + Offset.Y);
                        e.Graphics.DrawString((i - Map.Bounds.Left).ToString(), MarkerFont, TextBrush, point);
                    }
                }
            }

            if (currentTool != null)
            {
                currentTool.Preview(this, e.Graphics);
            }

            if (currentTool == null)
            {
                var x = Actors.FirstOrDefault(a => a.Value.Location() == GetBrushLocation());
                if (x.Key != null && actorTemplates.ContainsKey(x.Value.Type))
                {
                    DrawActorBorder(e.Graphics, x.Value.Location(), actorTemplates[x.Value.Type]);
                }
            }
        }
示例#13
0
 public Fighter GetFighter(int id)
 {
     return(Actors.FirstOrDefault(entry => entry.Id == id));
 }
示例#14
0
 public TActor GetActor <TActor>(int id)
     where TActor : T
 {
     return(Actors.FirstOrDefault(x => x.Id == id && x is TActor) as TActor);
 }
示例#15
0
 /// <summary>
 /// Finds the first actor who has no head (= is impersonated) or NULL.
 /// </summary>
 /// <returns></returns>
 public virtual IActor FindImpersonatedActor()
 {
     return(Actors.FirstOrDefault(a => !a.HasHead));
 }
示例#16
0
 public T GetFighter <T>(int id) where T : Fighter
 {
     return((T)Actors.FirstOrDefault(entry => entry is T && entry.Id == id));
 }
示例#17
0
 public Fighter GetFighter(Cell cell)
 {
     // i assume 2 fighters can be on the same cell (i.g if someone carry someone)
     return(Actors.FirstOrDefault(entry => entry.Cell == cell));
 }
示例#18
0
        private void Validate_Click(object sender, RoutedEventArgs e)
        {
            var dlg = new OpenFileDialog
            {
                CheckFileExists  = true,
                CheckPathExists  = true,
                Multiselect      = false,
                Filter           = "IFC File|*.ifc|IFC XML File|*.ifcxml",
                FilterIndex      = 0,
                Title            = "Select IFC model file for validation",
                FileName         = App.Settings.LastModel,
                InitialDirectory = Path.GetDirectoryName(App.Settings.LastModel)
            };

            if (dlg.ShowDialog() != true)
            {
                return;
            }

            App.Settings.LastModel = dlg.FileName;
            var fileName = dlg.FileName;
            var bcfPath  = Path.ChangeExtension(fileName, ".bcf");

            XbimSchemaVersion schema;

            using (var temp = File.OpenRead(fileName))
            {
                schema = MemoryModel.GetStepFileXbimSchemaVersion(temp);
            }

            var mvd = GetMvd(true, schema);

            var logger = XbimLogging.CreateLogger("MvdValidator");

            using (var ifcStream = File.OpenRead(fileName))
                using (var model = MemoryModel.OpenReadStep21(ifcStream, logger, null, ignoreTypes, false, false))
                {
                    var results = MvdValidator
                                  .ValidateModel(mvd, model)
                                  .ToList();
                    if (results.All(r => r.Concept == null && r.Result == ConceptTestResult.DoesNotApply))
                    {
                        MessageBox.Show("No applicable entities in the file", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
                        return;
                    }

                    var failed  = results.Where(r => r.Result == ConceptTestResult.Fail).GroupBy(r => r.Entity).ToList();
                    var passed  = results.Where(r => r.Result == ConceptTestResult.Pass).GroupBy(r => r.Entity).ToList();
                    var skipped = results.Where(r => r.Result == ConceptTestResult.DoesNotApply).GroupBy(r => r.Entity).ToList();

                    var bcf = new BCFArchive();

                    // store reports as documents
                    bcf.Documents.Add(WriteResults("failed.csv", failed.SelectMany(g => g)));
                    bcf.Documents.Add(WriteResults("passed.csv", passed.SelectMany(g => g)));
                    bcf.Documents.Add(WriteResults("skipped.csv", skipped.SelectMany(g => g)));

                    // store actual MVD as a document
                    var mvdStream = new MemoryStream();
                    mvd.Serialize(mvdStream);
                    bcf.Documents.Add(new DocumentFile {
                        Name = "validation.mvdXML", Stream = mvdStream
                    });

                    // create topics
                    var failedConcepts = results.Where(r => r.Result == ConceptTestResult.Fail).GroupBy(r => r.Concept.name).ToList();
                    var actor          =
                        ContextSelector.Context.OfType <Actor>().FirstOrDefault()?.Name ??
                        Actors.FirstOrDefault()?.Name ??
                        "*****@*****.**";
                    foreach (var concept in failedConcepts)
                    {
                        var issueId        = Guid.NewGuid();
                        var viewpointId    = Guid.NewGuid();
                        var defViewpointId = Guid.NewGuid();
                        var components     = concept.Select(c => c.Entity).OfType <IIfcRoot>().Select(e => new Component
                        {
                            IfcGuid           = e.GlobalId,
                            AuthoringToolId   = e.OwnerHistory?.OwningApplication?.ApplicationIdentifier,
                            OriginatingSystem = e.EntityLabel.ToString(),
                        }).ToList();

                        var issue = new TopicFolder
                        {
                            Id     = issueId,
                            Markup = new Markup
                            {
                                Header = new List <HeaderFile> {
                                    new HeaderFile {
                                        isExternal = true,
                                        Filename   = Path.GetFileName(fileName),
                                        IfcProject = model.Instances.FirstOrDefault <IIfcProject>()?.GlobalId
                                    }
                                },
                                Topic = new Topic
                                {
                                    CreationDate      = DateTime.Now,
                                    Guid              = issueId.ToString(),
                                    Title             = $"Failed validation of {concept.Key}",
                                    Description       = $"This is automatically generater error report for DSS. This topic refers to all entities which should have {concept.Key} but it wasn't found.",
                                    DocumentReference = new List <TopicDocumentReference> {
                                        new TopicDocumentReference {
                                            isExternal         = false,
                                            ReferencedDocument = "../Documents/failed.csv"
                                        },
                                        new TopicDocumentReference {
                                            isExternal         = false,
                                            ReferencedDocument = "../Documents/validation.mvdXML"
                                        }
                                    },
                                    CreationAuthor = actor
                                },
                                Comment = new List <Comment> {
                                    new Comment {
                                        Date      = DateTime.Now,
                                        Author    = actor,
                                        Comment1  = $"Failed validation of {concept.Key}",
                                        Viewpoint = new CommentViewpoint {
                                            Guid = viewpointId.ToString()
                                        }
                                    }
                                },
                                Viewpoints = new List <ViewPoint> {
                                    new ViewPoint {
                                        Index     = 0,
                                        Guid      = defViewpointId.ToString(),
                                        Viewpoint = "viewpoint.bcfv"
                                    },
                                    new ViewPoint {
                                        Index     = 1,
                                        Guid      = viewpointId.ToString(),
                                        Viewpoint = $"{viewpointId.ToString()}.bcfv"
                                    }
                                }
                            },
                            ViewPoints = new List <VisualizationInfo> {
                                new VisualizationInfo {
                                    Guid       = defViewpointId.ToString(),
                                    Components = new Components {
                                        ViewSetupHints = new ViewSetupHints {
                                            OpeningsVisible = false, SpaceBoundariesVisible = false, SpacesVisible = false
                                        },
                                        Selection = concept.Select(c => c.Entity).OfType <IIfcRoot>().Select(e => new Component {
                                            IfcGuid           = e.GlobalId,
                                            AuthoringToolId   = e.OwnerHistory?.OwningApplication?.ApplicationIdentifier,
                                            OriginatingSystem = e.EntityLabel.ToString(),
                                        }).ToList(),
                                        Visibility = new ComponentVisibility {
                                            DefaultVisibility = true, Exceptions = new List <Component>()
                                        },
                                        Coloring = new List <ComponentColoringColor> {
                                            new ComponentColoringColor {
                                                Color     = "FF00FF00",
                                                Component = components
                                            }
                                        }
                                    },
                                },
                                new VisualizationInfo {
                                    Guid       = viewpointId.ToString(),
                                    Components = new Components {
                                        ViewSetupHints = new ViewSetupHints {
                                            OpeningsVisible = false, SpaceBoundariesVisible = false, SpacesVisible = false
                                        },
                                        Selection  = components,
                                        Visibility = new ComponentVisibility {
                                            DefaultVisibility = false, Exceptions = new List <Component>()
                                        }
                                    },
                                }
                            }
                        };

                        bcf.Topics.Add(issue);
                    }

                    using (var s = File.Create(bcfPath))
                    {
                        bcf.Serialize(s);
                    }

                    if (!failed.Any())
                    {
                        MessageBox.Show($"All {passed.Count} applicable entities are valid. {skipped.Count} entities not applicable.  Reports are saved in '{bcfPath}'",
                                        "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show($"{failed.Count} applicable entities are invalid. {skipped.Count} entities not applicable. Reports are saved in '{bcfPath}'",
                                        "Invalid entities", MessageBoxButton.OK, MessageBoxImage.Warning);
                    }
                }
        }
示例#19
0
 /// <summary>
 /// Get if there's an actor on a tile
 /// </summary>
 /// <param name="Coord">Coordinate to check</param>
 /// <returns>Actor on the tile. Null if none.</returns>
 public Actor Occupant(XY Coord)
 {
     return(Actors.FirstOrDefault(i => i.Location == Coord));
 }
示例#20
0
 public T GetActor(int id)
 {
     return(Actors.FirstOrDefault(x => x.Id == id));
 }