|
|
1.1 ! root 1: /* $Header: object.c,v 7.0 86/10/08 15:12:55 lwall Exp $ */ ! 2: ! 3: /* $Log: object.c,v $ ! 4: * Revision 7.0 86/10/08 15:12:55 lwall ! 5: * Split into separate files. Added amoebas and pirates. ! 6: * ! 7: */ ! 8: ! 9: #include "EXTERN.h" ! 10: #include "warp.h" ! 11: #include "INTERN.h" ! 12: #include "object.h" ! 13: ! 14: void ! 15: object_init() ! 16: { ! 17: ; ! 18: } ! 19: ! 20: OBJECT * ! 21: make_object(typ, img, py, px, vy, vx, energ, mas, where) ! 22: char typ; ! 23: char img; ! 24: int px, py, vx, vy; ! 25: long energ, mas; ! 26: OBJECT *where; ! 27: { ! 28: Reg1 OBJECT *obj; ! 29: ! 30: if (free_root.next == &free_root) ! 31: #ifndef lint ! 32: obj = (OBJECT *) malloc(sizeof root); ! 33: #else ! 34: obj = Null(OBJECT*); ! 35: #endif ! 36: else { ! 37: obj = free_root.next; ! 38: free_root.next = obj->next; ! 39: obj->next->prev = &free_root; ! 40: } ! 41: obj->type = typ; ! 42: obj->image = img; ! 43: obj->next = where; ! 44: obj->prev = where->prev; ! 45: where->prev = obj; ! 46: obj->prev->next = obj; ! 47: obj->velx = vx; ! 48: obj->vely = vy; ! 49: obj->contend = 0; ! 50: obj->strategy = 0; ! 51: obj->flags = 0; ! 52: obj->posx = px; ! 53: obj->posy = py; ! 54: if (typ != Torp && typ != Web) { ! 55: occupant[py][px] = obj; ! 56: } ! 57: obj->energy = energ; ! 58: obj->mass = mas; ! 59: return(obj); ! 60: } ! 61: ! 62: void ! 63: unmake_object(curobj) ! 64: Reg1 OBJECT *curobj; ! 65: { ! 66: curobj->prev->next = curobj->next; ! 67: curobj->next->prev = curobj->prev; ! 68: if (curobj == movers) { ! 69: movers = curobj->next; ! 70: } ! 71: free_object(curobj); ! 72: } ! 73: ! 74: void ! 75: free_object(curobj) ! 76: Reg1 OBJECT *curobj; ! 77: { ! 78: curobj->next = free_root.next; ! 79: curobj->prev = &free_root; ! 80: free_root.next->prev = curobj; ! 81: free_root.next = curobj; ! 82: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.