static Pos player_pos() { Pos p; p.x = get_var_int("gangx") - 1; // game seems to use 1-based x but 0-based y? p.y = get_var_int("gangy"); return p; }
/* Dump status, local data etc. */ static void conn_dump(void) { const char *tmp; const AtmAddr_t *addr; Debug_unit(&conn_unit, "Dumping unit"); Debug_unit(&conn_unit, "Parameters:"); addr = get_var_addr(&conn_unit, "S1"); if (addr != NULL) { Debug_unit(&conn_unit, "S1:"); dump_atmaddr(addr); } else { Debug_unit(&conn_unit, "S1: not set"); } tmp = get_var_str(&conn_unit, "S2"); if (tmp != NULL) { Debug_unit(&conn_unit, "S2: %s", tmp); } else { Debug_unit(&conn_unit, "S2: not set", tmp); } Debug_unit(&conn_unit, "S3: %d", get_var_int(&conn_unit, "S3")); Debug_unit(&conn_unit, "S4: %d", get_var_int(&conn_unit, "S4")); Debug_unit(&conn_unit, "S5: %d", get_var_int(&conn_unit, "S5")); addr = get_var_addr(&conn_unit, "S6"); if (addr != NULL) { Debug_unit(&conn_unit, "S6:"); dump_atmaddr(addr); } else { Debug_unit(&conn_unit, "S6: not set"); } dump_conn(NULL); }
static int proper_request() { if (control_packet != NULL && /* Target address is our address */ /* FI[S_ATM] == SV[S_ATM] */ /* memcmp((char *) &control_packet->target_addr, (const char *) get_var_addr(&conn_unit,"S1"), sizeof(AtmAddr_t)) == 0 && */ /* Lan type is unspecified or same as configured to this server */ /* FI[LAN Type] == "Unspecified" or FI[LAN Type] == S2 */ (control_packet->lan_type == LE_LAN_TYPE_UNSPECIFIED || strcmp(get_var_str(&conn_unit,"S2"), ((control_packet->lan_type == LE_LAN_TYPE_802_3)?"802.3": (control_packet->lan_type == LE_LAN_TYPE_802_5)?"802.5":"unspecified")) == 0) && /* Max frame size is unspecified or FI[MAX MTU] >= S3 */ (control_packet->max_frame == LE_MAX_FRAME_UNSPECIFIED || get_var_int(&conn_unit, "S3") <= get_max_frame(control_packet->max_frame)) /* TOADD: check for entry in REG-DB */ ) { return 1; } return 0; }
static void conn_main(void) { const AtmAddr_t *addr; int main_conn; const char *str; int i; addr = get_var_addr(&conn_unit, "S1"); if (addr == NULL) { dump_printf(EL_ERROR, "S1 (LES Address) must be specified"); event_put(&conn_unit, CE_EXIT, NULL); } else { str = get_var_str(&conn_unit,"S2"); if (str == NULL) { set_var_str(&conn_unit, "S2", S2_default); } i = get_var_int(&conn_unit,"S3"); if (i == 0) { set_var_int(&conn_unit,"S3", S3_default); } i = get_var_int(&conn_unit,"S4"); if (i == 0) { set_var_int(&conn_unit,"S4", S4_default); } i = get_var_int(&conn_unit,"S5"); if (i == 0) { set_var_int(&conn_unit,"S5", S5_default); } addr = get_var_addr(&conn_unit, "S6"); if (addr == NULL) { dump_printf(EL_ERROR, "S6 (BUS Address) must be specified"); event_put(&conn_unit, CE_EXIT, NULL); } else { main_conn = atm_create_socket(CONTROL_DIRECT, get_var_addr(&conn_unit, "S1")); if (main_conn >= 0) { (void)conn_add(CT_MAIN, main_conn,0); } } } }
static HRESULT WINAPI folders_get_Item(ITaskFolderCollection *iface, VARIANT index, ITaskFolder **folder) { TaskFolderCollection *folders = impl_from_ITaskFolderCollection(iface); LONG idx; TRACE("%p,%s,%p\n", iface, debugstr_variant(&index), folder); if (!folder) return E_POINTER; if (V_VT(&index) == VT_BSTR) return TaskFolder_create(folders->path, V_BSTR(&index), folder, FALSE); idx = get_var_int(&index); /* collections are 1 based */ if (idx < 1 || idx > folders->count) return E_INVALIDARG; return TaskFolder_create(folders->path, folders->list[idx - 1], folder, FALSE); }
/* * State transition functions */ static int join(Conn_t *conn) { int timeout; int rfd; Debug_unit(&conn_unit, "Join called"); dump_conn(conn); timeout = get_var_int(&conn_unit, "S4"); timer_alarm(&conn_unit, conn->timer, (unsigned)timeout, conn); rfd=atm_connect_back(get_var_addr(&conn_unit, "S1"), conn, CONTROL_DISTRIBUTE); if (rfd<0) { conn_remove(conn); return 0; } conn->sfd=rfd; event_add_fd(rfd, conn); return 1; }
static Dir player_dir() { return (Dir)get_var_int("gangd"); }