first commit

This commit is contained in:
Beyhan Oğur
2026-09-03 04:45:36 +03:00
commit d5f52cc3d3
1038 changed files with 169579 additions and 0 deletions
@@ -0,0 +1,133 @@
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Input;
using ClassicAssist.Data;
using ClassicAssist.Data.Friends;
using ClassicAssist.Data.Macros.Commands;
using ClassicAssist.Misc;
using ClassicAssist.UI.ViewModels;
using Newtonsoft.Json.Linq;
using ReactiveUI;
namespace ClassicAssist.Shared.UI.ViewModels.Agents
{
public class FriendsTabViewModel : BaseViewModel, ISettingProvider
{
private ICommand _addFriendCommand;
private ICommand _changeRehueOption;
private Options _options;
private ICommand _removeFriendCommand;
private FriendEntry _selectedItem;
private ICommand _selectHueCommand;
public ICommand AddFriendCommand =>
_addFriendCommand ?? ( _addFriendCommand = new RelayCommandAsync( AddFriend, o => true ) );
public ICommand ChangeRehueOption =>
_changeRehueOption ?? ( _changeRehueOption = new RelayCommand( ChangeRehue, o => true ) );
public Options Options
{
get => _options;
set => SetProperty( ref _options, value );
}
public ICommand RemoveFriendCommand =>
_removeFriendCommand ?? ( _removeFriendCommand = ReactiveCommand.CreateFromTask<FriendEntry>( RemoveFriend,
this.WhenAnyValue( e => e.SelectedItem, selector: e => e != null ) ) );
//new RelayCommandAsync( RemoveFriend, o => SelectedItem != null ) );
public FriendEntry SelectedItem
{
get => _selectedItem;
set => SetProperty( ref _selectedItem, value );
}
public ICommand SelectHueCommand =>
_selectHueCommand ?? ( _selectHueCommand = ReactiveCommand.CreateFromTask( SelectHue,
this.WhenAnyValue( e => e.Options.RehueFriends, selector: e => e ) ) );
public void Serialize( JObject json )
{
JObject config = new JObject
{
["IncludePartyMembersInFriends"] = Options.IncludePartyMembersInFriends,
["PreventAttackingFriendsInWarMode"] = Options.PreventAttackingFriendsInWarMode,
["PreventTargetingFriendsWithHarmful"] = Options.PreventTargetingFriendsWithHarmful
};
JArray friends = new JArray();
foreach ( FriendEntry friend in Options.Friends )
{
friends.Add( new JObject { { "Name", friend.Name }, { "Serial", friend.Serial } } );
}
config.Add( "Items", friends );
json?.Add( "Friends", config );
}
public void Deserialize( JObject json, Options options )
{
Options = options;
Options.Friends.Clear();
if ( json?["Friends"] == null )
{
return;
}
JToken config = json["Friends"];
Options.IncludePartyMembersInFriends = config["IncludePartyMembersInFriends"]?.ToObject<bool>() ?? true;
Options.PreventAttackingFriendsInWarMode =
config["PreventAttackingFriendsInWarMode"]?.ToObject<bool>() ?? true;
Options.PreventTargetingFriendsWithHarmful =
config["PreventTargetingFriendsWithHarmful"]?.ToObject<bool>() ?? false;
if ( config["Items"] == null )
{
return;
}
foreach ( JToken token in config["Items"] )
{
Options.Friends.Add( new FriendEntry
{
Name = token["Name"].ToObject<string>(), Serial = token["Serial"].ToObject<int>()
} );
}
}
private static void ChangeRehue( object obj )
{
MainCommands.Resync();
}
private static async Task SelectHue( CancellationToken token )
{
int hue = await Engine.UIInvoker.GetHueAsync();
Options.CurrentOptions.RehueFriendsHue = hue;
MainCommands.Resync();
}
private static async Task AddFriend( object arg )
{
await Task.Run( () => MobileCommands.AddFriend() );
}
private static Task RemoveFriend( object arg )
{
if ( !( arg is FriendEntry fe ) )
{
return Task.CompletedTask;
}
MobileCommands.RemoveFriend( fe.Serial );
return Task.CompletedTask;
}
}
}