ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/map.c
(Generate patch)

Comparing deliantra/server/common/map.c (file contents):
Revision 1.7 by root, Tue Mar 7 13:44:42 2006 UTC vs.
Revision 1.10 by root, Sat Apr 1 15:39:58 2006 UTC

1/* 1/*
2 * static char *rcsid_map_c = 2 * static char *rcsid_map_c =
3 * "$Id: map.c,v 1.7 2006/03/07 13:44:42 root Exp $"; 3 * "$Id: map.c,v 1.10 2006/04/01 15:39:58 root Exp $";
4 */ 4 */
5 5
6/* 6/*
7 CrossFire, A Multiplayer game for X-windows 7 CrossFire, A Multiplayer game for X-windows
8 8
590 * and we only save the head of multi part objects - this is needed 590 * and we only save the head of multi part objects - this is needed
591 * in order to do map tiling properly. 591 * in order to do map tiling properly.
592 */ 592 */
593void save_objects (mapstruct *m, FILE *fp, FILE *fp2, int flag) { 593void save_objects (mapstruct *m, FILE *fp, FILE *fp2, int flag) {
594 int i, j = 0,unique=0; 594 int i, j = 0,unique=0;
595 object *op, *otmp; 595 object *op;
596 /* first pass - save one-part objects */ 596 /* first pass - save one-part objects */
597 for(i = 0; i < MAP_WIDTH(m); i++) 597 for(i = 0; i < MAP_WIDTH(m); i++)
598 for (j = 0; j < MAP_HEIGHT(m); j++) { 598 for (j = 0; j < MAP_HEIGHT(m); j++) {
599 unique=0; 599 unique=0;
600 for(op = get_map_ob (m, i, j); op; op = otmp) { 600 for(op = get_map_ob (m, i, j); op; op = op->above) {
601 otmp = op->above;
602
603 if (QUERY_FLAG(op,FLAG_IS_FLOOR) && QUERY_FLAG(op, FLAG_UNIQUE)) 601 if (QUERY_FLAG(op,FLAG_IS_FLOOR) && QUERY_FLAG(op, FLAG_UNIQUE))
604 unique=1; 602 unique=1;
605 603
606 if(op->type == PLAYER) { 604 if(op->type == PLAYER) {
607 LOG(llevDebug, "Player on map that is being saved\n"); 605 LOG(llevDebug, "Player on map that is being saved\n");
679 677
680 if(m->spaces==NULL) 678 if(m->spaces==NULL)
681 fatal(OUT_OF_MEMORY); 679 fatal(OUT_OF_MEMORY);
682} 680}
683 681
684/* Creatures and returns a map of the specific size. Used 682/* Create and returns a map of the specific size. Used
685 * in random map code and the editor. 683 * in random map code and the editor.
686 */ 684 */
687mapstruct *get_empty_map(int sizex, int sizey) { 685mapstruct *get_empty_map(int sizex, int sizey) {
688 mapstruct *m = get_linked_map(); 686 mapstruct *m = get_linked_map();
689 m->width = sizex; 687 m->width = sizex;
1150 *****************************************************************************/ 1148 *****************************************************************************/
1151 1149
1152/* This goes through map 'm' and removed any unique items on the map. */ 1150/* This goes through map 'm' and removed any unique items on the map. */
1153static void delete_unique_items(mapstruct *m) 1151static void delete_unique_items(mapstruct *m)
1154{ 1152{
1155 int i,j,unique=0; 1153 int i,j,unique;
1156 object *op, *next; 1154 object *op, *next;
1157 1155
1158 for(i=0; i<MAP_WIDTH(m); i++) 1156 for(i=0; i<MAP_WIDTH(m); i++)
1159 for(j=0; j<MAP_HEIGHT(m); j++) { 1157 for(j=0; j<MAP_HEIGHT(m); j++) {
1160 unique=0; 1158 unique=0;
1703 return 0; 1701 return 0;
1704 } 1702 }
1705 1703
1706 /* inform all players on the map */ 1704 /* inform all players on the map */
1707 if (change>0) 1705 if (change>0)
1708 new_info_map(NDI_BLACK, m,"It becomes darker."); 1706 new_info_map(NDI_BLACK|NDI_UNIQUE, m,"It becomes darker.");
1709 else 1707 else
1710 new_info_map(NDI_BLACK, m,"It becomes brighter."); 1708 new_info_map(NDI_BLACK|NDI_UNIQUE, m,"It becomes brighter.");
1711 1709
1712 /* Do extra checking. since m->darkness is a unsigned value, 1710 /* Do extra checking. since m->darkness is a unsigned value,
1713 * we need to be extra careful about negative values. 1711 * we need to be extra careful about negative values.
1714 * In general, the checks below are only needed if change 1712 * In general, the checks below are only needed if change
1715 * is not +/-1 1713 * is not +/-1

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines