Source’la uğraşmaya yeni girenler ya da biraz kurcalamış ama config tarafını tam çözmemiş olanlar için güzel bir konu bu. İlk başta çok gerekli gibi durmuyor ama bir noktadan sonra “şunu config’ten yönetsem daha iyi olur” diyorsun. Özellikle vanilla düzenleyip başkalarına dağıtanlar zaten bu olayı sık kullanıyor.

Mantık aslında basit, global bir değişken tanımlıyorsun ve bunu CONFIG dosyasına bağlı hale getiriyorsun. Örnek olarak yang limiti üzerinden gitmişler, en anlaşılır senaryo o. Çünkü sabit bırakınca ya düşük kalıyor ya da sonradan değiştirmek eziyet oluyor. İlk iş config.cpp’ye girip değişkeni global tanımlamak. Zaten dosyada tonla örnek var, onların arasına ekliyorsun. Veri tipi olarak unsigned long long seçiliyor çünkü büyük sayı tutmak istiyorsun ve negatif olmasının anlamı yok. O yüzden şöyle bir şey oluyor:
unsigned long long yang_max = 2000000000ULL;
Bu default değer önemli, yoksa hiç ayarlamazsan 0 geliyor ve sistem saçmalıyor. Sonra config.h tarafında extern olarak tanımlıyorsun ki diğer .cpp dosyaları da bunu görebilsin:
extern unsigned long long yang_max;

Asıl olay TOKEN kısmında başlıyor. config.cpp içinde TOKEN("max_level") gibi bloklar var ya, ondan bir tane kopyalayıp kendi değişkenine göre düzenliyorsun. Mesela:
Code:
TOKEN("yang_max")
{
str_to_number(yang_max, value_string);
yang_max = MINMAX(1, yang_max, 9999999999ULL);
fprintf(stderr, "YANG_MAX: %ulld\n", yang_max);
}
Burada value_string direkt CONFIG dosyasından geliyor, MINMAX ile sınır koyuyorsun. %ulld olayı da önemli, yanlış yazarsan crash yersin direkt. Bu kısmı ben ilk başta atlamıştım, boşuna debug yapmıştım baya. Sonrasında zaten iş kolay, istediğin .cpp dosyasında kullanıyorsun. Mesela char_battle.cpp açıyorsun, başta #include "config.h" olacak. Yoksa ekliyorsun. Sonra extern unsigned long long yang_max; diyorsun ve değişkeni her yerde kullanabil#include Olayın özeti şu aslında, sabit değer yerine config’e bağlı sistem kuruyorsun. Küçük bir şey gibi ama ileride baya fark yaratıyor. Bir kere alışınca çoğu şeyi bu şekilde yapmaya başlıyorsun zaten.
UL limitini aşmak istiyorsan iş sadece değişkeni büyütmekle bitmiyor. Paketlerin çoğu (DWORD kullananlar dahil) buna bağlı olduğu için hepsini tek tek değiştirmen gerekiyor. Açıkçası pek önermem, gereksiz fazla iş ve o kadar yüksek yang’a çoğu zaman zaten ihtiyaç olmuyor.


