static void test_plane(CuTest *tc) { struct region *r; plane *pl; test_setup(); r = test_create_region(0, 0, NULL); CuAssertPtrEquals(tc, NULL, findplane(0, 0)); CuAssertPtrEquals(tc, NULL, getplane(r)); CuAssertIntEquals(tc, 0, getplaneid(r)); CuAssertPtrEquals(tc, NULL, getplanebyid(0)); CuAssertIntEquals(tc, 0, plane_center_x(0)); CuAssertIntEquals(tc, 0, plane_center_y(0)); CuAssertIntEquals(tc, 0, plane_width(0)); CuAssertIntEquals(tc, 0, plane_height(0)); CuAssertPtrEquals(tc, NULL, get_homeplane()); pl = create_new_plane(1, "Hell", 4, 8, 40, 80, 15); r = test_create_region(4, 40, 0); CuAssertIntEquals(tc, 15, pl->flags); CuAssertIntEquals(tc, 4, pl->minx); CuAssertIntEquals(tc, 8, pl->maxx); CuAssertIntEquals(tc, 40, pl->miny); CuAssertIntEquals(tc, 80, pl->maxy); CuAssertPtrEquals(tc, NULL, pl->attribs); CuAssertStrEquals(tc, "Hell", pl->name); CuAssertPtrEquals(tc, pl, findplane(4, 40)); CuAssertPtrEquals(tc, pl, getplane(r)); CuAssertPtrEquals(tc, pl, getplanebyid(1)); CuAssertIntEquals(tc, 1, getplaneid(r)); CuAssertIntEquals(tc, 6, plane_center_x(pl)); CuAssertIntEquals(tc, 60, plane_center_y(pl)); CuAssertIntEquals(tc, 5, plane_width(pl)); CuAssertIntEquals(tc, 41, plane_height(pl)); test_teardown(); }
void create_arena(void) { int x; arena_id = hashstring("arena"); arena = getplanebyid(arena_id); if (arena != NULL) return; score(); /* ist wichtig, damit alle Parteien einen score haben, wenn sie durchs Tor wollen. */ guardian_faction(arena, 999); if (arena) arena_center = findregion(plane_center_x(arena), plane_center_y(arena)); if (!arena_center) { newarena = 1; arena = create_new_plane(arena_id, "Arena", -10000, -10000, 0, BLOCKSIZE - 1, PFL_LOWSTEALING | PFL_NORECRUITS | PFL_NOALLIANCES); block_create(arena->minx, arena->miny, T_OCEAN); arena_center = findregion(plane_center_x(arena), plane_center_y(arena)); for (x = 0; x != BLOCKSIZE; ++x) { int y; for (y = 0; y != BLOCKSIZE; ++y) { region *r = findregion(arena->minx + x, arena->miny + y); freset(r, RF_ENCOUNTER); r->planep = arena; switch (distance(r, arena_center)) { case 4: terraform(r, T_FIREWALL); break; case 0: terraform(r, T_GLACIER); break; case 1: terraform(r, T_SWAMP); break; case 2: terraform(r, T_MOUNTAIN); break; } } } } make_temple(arena_center); #ifdef CENTRAL_VOLCANO init_volcano(); #else if (arena_center->terrain != T_DESERT) terraform(arena_center, T_DESERT); #endif rsetmoney(arena_center, 0); rsetpeasants(arena_center, 0); tower_init(); }
static int tolua_faction_set_origin(lua_State * L) { faction *f = (faction *)tolua_tousertype(L, 1, 0); region *r = (region *)tolua_tousertype(L, 2, 0); plane *pl = rplane(r); int id = pl ? pl->id : 0; set_ursprung(f, id, r->x - plane_center_x(pl), r->y - plane_center_y(pl)); return 0; }