public override async void Begin(Job job) { await Session.Loading(); var character = Cache.Character; var marker = new Marker(Position) { Message = "Tryck ~INPUT_CONTEXT~ för att byta om", Scale = 3f, Color = Color.FromArgb(0, 0, 0, 0), Condition = self => character.Metadata.Employment == job.Attachment }; var elements = new List <MenuItem>(); foreach (var option in ClothingOptions) { elements.Add(new MenuItem(option.Key, option.Value.Item1)); } marker.Callback += () => { new Menu("Omklädningsrum") { Items = elements, Callback = async(menu, item, operation) => { if (operation.Type != MenuOperationType.Select) { return; } var player = Cache.Player; var option = ClothingOptions.FirstOrDefault(self => self.Key == item.Seed); var style = character.Style; var name = style.Sex.Current == 0 ? option.Value.Item2.Item1 : option.Value.Item2.Item2; if (name != "CHARACTER_STYLE") { style = style.Merge((Style)Activator.CreateInstance(Type.GetType(name) ?? throw new NullReferenceException($"[Job] [JobLockerRoomProfile] Could not find style class `{name}`.")), ClothingComponents); } await player.Entity.AnimationQueue.PlayDirectInQueue(new AnimationBuilder() .Select("oddjobs@basejump@ig_15", "puton_parachute") ); await style.Commit(player, false); Callback?.Invoke(option.Key, name, style); } }.Commit(); };
Item(ClothingOptions Option) { option = Option; }