home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-387-Vol-3of3.iso
/
d
/
d-linux.zip
/
dm-dist
/
update.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-03-01
|
4KB
|
176 lines
#include <stdio.h>
#include <time.h>
#include "structs.h"
#define bytemask 0xFF
struct old_char_point_data
{
sh_int mana;
sh_int max_mana; /* Not useable may be erased upon player file renewal */
sh_int hit;
sh_int max_hit; /* Max hit for NPC */
sh_int move;
sh_int max_move; /* Max move for NPC */
byte armor; /* Internal -100..100, external -10..10 AC */
int gold; /* Money carried */
int exp; /* The experience of the player */
sbyte hitroll; /* Any bonus or penalty to the hit roll */
sbyte damroll; /* Any bonus or penalty to the damage roll */
};
struct char_file_old_u
{
byte sex;
byte class;
byte level;
time_t birth; /* Time of birth of character */
int played; /* Number of secs played in total */
ubyte weight;
ubyte height;
char title[80];
sh_int hometown;
char description[240];
bool talks[MAX_TOUNGE];
sh_int load_room; /* Which room to place char in */
struct char_ability_data abilities;
struct old_char_point_data points;
struct char_skill_data skills[MAX_SKILLS];
struct affected_type affected[MAX_AFFECT];
/* specials */
byte spells_to_learn;
int alignment;
time_t last_logon; /* Time (in secs) of last logon */
ubyte act; /* ACT Flags */
/* char data */
char name[20];
char pwd[11];
sh_int apply_saving_throw[5];
int conditions[3];
};
void do_it(FILE *src, FILE *trg);
main(int argc, char **argv)
{
FILE *src, *trg;
if (argc != 3) {
fprintf(stderr, "Usage: %s source target\n", argv[0]);
exit (0);
} else if (!(src = fopen(argv[1], "rb")))
fprintf(stderr, "%s: Could not open.\n", argv[1]);
else if (!(trg = fopen(argv[2], "wb")))
fprintf(stderr, "%s: Could not open.\n", argv[2]);
else
do_it(src, trg);
fclose(src);
fclose(trg);
}
void do_it(FILE *src, FILE *trg)
{
struct char_file_u buf;
struct char_file_old_u oldbuf;
int a,b,c,d, n;
srand((int) time(0));
n=1;
for (;;)
{
fread(&oldbuf, sizeof(oldbuf), 1, src);
if (feof(src))
break;
/* do something */
buf.sex = oldbuf.sex;
buf.class = oldbuf.class;
buf.level = oldbuf.level;
buf.birth = oldbuf.birth; /* Time of birth of character */
buf.played = oldbuf.played; /* Number of secs played in total */
buf.weight = oldbuf.weight;
buf.height = oldbuf.height;
strcpy(buf.title, oldbuf.title);
buf.hometown = oldbuf.hometown;
strcpy(buf.description, oldbuf.description);
buf.talks[0] = oldbuf.talks[0];
buf.talks[1] = oldbuf.talks[1];
buf.talks[2] = oldbuf.talks[2];
buf.load_room = oldbuf.load_room;
buf.abilities = oldbuf.abilities;
buf.points.mana = oldbuf.points.mana;
buf.points.max_mana = oldbuf.points.max_mana;
buf.points.hit = oldbuf.points.hit;
buf.points.max_hit = oldbuf.points.max_hit;
buf.points.move = oldbuf.points.move;
buf.points.max_move = oldbuf.points.max_move;
buf.points.armor = 100;
buf.points.gold = oldbuf.points.gold;
buf.points.exp = oldbuf.points.exp;
buf.points.hitroll = 0;
buf.points.damroll = 0;
for(n=0; n < MAX_SKILLS; n++)
buf.skills[n] = oldbuf.skills[n];
for(n=0; n < MAX_AFFECT; n++)
buf.affected[n] = oldbuf.affected[n];
buf.spells_to_learn = oldbuf.spells_to_learn;
buf.alignment = oldbuf.alignment;
buf.last_logon = oldbuf.last_logon;
buf.act = oldbuf.act;
strcpy(buf.name,oldbuf.name);
strcpy(buf.pwd, oldbuf.pwd);
buf.apply_saving_throw[0] = oldbuf.apply_saving_throw[0];
buf.apply_saving_throw[1] = oldbuf.apply_saving_throw[1];
buf.apply_saving_throw[2] = oldbuf.apply_saving_throw[2];
buf.apply_saving_throw[3] = oldbuf.apply_saving_throw[3];
buf.apply_saving_throw[4] = oldbuf.apply_saving_throw[4];
buf.conditions[0] = oldbuf.conditions[0];
buf.conditions[1] = oldbuf.conditions[1];
buf.conditions[2] = oldbuf.conditions[2];
/* do something else */
fwrite(&buf, sizeof(buf), 1, trg);
}
printf("Size of buf is %d\n\rSize of oldbuf is %d\n\r",
sizeof(buf),
sizeof(oldbuf));
}