/// <summary> /// Prepares given mvc context /// </summary> /// <param name="urlbase"> </param> /// <param name="context"> </param> public void Setup(string urlbase, IMvcContext context) { context.Uri = new Uri(urlbase + Action.Replace(".", "/") + "." + RenderName.ToLower() + ".qweb"); if (null != Parameters) { if (Parameters is IDictionary <string, object> ) { foreach (var o in ((IDictionary <string, Object>)Parameters)) { context.Set(o.Key, o.Value); } } else if (Parameters is IDictionary <string, string> ) { foreach (var o in ((IDictionary <string, string>)Parameters)) { context.Set(o.Key, o.Value); } } else { var props = Parameters.GetType().GetProperties(); foreach (var p in props) { context.Set(p.Name, p.GetValue(Parameters, null)); } } } }
public void Update(Entity entity, IconsBuilderSettings settings, Dictionary <string, Size2> modIcons) { Show = () => entity.IsAlive; if (entity.IsHidden && settings.HideBurriedMonsters) { Show = () => !entity.IsHidden && entity.IsAlive; } ID = entity.Id; if (!_HasIngameIcon) { MainTexture = new HudTexture("Icons.png"); } switch (Rarity) { case MonsterRarity.White: MainTexture.Size = settings.SizeEntityWhiteIcon; break; case MonsterRarity.Magic: MainTexture.Size = settings.SizeEntityMagicIcon; break; case MonsterRarity.Rare: MainTexture.Size = settings.SizeEntityRareIcon; break; case MonsterRarity.Unique: MainTexture.Size = settings.SizeEntityUniqueIcon; break; default: throw new ArgumentException( $"{nameof(MonsterIcon)} wrong rarity for {entity.Path}. Dump: {entity.GetComponent<ObjectMagicProperties>().DumpObject()}"); break; } //if (_HasIngameIcon && entity.HasComponent<MinimapIcon>() && !entity.GetComponent<MinimapIcon>().Name.Equals("NPC") && entity.League != LeagueType.Heist) // return; if (!entity.IsHostile) { if (!_HasIngameIcon) { MainTexture.UV = SpriteHelper.GetUV(MapIconsIndex.LootFilterSmallGreenCircle); Priority = IconPriority.Low; Show = () => !settings.HideMinions && entity.IsAlive; } //Spirits icon } else if (Rarity == MonsterRarity.Unique && entity.Path.Contains("Metadata/Monsters/Spirit/")) { MainTexture.UV = SpriteHelper.GetUV(MapIconsIndex.LootFilterLargeGreenHexagon); } else { string modName = null; if (entity.HasComponent <ObjectMagicProperties>()) { var objectMagicProperties = entity.GetComponent <ObjectMagicProperties>(); var mods = objectMagicProperties.Mods; if (mods != null) { if (mods.Contains("MonsterConvertsOnDeath_")) { Show = () => entity.IsAlive && entity.IsHostile; } modName = mods.FirstOrDefaultF(modIcons.ContainsKey); } } if (modName != null) { MainTexture = new HudTexture("sprites.png"); MainTexture.UV = SpriteHelper.GetUV(modIcons[modName], new Size2F(7, 8)); Priority = IconPriority.VeryHigh; } else { switch (Rarity) { case MonsterRarity.White: MainTexture.UV = SpriteHelper.GetUV(MapIconsIndex.LootFilterLargeRedCircle); if (settings.ShowWhiteMonsterName) { Text = RenderName.Split(',').FirstOrDefault(); } break; case MonsterRarity.Magic: MainTexture.UV = SpriteHelper.GetUV(MapIconsIndex.LootFilterLargeBlueCircle); if (settings.ShowMagicMonsterName) { Text = RenderName.Split(',').FirstOrDefault(); } break; case MonsterRarity.Rare: MainTexture.UV = SpriteHelper.GetUV(MapIconsIndex.LootFilterLargeYellowCircle); if (settings.ShowRareMonsterName) { Text = RenderName.Split(',').FirstOrDefault(); } break; case MonsterRarity.Unique: MainTexture.UV = SpriteHelper.GetUV(MapIconsIndex.LootFilterLargeCyanHexagon); MainTexture.Color = Color.DarkOrange; if (settings.ShowUniqueMonsterName) { Text = RenderName.Split(',').FirstOrDefault(); } break; default: throw new ArgumentOutOfRangeException( $"Rarity wrong was is {Rarity}. {entity.GetComponent<ObjectMagicProperties>().DumpObject()}"); } } } }