ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/socket/request.C
(Generate patch)

Comparing deliantra/server/socket/request.C (file contents):
Revision 1.90 by root, Fri Apr 27 00:49:58 2007 UTC vs.
Revision 1.98 by root, Fri May 18 15:05:09 2007 UTC

1/* 1/*
2 * CrossFire, A Multiplayer game for X-windows 2 * CrossFire, A Multiplayer game
3 * 3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team 4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
5 * Copyright (C) 2001 Mark Wedel 5 * Copyright (C) 2001 Mark Wedel
6 * Copyright (C) 1992 Frank Tore Johansen 6 * Copyright (C) 1992 Frank Tore Johansen
7 * 7 *
726send_query (client *ns, uint8 flags, const char *text) 726send_query (client *ns, uint8 flags, const char *text)
727{ 727{
728 ns->send_packet_printf ("query %d %s", flags, text ? text : ""); 728 ns->send_packet_printf ("query %d %s", flags, text ? text : "");
729} 729}
730 730
731/**
732 * Get player's current range attack in obuf.
733 */
734static void
735rangetostring (player *pl, char *obuf)
736{
737 dynbuf_text buf;
738
739 if (pl->ranged_ob)
740 buf << " Range" << (pl->ob->current_weapon == pl->ranged_ob ? "*" : "") << ": " << pl->ranged_ob->name;
741
742 if (pl->combat_ob)
743 buf << " Combat" << (pl->ob->current_weapon == pl->combat_ob ? "*" : "") << ": " << pl->combat_ob->name;
744
745 //TODO: maybe golem should become the current_weapon, quite simply?
746 if (pl->golem)
747 buf << " Golem*: " << pl->golem->name;
748
749 buf.linearise (obuf);
750 obuf [buf.size ()] = 0;
751}
752
731#define AddIfInt64(Old,New,Type) if (Old != New) {\ 753#define AddIfInt64(Old,New,Type) if (Old != New) {\
732 Old = New; \ 754 Old = New; \
733 sl << uint8 (Type) << uint64 (New); \ 755 sl << uint8 (Type) << uint64 (New); \
734 } 756 }
735 757
741#define AddIfShort(Old,New,Type) if (Old != New) {\ 763#define AddIfShort(Old,New,Type) if (Old != New) {\
742 Old = New; \ 764 Old = New; \
743 sl << uint8 (Type) << uint16 (New); \ 765 sl << uint8 (Type) << uint16 (New); \
744 } 766 }
745 767
746#define AddIfFloat(Old,New,Type) if (Old != New) {\ 768#define AddIfFloat(Old,New,Type,mult) if (Old != New) {\
747 Old = New; \ 769 Old = New; \
748 sl << uint8 (Type) << uint32 (New*FLOAT_MULTI); \ 770 sl << uint8 (Type) << uint32 (New*FLOAT_MULTI*mult); \
749 } 771 }
750 772
751#define AddIfString(Old,New,Type) if (Old == NULL || strcmp(Old,New)) {\ 773#define AddIfString(Old,New,Type) if (Old == NULL || strcmp(Old,New)) {\
752 free(Old); Old = strdup (New);\ 774 free(Old); Old = strdup (New);\
753 sl << uint8 (Type) << data8 (New); \ 775 sl << uint8 (Type) << data8 (New); \
806 AddIfInt64 (ns->last_stats.exp, ob->stats.exp, CS_STAT_EXP64); 828 AddIfInt64 (ns->last_stats.exp, ob->stats.exp, CS_STAT_EXP64);
807 AddIfShort (ns->last_level, ob->level, CS_STAT_LEVEL); 829 AddIfShort (ns->last_level, ob->level, CS_STAT_LEVEL);
808 AddIfShort (ns->last_stats.wc, ob->stats.wc, CS_STAT_WC); 830 AddIfShort (ns->last_stats.wc, ob->stats.wc, CS_STAT_WC);
809 AddIfShort (ns->last_stats.ac, ob->stats.ac, CS_STAT_AC); 831 AddIfShort (ns->last_stats.ac, ob->stats.ac, CS_STAT_AC);
810 AddIfShort (ns->last_stats.dam, ob->stats.dam, CS_STAT_DAM); 832 AddIfShort (ns->last_stats.dam, ob->stats.dam, CS_STAT_DAM);
811 AddIfFloat (ns->last_speed, ob->speed, CS_STAT_SPEED); 833 AddIfFloat (ns->last_speed, ob->speed, CS_STAT_SPEED, 1.f/TICK);
812 AddIfShort (ns->last_stats.food, ob->stats.food, CS_STAT_FOOD); 834 AddIfShort (ns->last_stats.food, ob->stats.food, CS_STAT_FOOD);
813 AddIfFloat (ns->last_weapon_sp, pl->weapon_sp, CS_STAT_WEAP_SP); 835 AddIfFloat (ns->last_weapon_sp, pl->weapon_sp, CS_STAT_WEAP_SP, 1.f/TICK);
814 AddIfInt (ns->last_weight_limit, weight_limit[ob->stats.Str], CS_STAT_WEIGHT_LIM); 836 AddIfInt (ns->last_weight_limit, weight_limit[ob->stats.Str], CS_STAT_WEIGHT_LIM);
815 837
816 flags = 0; 838 flags = 0;
817 839
818 if (pl->fire_on) 840 if (pl->fire_on)
840 AddIfInt (ns->last_path_attuned, ob->path_attuned, CS_STAT_SPELL_ATTUNE); 862 AddIfInt (ns->last_path_attuned, ob->path_attuned, CS_STAT_SPELL_ATTUNE);
841 AddIfInt (ns->last_path_repelled, ob->path_repelled, CS_STAT_SPELL_REPEL); 863 AddIfInt (ns->last_path_repelled, ob->path_repelled, CS_STAT_SPELL_REPEL);
842 AddIfInt (ns->last_path_denied, ob->path_denied, CS_STAT_SPELL_DENY); 864 AddIfInt (ns->last_path_denied, ob->path_denied, CS_STAT_SPELL_DENY);
843 } 865 }
844 866
845 rangetostring (ob, buf); /* we want use the new fire & run system in new client */ 867 rangetostring (pl, buf); /* we want use the new fire & run system in new client */
846 AddIfString (ns->stats.range, buf, CS_STAT_RANGE); 868 AddIfString (ns->stats.range, buf, CS_STAT_RANGE);
847 set_title (ob, buf); 869 set_title (ob, buf);
848 AddIfString (ns->stats.title, buf, CS_STAT_TITLE); 870 AddIfString (ns->stats.title, buf, CS_STAT_TITLE);
849 871
850 /* Only send it away if we have some actual data */ 872 /* Only send it away if we have some actual data */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines