private void OnMovementConfirmed(MovementConfirmed e) { var destination = e.Path.Last(); if (GameWorld.CurrentCharacter.Team != Team.Friendly && !GameWorld.FriendlyPerception.ContainsKey(destination)) { return; } var visuals = new List <IVisual>(); var automata = new List <IAutomaton>(); visuals.Add(new UiImage { Image = "Effects/Cover_Gray", Transform = GameWorld.Map.TileToWorldTransform(destination).WithSize(TileData.RenderSize), Tint = UiColors.AvailableMovesView_Rectangles }); var anim = new TileRotatingEdgesAnim(destination, Color.FromNonPremultiplied(110, 170, 255, 255)).Initialized(); visuals.Add(anim); automata.Add(anim); _visuals = visuals; _automata = automata; }
private void UpdateTargets() { if (!_availableTargetsMap.ContainsKey(_hoveredPoint)) { _availableTargetsMap[_hoveredPoint] = GameWorld.LivingCharacters.Where(CanShoot).ToList(); _availableTargetsMap[_hoveredPoint].Where(x => !_attackTargetVisualMap.ContainsKey(x) && GameWorld.FriendlyPerception[x.CurrentTile.Position]).ForEach(x => { _attackTargetVisualMap[x] = new List <IVisual>(); _attackTargetAutomataMap[x] = new List <IAutomaton>(); _attackTargetVisualMap[x].Add(new ColoredRectangle { Transform = x.CurrentTile.Transform, Color = UiColors.AvailableTargetsView_Rectanges }); var anim = new TileRotatingEdgesAnim(x.CurrentTile.Position, UiColors.AvailableTargetsView_TileRotatingEdgesAnim); anim.Init(); _attackTargetVisualMap[x].Add(anim); _attackTargetAutomataMap[x].Add(anim); }); _attackTargetAggregateVisualMap[_hoveredPoint] = _availableTargetsMap[_hoveredPoint].SelectMany(x => _attackTargetVisualMap[x]).ToList(); _attackTargetAggregateAutomataMap[_hoveredPoint] = _availableTargetsMap[_hoveredPoint].SelectMany(x => _attackTargetAutomataMap[x]).ToList(); } _visuals = _attackTargetAggregateVisualMap[_hoveredPoint]; _automata = _attackTargetAggregateAutomataMap[_hoveredPoint]; }
private void ShowOptions(ShootSelected e) { var visuals = new List <IVisual>(); var automata = new List <IAutomaton>(); e.AvailableTargets.ForEach(x => { visuals.Add(new ColoredRectangle { Transform = x.Character.CurrentTile.Transform, Color = UiColors.AvailableTargetsView_Rectanges }); var anim = new TileRotatingEdgesAnim(x.Character.CurrentTile.Position, UiColors.AvailableTargetsView_TileRotatingEdgesAnim); anim.Init(); visuals.Add(anim); automata.Add(anim); }); _visuals = visuals; _automata = automata; }