[CF-Devel] autopickup GTK client patch

Nils Lohner lohner at debian.org
Fri Aug 3 08:27:31 CDT 2001


This is part 1 of the patch.  It adds the options to the actions menu in
the GTK client.  For more info, see the second mail.

Nils.



-------------- next part --------------
--- crossfire-client-1.0.0/gx11.c	Mon May 14 00:03:07 2001
+++ crossfire-client-1.0.0.new/gx11.c	Fri Aug  3 14:44:53 2001
@@ -4774,6 +4774,24 @@
 
 
 /* Various routines for setting modes by menu choices. */
+void new_menu_pickup(GtkWidget *button, int val)
+{
+  static unsigned int pmode=0;
+  char modestr[128];
+
+  /* widget is GtkCheckMenuItem */
+  if(GTK_CHECK_MENU_ITEM (button)->active) pmode=pmode|val;
+  else pmode=pmode&~val;
+
+#if 0
+  fprintf(stderr,"val=0x%8x\n",val);
+  fprintf(stderr,"mode=0x%8x\n",pmode);
+#endif
+
+  sprintf(modestr,"pickup %u",pmode);
+  send_command(modestr, -1, 0);
+}
+
 
 void menu_pickup0 () {
   pickup_mode = 0;
@@ -4879,6 +4897,8 @@
   GtkWidget *filemenu;
   GtkWidget *actionmenu;
   GtkWidget *pickupmenu;
+  GtkWidget *newpickupmenu;
+  GtkWidget *ratiopickupmenu;
   GtkWidget *clientmenu;
   GtkWidget *helpmenu;
   GtkWidget *menu_bar;
@@ -4889,7 +4909,12 @@
   GtkWidget *root_clientmenu;
   GtkWidget *menu_items;
   GtkWidget *pickup_menu_item;
+  GtkWidget *newpickup_menu_item;
+  GtkWidget *ratiopickup_menu_item;
   GSList *pickupgroup;
+  GSList *ratiopickupgroup;
+  int i;
+  char menustring[128];
 
 
   /* Init the menu-widget, and remember -- never
@@ -5032,6 +5057,10 @@
 			    GTK_SIGNAL_FUNC(menu_apply), NULL);*/
   gtk_widget_show(pickup_menu_item);
 
+  newpickup_menu_item = gtk_menu_item_new_with_label("NEWPickup");
+  gtk_menu_append(GTK_MENU (actionmenu), newpickup_menu_item);
+  gtk_widget_show(newpickup_menu_item);
+
   menu_items = gtk_menu_item_new_with_label("Search");
   gtk_menu_append(GTK_MENU (actionmenu), menu_items);   
   gtk_signal_connect_object(GTK_OBJECT(menu_items), "activate",
@@ -5143,8 +5172,230 @@
   
   gtk_widget_show(sub_pickupmenu);*/
   gtk_menu_item_set_submenu(GTK_MENU_ITEM (pickup_menu_item), pickupmenu);
+/* ENDPICKUP */
+
+/* --------------------------------------------------------------------- */ 
+/* --------------------------------------------------------------------- */ 
+/* --------------------------------------------------------------------- */ 
+/* --------------------------------------------------------------------- */ 
+/* --------------------------------------------------------------------- */ 
+
+
+  /* copy from server: include/define.h */
+#define PU_NOTHING              0x00000000
+
+#define PU_DEBUG                0x10000000
+#define PU_INHIBIT              0x20000000
+#define PU_STOP                 0x40000000
+#define PU_NEWMODE              0x80000000
+
+#define PU_RATIO                0x0000000F
+
+#define PU_FOOD                 0x00000010
+#define PU_DRINK                0x00000020
+#define PU_VALUABLES            0x00000040
+#define PU_BOW                  0x00000080
+
+#define PU_ARROW                0x00000100
+#define PU_HELMET               0x00000200
+#define PU_SHIELD               0x00000400
+#define PU_ARMOUR               0x00000800
+
+#define PU_BOOTS                0x00001000
+#define PU_GLOVES               0x00002000
+#define PU_CLOAK                0x00004000
+#define PU_KEY                  0x00008000
+
+#define PU_MISSILEWEAPON        0x00010000
+#define PU_ALLWEAPON            0x00020000
+#define PU_MAGICAL              0x00040000
+#define PU_POTION               0x00080000
+
+  newpickupmenu = gtk_menu_new();
+  
+#ifdef GTK_HAVE_FEATURES_1_1_12
+  menu_items = gtk_tearoff_menu_item_new ();
+  gtk_menu_append (GTK_MENU (newpickupmenu), menu_items);
+  gtk_widget_show (menu_items);
+#endif
+
+  menu_items = gtk_check_menu_item_new_with_label("Enable NEW autopickup");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_NEWMODE);
+  gtk_widget_show(menu_items);
+
+  menu_items = gtk_check_menu_item_new_with_label("Inhibit autopickup");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_INHIBIT);
+  gtk_widget_show(menu_items);
+
+  menu_items = gtk_check_menu_item_new_with_label("Stop before pickup");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_STOP);
+  gtk_widget_show(menu_items);
+
+  menu_items = gtk_check_menu_item_new_with_label("Debug autopickup");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_DEBUG);
+  gtk_widget_show(menu_items);
+
+
+  /* the ratio pickup submenu */
+  ratiopickupmenu = gtk_menu_new();
+  
+#ifdef GTK_HAVE_FEATURES_1_1_12
+  menu_items = gtk_tearoff_menu_item_new ();
+  gtk_menu_append (GTK_MENU (ratiopickupmenu), menu_items);
+  gtk_widget_show (menu_items);
+#endif
+
+  ratiopickupgroup=NULL;
+
+  menu_items = gtk_check_menu_item_new_with_label("Ratio Pickup");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  ratiopickup_menu_item = gtk_menu_item_new_with_label("Weight/Value Ratio");
+  gtk_menu_append(GTK_MENU (newpickupmenu), ratiopickup_menu_item);
+  gtk_widget_show(ratiopickup_menu_item);
+
+  menu_items = gtk_radio_menu_item_new_with_label(pickupgroup, "Pick up all magic items.");
+  pickupgroup = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_items));
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (pickupmenu), menu_items);   
+  gtk_signal_connect_object(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(menu_pickup6), NULL);
+  gtk_widget_show(menu_items);
+
+  for(i=0;i<16;i++)
+  {
+    if(i==0) sprintf(menustring,"Ratio pickup OFF");
+    else sprintf(menustring,"Ratio >= %d",i*5);
+    menu_items = gtk_radio_menu_item_new_with_label(ratiopickupgroup, menustring);
+    ratiopickupgroup = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_items));
+    gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+    gtk_menu_append(GTK_MENU (ratiopickupmenu), menu_items);   
+    gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+	GTK_SIGNAL_FUNC(new_menu_pickup), i);
+    gtk_widget_show(menu_items);
+  }
+  gtk_menu_item_set_submenu(GTK_MENU_ITEM (ratiopickup_menu_item), ratiopickupmenu);
+
+
+  /* continue with the rest of the stuff... */
+
+  menu_items = gtk_check_menu_item_new_with_label("Food");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_FOOD);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Drinks");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_DRINK);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Valuables (Money, Gems)");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_VALUABLES);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Bows");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_BOW);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Arrows");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_ARROW);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Helmets");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_HELMET);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Shields");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_SHIELD);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Armour");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_ARMOUR);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Boots");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_BOOTS);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Gloves");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_GLOVES);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Cloaks");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_CLOAK);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Keys");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_KEY);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Missile Weapons");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_MISSILEWEAPON);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("All weapons");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_ALLWEAPON);
+  gtk_widget_show(menu_items);
+  menu_items = gtk_check_menu_item_new_with_label("Magical Items");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_MAGICAL);
+  gtk_widget_show(menu_items);
+
+  menu_items = gtk_check_menu_item_new_with_label("Potions");
+  gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menu_items), TRUE);
+  gtk_menu_append(GTK_MENU (newpickupmenu), menu_items);   
+  gtk_signal_connect(GTK_OBJECT(menu_items), "activate",
+			    GTK_SIGNAL_FUNC(new_menu_pickup), PU_POTION);
+  gtk_widget_show(menu_items);
+
+
+  gtk_menu_item_set_submenu(GTK_MENU_ITEM (newpickup_menu_item), newpickupmenu);
+
+/* --------------------------------------------------------------------- */ 
+/* --------------------------------------------------------------------- */ 
+/* --------------------------------------------------------------------- */ 
+/* --------------------------------------------------------------------- */ 
 
- 
   /*Do the helpmenu */
   helpmenu = gtk_menu_new();
   
    
    


More information about the crossfire mailing list