first commit
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
# ClassicAssist.Avalonia Linux Setup - Yapılan Değişiklikler
|
||||
|
||||
## Özet
|
||||
ClassicAssist.Avalonia plugin'i ClassicUO üzerinde Linux'ta çalışır hale getirildi.
|
||||
|
||||
---
|
||||
|
||||
## 1. ClassicUO - Plugin Yükleme Düzeltmeleri
|
||||
|
||||
### Dosya: `ClassicUO/src/ClassicUO.Client/Network/Plugin.cs`
|
||||
- **Sorun**: `dotnet cuo.dll` ile çalıştırıldığında `PluginHost` null oluyor, plugin hiç yüklenmiyordu
|
||||
- **Çözüm**: `PluginHost == null` olduğunda fallback managed loader eklendi
|
||||
- `Assembly.LoadFile` + `AssemblyResolve` handler ile plugin ve bağımlılıkları yükleniyor
|
||||
- Reflection ile `Assistant.Engine.Install()` metodu çağrılıyor
|
||||
|
||||
### Dosya: `ClassicUO/src/ClassicUO.Bootstrap/src/Plugin.cs`
|
||||
- **Çözüm**: `meth.Invoke` öncesi `AssemblyResolve` handler eklendi (plugin bağımlılıkları için)
|
||||
|
||||
---
|
||||
|
||||
## 2. ClassicAssist.Avalonia Düzeltmeleri
|
||||
|
||||
### Dosya: `ClassicAssist.Avalonia/Engine.cs`
|
||||
- **Install** metoduna try-catch ve dosya loglama eklendi (`avalonia_debug.log`)
|
||||
- Debug loglama: Assembly.Location, Shared.dll yükleme, Initialize, LoadUI durumları
|
||||
|
||||
### Dosya: `ClassicAssist.Shared/Engine.cs`
|
||||
- **InitializePlugin**: Console.WriteLine loglama eklendi (delegate atamaları, WindowHandle, vb.)
|
||||
- **OnClientClosing**: `Options.CurrentOptions` null kontrolü eklendi, try-catch ile sarmalandı
|
||||
|
||||
### Dosya: `ClassicAssist.Shared/UI/ViewModels/AboutControlViewModel.cs`
|
||||
- **Sorun**: `GetBuildDateTime()` - `Version.TryParse` başarısız olunca `version` null, `version.Build` NullRefException
|
||||
- **Çözüm**: `assembly.Location` ve `version` için null kontrolleri, try-catch eklendi
|
||||
|
||||
### Dosya: `ClassicAssist.Shared/UI/ViewModels/OptionsTabViewModel.cs`
|
||||
- **Sorun**: `Serialize()` - `CurrentOptions` null olduğunda NullRefException
|
||||
- **Çözüm**: `CurrentOptions == null` ise early return
|
||||
|
||||
### Dosya: `ClassicAssist.Shared/UO/Data/Cliloc.cs`
|
||||
- **Sorun 1**: `Dictionary.Add()` duplicate key (5) olduğunda exception fırlatıyor
|
||||
- **Çözüm 1**: Indexer kullanımı `clilocList[key] = value` (overwrite)
|
||||
- **Sorun 2**: `UTF8Encoding.GetString` buffer sınırlarını aşıyor (bozuk/non-standard Cliloc.enu)
|
||||
- **Çözüm 2**: Bounds checking eklendi (`x + 7 + len > fileBytes.Length` kontrolü), try-catch
|
||||
|
||||
---
|
||||
|
||||
## 3. Native Kütüphaneler
|
||||
|
||||
### libSkiaSharp.so ve libHarfBuzzSharp.so
|
||||
- **Sorun**: `runtimes/linux-x64/native/` altındaki native .so dosyaları bulunamıyor
|
||||
- **Çözüm**: Plugin dizininin köküne kopyalandı
|
||||
- Kaynak: `~/.nuget/packages/skiasharp.nativeassets.linux/2.88.3/runtimes/linux-x64/native/`
|
||||
|
||||
---
|
||||
|
||||
## 4. Build ve Deploy
|
||||
|
||||
### Release Build Komutları
|
||||
```bash
|
||||
# ClassicAssist.Avalonia
|
||||
cd ClassicAssist.Avalonia/ClassicAssist.Avalonia
|
||||
dotnet build -c Release -f netcoreapp3.1
|
||||
|
||||
# ClassicUO
|
||||
cd ClassicUO
|
||||
dotnet build -c Release
|
||||
```
|
||||
|
||||
### Çıktı Dizinleri
|
||||
- ClassicAssist: `ClassicAssist.Avalonia/Output/netcoreapp3.1/`
|
||||
- ClassicAssist.Shared: `ClassicAssist.Avalonia/Output/netstandard2.0/`
|
||||
- ClassicUO: `ClassicUO/bin/Release/net10.0/`
|
||||
|
||||
### Deploy Dizini
|
||||
```
|
||||
/home/beyhan/Projeler/CSharp/uoclient/linux/
|
||||
├── cuo (executable)
|
||||
├── settings.json
|
||||
├── Data/Plugins/ClassicAssistAvalonia/
|
||||
│ ├── ClassicAssist.Avalonia.dll
|
||||
│ ├── ClassicAssist.Shared.dll
|
||||
│ ├── libSkiaSharp.so
|
||||
│ ├── libHarfBuzzSharp.so
|
||||
│ └── ... (diğer DLL'ler)
|
||||
└── ... (ClassicUO dosyaları)
|
||||
```
|
||||
|
||||
### Çalıştırma
|
||||
```bash
|
||||
cd /home/beyhan/Projeler/CSharp/uoclient/linux && ./cuo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. settings.json (Plugin Konfigürasyonu)
|
||||
```json
|
||||
{
|
||||
"ip": "uo.troyuo.com",
|
||||
"port": 2594,
|
||||
"ultimaonlinedirectory": "/home/beyhan/Projeler/CSharp/uoclient",
|
||||
"force_driver": 1,
|
||||
"plugins": [
|
||||
"./ClassicAssistAvalonia/ClassicAssist.Avalonia.dll"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kalan/Sonraki Adımlar
|
||||
- [ ] Plugin pencere boyutu/pozisyonu kontrolü
|
||||
- [ ] Hotkey'lerin Linux'ta çalışıp çalışmadığı testi
|
||||
- [ ] Macro sisteminin tam fonksiyonel testi
|
||||
- [ ] Packet filter'ların çalışması (Cliloc.enu non-standard olabilir)
|
||||
- [ ] Release build tam testi
|
||||
Reference in New Issue
Block a user