magus-kargen/kargen.c

234 lines
6.0 KiB
C
Raw Permalink Normal View History

#include <gtk/gtk.h>
#include <math.h>
#include <string.h>
#include "config.h"
#define KEP_ATTACH(o, x, y) gtk_table_attach_defaults(GTK_TABLE(kepesseg_tabla), o, x, x + 1, y, y + 1)
#define ATTACH(o, x, y) gtk_table_attach_defaults(GTK_TABLE(tabla), o, x, x + 1, y, y + 1)
#define HE_ATTACH(o, x, y) gtk_table_attach_defaults(GTK_TABLE(harcertekek_tabla), o, x, x + 1, y, y + 1)
#define EE_ATTACH(o, x, y) gtk_table_attach_defaults(GTK_TABLE(eletero_tabla), o, x, x + 1, y, y + 1)
#define MA_ATTACH(o, x, y) gtk_table_attach_defaults(GTK_TABLE(magia_tabla), o, x, x + 1, y, y + 1)
#define ADJ gtk_adjustment_new(3.0, 3.0, 100.0, 1.0, 5.0, 1.0)
#define HE_ADJ gtk_adjustment_new(0.0, 0.0, 100.0, 1.0, 5.0, 1.0)
#define NEW_SPIN gtk_spin_button_new(GTK_ADJUSTMENT(ADJ), 1, 0)
#define NEW_HE_SPIN gtk_spin_button_new(GTK_ADJUSTMENT(HE_ADJ), 1, 0)
#define SIGNAL(x) gtk_signal_connect(GTK_OBJECT(x), "output", GTK_SIGNAL_FUNC(spin_valtozott), NULL)
GtkWidget *kap_ertek,
*ero_spin,
*gyorsasag_spin,
*ugyesseg_spin,
*allokepesseg_spin,
*egeszseg_spin,
*szepseg_spin,
*intelligencia_spin,
*akaratero_spin,
*asztral_spin,
*erzekeles_spin,
*ke_spin,
*te_spin,
*ve_spin,
*ce_spin,
*epalap_spin,
*fpalap_spin,
*mpalap_spin,
*ppalap_spin;
gint aktiv_kap;
gint convert_string(char *from_string, char **to_string);
void update_kap();
void
main_window_destroy(GtkWidget *window, gpointer data)
{
gtk_main_quit();
}
void
set_kap_ertek()
{
gchar *ertek;
int len;
if (aktiv_kap < 0)
{
convert_string("<EFBFBD>rv<EFBFBD>nytelen karakter!", &buf);
gtk_entry_set_text(GTK_ENTRY(kap_ertek), buf);
return;
}
if (aktiv_kap == 0)
{
ertek = "0";
}
else
{
len = (int)log10((double)aktiv_kap) + 2;
ertek = g_malloc(len);
memset(ertek, 0, len);
sprintf(ertek, "%d", aktiv_kap);
}
gtk_entry_set_text(GTK_ENTRY(kap_ertek), (const gchar *)ertek);
}
gboolean
spin_valtozott(GtkSpinButton *melyik, gpointer arg1, gpointer data)
{
update_kap();
return FALSE;
}
int
main(int argc, char **argv)
{
GtkWidget *main_window,
*kepesseg_tabla,
*kepesseg_keret,
*tabla,
*kap_box,
*harcertekek_keret,
*harcertekek_tabla,
*eletero_keret,
*eletero_tabla,
*magia_keret,
*magia_tabla;
aktiv_kap = KEZDO_KAP;
gtk_init(&argc, &argv);
main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(main_window), "destroy", GTK_SIGNAL_FUNC(main_window_destroy), NULL);
tabla = gtk_table_new(4, 2, FALSE);
kepesseg_tabla = gtk_table_new(10, 2, FALSE);
harcertekek_tabla = gtk_table_new(4, 2, FALSE);
eletero_tabla = gtk_table_new(2, 2, FALSE);
magia_tabla = gtk_table_new(2, 2, FALSE);
kap_box = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(kap_box), gtk_label_new("KAP:"), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(kap_box), (kap_ertek = gtk_entry_new()), FALSE, FALSE, 0);
gtk_entry_set_editable(GTK_ENTRY(kap_ertek), FALSE);
CONVERT("Er<EFBFBD>:");
KEP_ATTACH(gtk_label_new(buf), 0, 1);
KEP_ATTACH((ero_spin = NEW_SPIN), 1, 1);
SIGNAL(ero_spin);
CONVERT("Gyorsas<EFBFBD>g:");
KEP_ATTACH(gtk_label_new(buf), 0, 2);
KEP_ATTACH((gyorsasag_spin = NEW_SPIN), 1, 2);
SIGNAL(gyorsasag_spin);
CONVERT("<EFBFBD>gyess<EFBFBD>g:");
KEP_ATTACH(gtk_label_new(buf), 0, 3);
KEP_ATTACH((ugyesseg_spin = NEW_SPIN), 1, 3);
SIGNAL(ugyesseg_spin);
CONVERT("<EFBFBD>ll<EFBFBD>k<EFBFBD>pess<EFBFBD>g:");
KEP_ATTACH(gtk_label_new(buf), 0, 4);
KEP_ATTACH((allokepesseg_spin = NEW_SPIN), 1, 4);
SIGNAL(allokepesseg_spin);
CONVERT("Eg<EFBFBD>szs<EFBFBD>g:");
KEP_ATTACH(gtk_label_new(buf), 0, 5);
KEP_ATTACH((egeszseg_spin = NEW_SPIN), 1, 5);
SIGNAL(egeszseg_spin);
CONVERT("Sz<EFBFBD>ps<EFBFBD>g:");
KEP_ATTACH(gtk_label_new(buf), 0, 6);
KEP_ATTACH((szepseg_spin = NEW_SPIN), 1, 6);
SIGNAL(szepseg_spin);
KEP_ATTACH(gtk_label_new("Intelligencia:"), 0, 7);
KEP_ATTACH((intelligencia_spin = NEW_SPIN), 1, 7);
SIGNAL(intelligencia_spin);
CONVERT("Akarater<EFBFBD>:");
KEP_ATTACH(gtk_label_new(buf), 0, 8);
KEP_ATTACH((akaratero_spin = NEW_SPIN), 1, 8);
SIGNAL(akaratero_spin);
CONVERT("Asztr<EFBFBD>l:");
KEP_ATTACH(gtk_label_new(buf), 0, 9);
KEP_ATTACH((asztral_spin = NEW_SPIN), 1, 9);
SIGNAL(asztral_spin);
CONVERT("<EFBFBD>rz<EFBFBD>kel<EFBFBD>s:");
KEP_ATTACH(gtk_label_new(buf), 0, 10);
KEP_ATTACH((erzekeles_spin = NEW_SPIN), 1, 10);
SIGNAL(erzekeles_spin);
CONVERT("K<EFBFBD>:");
HE_ATTACH(gtk_label_new(buf), 0, 0);
HE_ATTACH((ke_spin = NEW_HE_SPIN), 1, 0);
SIGNAL(ke_spin);
CONVERT("T<EFBFBD>:");
HE_ATTACH(gtk_label_new(buf), 0, 1);
HE_ATTACH((te_spin = NEW_HE_SPIN), 1, 1);
SIGNAL(te_spin);
CONVERT("V<EFBFBD>:");
HE_ATTACH(gtk_label_new(buf), 0, 2);
HE_ATTACH((ve_spin = NEW_HE_SPIN), 1, 2);
SIGNAL(ve_spin);
CONVERT("C<EFBFBD>:");
HE_ATTACH(gtk_label_new(buf), 0, 3);
HE_ATTACH((ce_spin = NEW_HE_SPIN), 1, 3);
SIGNAL(ce_spin);
CONVERT("<EFBFBD>p alap:");
EE_ATTACH(gtk_label_new(buf), 0, 0);
EE_ATTACH((epalap_spin = NEW_HE_SPIN), 1, 0);
SIGNAL(epalap_spin);
EE_ATTACH(gtk_label_new("Fp alap:"), 0, 1);
EE_ATTACH((fpalap_spin = NEW_HE_SPIN), 1, 1);
SIGNAL(fpalap_spin);
MA_ATTACH(gtk_label_new("Mp alap:"), 0, 0);
MA_ATTACH((mpalap_spin = NEW_HE_SPIN), 1, 0);
SIGNAL(mpalap_spin);
MA_ATTACH(gtk_label_new("Pszi alap:"), 0, 1);
MA_ATTACH((ppalap_spin = NEW_HE_SPIN), 1, 1);
SIGNAL(ppalap_spin);
CONVERT("K<EFBFBD>pess<EFBFBD>gek");
kepesseg_keret = gtk_frame_new((const gchar *)buf);
CONVERT("Harc<EFBFBD>rt<EFBFBD>kek");
harcertekek_keret = gtk_frame_new((const gchar *)buf);
CONVERT("<EFBFBD>leter<EFBFBD>");
eletero_keret = gtk_frame_new((const gchar *)buf);
CONVERT("M<EFBFBD>gia, pszi");
magia_keret = gtk_frame_new((const gchar *)buf);
ATTACH(kap_box, 0, 0);
gtk_table_attach_defaults(GTK_TABLE(tabla), kepesseg_keret, 0, 1, 1, 4);
ATTACH(harcertekek_keret, 1, 1);
ATTACH(eletero_keret, 1, 2);
ATTACH(magia_keret, 1, 3);
gtk_container_add(GTK_CONTAINER(harcertekek_keret), harcertekek_tabla);
gtk_container_add(GTK_CONTAINER(kepesseg_keret), kepesseg_tabla);
gtk_container_add(GTK_CONTAINER(eletero_keret), eletero_tabla);
gtk_container_add(GTK_CONTAINER(magia_keret), magia_tabla);
gtk_container_add(GTK_CONTAINER(main_window), tabla);
gtk_widget_show_all(main_window);
set_kap_ertek();
gtk_main();
return 0;
}