L2Bot2.0/Client/Application/ViewModels/SkillListViewModel.cs
2023-02-09 22:45:08 +04:00

79 lines
2.5 KiB
C#

using Client.Domain.Common;
using Client.Domain.Entities;
using Client.Domain.Service;
using System.Windows.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Client.Application.Commands;
namespace Client.Application.ViewModels
{
public class SkillListViewModel : ObservableObject
{
public uint Id => skill.Id;
public string Name => skill.Name;
public uint Level => skill.Level;
public string Description=> skill.Description;
public string IconName => "/Assets/icons/" + skill.IconName + ".png";
public bool IsActive => skill.IsActive;
public bool IsReadyToUse => skill.IsReadyToUse;
public bool IsBusy => !skill.IsReadyToUse;
public uint? Cost => skill.Cost == 0 ? null : skill.Cost;
public int? Range => skill.Range <= 0 ? null : skill.Range;
public ICommand MouseLeftClickCommand { get; }
private void OnLeftMouseClick(object? obj)
{
worldHandler.RequestUseSkill(Id, false, false);
}
public SkillListViewModel(WorldHandler worldHandler, Skill skill)
{
this.worldHandler = worldHandler;
this.skill = skill;
skill.PropertyChanged += Skill_PropertyChanged;
MouseLeftClickCommand = new RelayCommand(OnLeftMouseClick);
}
private void Skill_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Description")
{
OnPropertyChanged("Description");
}
if (e.PropertyName == "IsReadyToUse")
{
OnPropertyChanged("IsBusy");
OnPropertyChanged("IsReadyToUse");
}
if (e.PropertyName == "Level")
{
OnPropertyChanged("Level");
}
if (e.PropertyName == "Cost")
{
OnPropertyChanged("Cost");
}
if (e.PropertyName == "Range")
{
OnPropertyChanged("Range");
}
if (e.PropertyName == "Name")
{
OnPropertyChanged("Name");
}
if (e.PropertyName == "IconName")
{
OnPropertyChanged("IconName");
}
}
private readonly WorldHandler worldHandler;
private readonly Skill skill;
}
}