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: }