feat: removed legacy code
This commit is contained in:
parent
6dc00a542d
commit
859eb3b9d6
53
attrib.c
53
attrib.c
|
@ -1,53 +0,0 @@
|
|||
#include "string.h"
|
||||
#include "stdlib.h"
|
||||
#include "ctype.h"
|
||||
#include "stdio.h"
|
||||
#include "futil.h"
|
||||
|
||||
char* g_attribs=(char*)0;
|
||||
const char** g_attrib_index=(const char**)0;
|
||||
int g_attribs_count=0;
|
||||
int g_attribs_len=0;
|
||||
|
||||
/*
|
||||
* load and index an attributes file
|
||||
*/
|
||||
int load_attrib_file(const char* file) {
|
||||
FILE* stream=fopen(file,"r");
|
||||
g_attribs_len=file_len(stream);
|
||||
g_attribs_count=fcountc(stream,',')+1;
|
||||
g_attribs=calloc(g_attribs_len,sizeof(char)+1);
|
||||
g_attrib_index=calloc(sizeof(char*),g_attribs_count);
|
||||
const char** ind_writer = g_attrib_index;
|
||||
int n='\0';
|
||||
char* writer=g_attribs;
|
||||
*ind_writer=writer;
|
||||
++ind_writer;
|
||||
while((n=fgetc(stream))!=EOF) {
|
||||
char c=(char)n;
|
||||
printf("%c",c);
|
||||
switch(c) {
|
||||
case ',':
|
||||
*writer='\0';
|
||||
if(isspace((char)fpeek(stream)))
|
||||
*ind_writer=writer+2;
|
||||
else
|
||||
*ind_writer=writer+1;
|
||||
++ind_writer;
|
||||
break;
|
||||
case '\t':
|
||||
case '\n':
|
||||
*writer=' ';
|
||||
break;
|
||||
default:
|
||||
*writer=c;
|
||||
break;
|
||||
}
|
||||
++writer;
|
||||
}
|
||||
*writer='\0';
|
||||
for(int i=0;i<g_attribs_count;++i) {
|
||||
printf("%d) %s\n",i+1,g_attrib_index[i]);
|
||||
}
|
||||
return 0;
|
||||
}
|
11
attrib.h
11
attrib.h
|
@ -1,11 +0,0 @@
|
|||
#ifndef _attrib_h
|
||||
#define _attrib_h
|
||||
|
||||
extern char* g_attribs;
|
||||
extern int g_attribs_count;
|
||||
extern int g_attribs_len;
|
||||
|
||||
int load_attribs(const char*);
|
||||
int load_attrib_file(const char*);
|
||||
|
||||
#endif /* _attrib_h */
|
|
@ -1,2 +0,0 @@
|
|||
#!/bin/bash
|
||||
gcc *.c -o dice --std=c99 -g
|
59
dice.c
59
dice.c
|
@ -1,59 +0,0 @@
|
|||
#include "stdlib.h"
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
#include "memory.h"
|
||||
|
||||
int rolld(int d) {
|
||||
return rand() % d + 1;
|
||||
}
|
||||
|
||||
int rollnd(int n, int d, int* i) {
|
||||
int total=0;
|
||||
while(n-->0) {
|
||||
int roll = rolld(d);
|
||||
total += roll;
|
||||
if(i!=(void*)0)
|
||||
*(i++) = roll;
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
int process_dice_format(const char* format,int* num,int* die) {
|
||||
int dummy; // dummy int for if either of the out adresses is 0
|
||||
if(num==(void*)0)num=&dummy;
|
||||
if(die==(void*)0)die=&dummy;
|
||||
char buf[10];
|
||||
memset(buf,0,10); // clear buffer
|
||||
char* bufw=buf;
|
||||
const char* next=format;
|
||||
while(*next!='\0') {
|
||||
if(*next=='d') { // argument is d in <num>d<die> format
|
||||
if(next==format) // if there is no die count given, assume 1
|
||||
*num=1;
|
||||
else
|
||||
*num=atoi(buf); // store buffered string as number
|
||||
memset(buf,0,10); // clear buffer
|
||||
bufw=buf; // reset buffer walker
|
||||
next++; // skip
|
||||
}
|
||||
*bufw=*next; // buffer next character
|
||||
bufw++;next++; // increment walker and next character
|
||||
}
|
||||
*die=atoi(buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void roll_and_print(int n, int d) {
|
||||
int* out_rolls=malloc(sizeof(int)*n);
|
||||
int result=rollnd(n,d,out_rolls);
|
||||
printf(" %d (%dd%d) ",result,n,d);
|
||||
// only print inbetween steps if there are any
|
||||
if(n>1) {
|
||||
for(int i=0;i<n;++i) {
|
||||
printf("%d%s",out_rolls[i],i==n-1?"\n":"+");
|
||||
}
|
||||
} else {
|
||||
printf("\n");
|
||||
}
|
||||
free(out_rolls);
|
||||
}
|
9
dice.h
9
dice.h
|
@ -1,9 +0,0 @@
|
|||
#ifndef _dice_h
|
||||
#define _dice_h
|
||||
|
||||
extern int rolld(int d);
|
||||
extern int rollnd(int n,int d,int* i);
|
||||
extern int process_dice_format(const char* format,int* num,int* die);
|
||||
extern void roll_and_print(int n, int d);
|
||||
|
||||
#endif /* _dice_h */
|
28
flags.c
28
flags.c
|
@ -1,28 +0,0 @@
|
|||
#include "memory.h"
|
||||
#include "ctype.h"
|
||||
#include "dice.h"
|
||||
#include "attrib.h"
|
||||
|
||||
int f_interactive=0;
|
||||
int f_num=0;
|
||||
int f_die=0;
|
||||
int g_argc=0;
|
||||
const char** g_argv=(void*)0;
|
||||
|
||||
int process_arg(int argind) {
|
||||
if(argind>=g_argc)return 0;
|
||||
const char* arg=g_argv[argind];
|
||||
char buf[10];
|
||||
memset(buf,0,10);
|
||||
if(strcmp(arg,"-i")==0) {
|
||||
f_interactive=1;
|
||||
return process_arg(argind+1);
|
||||
} else if(strcmp(arg, "-a")==0) {
|
||||
load_attrib_file(g_argv[argind+1]);
|
||||
return process_arg(argind+2);
|
||||
} else if(isdigit(arg[0])||arg[0]=='d') {
|
||||
process_dice_format(arg,&f_num,&f_die);
|
||||
return process_arg(argind+1);
|
||||
}
|
||||
return 0;
|
||||
}
|
12
flags.h
12
flags.h
|
@ -1,12 +0,0 @@
|
|||
#ifndef _flags_h
|
||||
#define _flags_h
|
||||
|
||||
extern int f_interactive;
|
||||
extern int f_num;
|
||||
extern int f_die;
|
||||
extern int g_argc;
|
||||
extern const char** g_argv;
|
||||
|
||||
extern int process_arg(int argind);
|
||||
|
||||
#endif /* _flags_h */
|
32
futil.c
32
futil.c
|
@ -1,32 +0,0 @@
|
|||
#include "stdlib.h"
|
||||
#include "stdio.h"
|
||||
|
||||
long file_len(FILE* file) {
|
||||
fpos_t pos;
|
||||
fgetpos(file,&pos);
|
||||
fseek(file,0,SEEK_END);
|
||||
long len=ftell(file);
|
||||
fsetpos(file,&pos);
|
||||
return len;
|
||||
}
|
||||
|
||||
long fcountc(FILE* file, char c) {
|
||||
int i = 0;
|
||||
long t = 0;
|
||||
fpos_t strt;
|
||||
fgetpos(file,&strt);
|
||||
while((i=fgetc(file))!=EOF) {
|
||||
if((char)i==c)
|
||||
++t;
|
||||
}
|
||||
fsetpos(file, &strt);
|
||||
return t;
|
||||
}
|
||||
|
||||
int fpeek(FILE* file) {
|
||||
fpos_t p;
|
||||
fgetpos(file,&p);
|
||||
int v = fgetc(file);
|
||||
fsetpos(file,&p);
|
||||
return v;
|
||||
}
|
22
futil.h
22
futil.h
|
@ -1,22 +0,0 @@
|
|||
#ifndef _futils_h
|
||||
#define _futils_h
|
||||
|
||||
#include "stdio.h"
|
||||
|
||||
/*
|
||||
* return the length of a text file
|
||||
*/
|
||||
long file_len(FILE* file);
|
||||
|
||||
/*
|
||||
* count the number of occurences of c in file
|
||||
* starting from the current stream position
|
||||
*/
|
||||
long fcountc(FILE* file, char c);
|
||||
|
||||
/*
|
||||
* peek the next value of file
|
||||
*/
|
||||
int fpeek(FILE* file);
|
||||
|
||||
#endif /* _futils_h */
|
|
@ -1,19 +0,0 @@
|
|||
#include "stdio.h"
|
||||
#include "dice.h"
|
||||
#include "string.h"
|
||||
#include "flags.h"
|
||||
|
||||
int run_interactive() {
|
||||
int running = 1;
|
||||
char buf[24];
|
||||
while(running) {
|
||||
printf("> ");
|
||||
memset(buf,0,10);
|
||||
scanf("%s",buf);
|
||||
if(strcmp(buf,"quit")==0||strcmp(buf,"exit")==0||strcmp(buf,"q")==0) return 0;
|
||||
process_dice_format(buf,&f_num,&f_die);
|
||||
if(f_num!=0&&f_die!=0||buf[0]=='\0')
|
||||
roll_and_print(f_num, f_die);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef _interactive_h
|
||||
#define _interactive_h
|
||||
|
||||
extern int run_interactive();
|
||||
|
||||
#endif /* _interactive_h */
|
19
main.c
19
main.c
|
@ -1,19 +0,0 @@
|
|||
#include "time.h"
|
||||
#include "stdlib.h"
|
||||
#include "dice.h"
|
||||
#include "flags.h"
|
||||
#include "interactive.h"
|
||||
|
||||
int main(int argc,const char* argv[]) {
|
||||
srand(time(NULL));
|
||||
g_argv=argv;
|
||||
g_argc=argc;
|
||||
process_arg(1);
|
||||
// if there are valid dice to roll
|
||||
if(f_die>0&&f_num>0) {
|
||||
roll_and_print(f_num,f_die);
|
||||
}
|
||||
if(f_interactive==1||argc==1) {
|
||||
return run_interactive();
|
||||
}
|
||||
}
|
8
pc.c
8
pc.c
|
@ -1,8 +0,0 @@
|
|||
#include "pc.h"
|
||||
#include "memory.h"
|
||||
|
||||
int new_character(pc_t* pc, const char* name) {
|
||||
memset(pc,0,sizeof(pc_t));
|
||||
strncpy(pc->name,name,64);
|
||||
return 0;
|
||||
}
|
13
pc.h
13
pc.h
|
@ -1,13 +0,0 @@
|
|||
#ifndef _pc_h
|
||||
#define _pc_h
|
||||
|
||||
typedef struct pc_t {
|
||||
char name[64];
|
||||
int dexterity,strength,constitution,intelligence,wisdom;
|
||||
const char* spells[64];
|
||||
const char* traits[64];
|
||||
} pc_t;
|
||||
|
||||
int new_character(pc_t* pc, const char* name);
|
||||
|
||||
#endif /* _pc_h */
|
Loading…
Reference in a new issue