void loadSlotData(){ sqlite3 * conn; sqlite3_stmt * result; int error = 0; const char * tail; char dbpath[2000]; strjoin(dbpath, ROOTPATH, "/", DBNAME, NULL); sql_open(dbpath, &conn); prepare(conn, "SELECT * FROM slots;", 2000, &result, &tail); int i = 0; while(sqlite3_step(result) == SQLITE_ROW){ char tripleState[2000]; makeTripleNum(tripleState, sqlite3_column_int(result, 0), (char *) sqlite3_column_text(result, 1), (int) sqlite3_column_int(result, 2)); char _state[2000] = "state"; mapAdd(&detailsMap, strappNum(_state, i+1), tripleState); char _timestr[2000] = "time"; mapAdd(&detailsMap, strappNum(_timestr, i+1), (char *)sqlite3_column_text(result, 4)); i++; } sqlite3_finalize(result); sqlite3_close(conn); }
void CMapLoader::LoadMap(const char * name, LOADED_MAP * map, bool keepLoaded) { LOADED_MAP ldmap; map_t * loadedMap, * loadedPatch; string mapPath, patchPath; dbgOut("loading map '%s'", name); // map = name.nym // patch = name_patch.nym loadedMap = new map_t(); loadedPatch = new map_t(); mapPath = name; mapPath += ".nym"; patchPath = name; patchPath += "_patch.nym"; mapLoad(mapPath.c_str(), *loadedMap); if(!mapTryLoad(patchPath.c_str(), *loadedPatch)) { delete loadedPatch; loadedPatch = NULL; } else dbgOut("map '%s' has patch", name); // Add the patch before the map so that the patch resources are used first ldmap.map = loadedMap; ldmap.patch = loadedPatch; ldmap.stayLoaded = keepLoaded; mapAdd(ldmap); if(map) { memcpy(map, &ldmap, sizeof(ldmap)); } }
MapPointAStar* RoninAStar::findPathByAStarInternal(const MapPoint& startPoint, const MapPoint& target, AStarListener* listener) { __Array* openList = __Array::create(MapPointAStar::create(0, startPoint, target), NULL); __Array* closedList = __Array::create(); while ( openList->count() > 0 ) { sortMapPointAStarArray(openList); MapPointAStar * s = (MapPointAStar *)openList->lastObject(); openList->removeLastObject(); if ( s->isEqualPoint(target) ) { return s; } closedList->addObject(s); std::vector<MapPointAStar*> vec; vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(-1, 1)), target)); vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(0, 1)), target)); vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(1, 1)), target)); vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(1, 0)), target)); vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(1, -1)), target)); vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(0, -1)), target)); vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(-1, -1)), target)); vec.push_back(MapPointAStar::create(s->gScore + 10, mapAdd(s->position, MapPoint(-1, 0)), target)); MapPointAStar* obj; for (std::vector<MapPointAStar*>::iterator itr=vec.begin(); itr!=vec.end(); itr++) { obj = *itr; if (obj->position.getDistance(startPoint) > 10) continue; if ( !listener->isPointValid(obj->position) ) continue; MapPointAStar * pointInClosed = findPointInArray(closedList, obj); if ( pointInClosed != NULL ) continue; MapPointAStar * pointInOpen = findPointInArray(openList, obj); if ( pointInOpen == NULL ) { obj->parent = s; openList->addObject(obj); } else if ( pointInOpen->getScore() > obj->getScore() ) { pointInOpen->parent = s; pointInOpen->gScore = obj->gScore; } } } sortMapPointAStarByHScore(closedList); return CAST_INSTANCE(closedList->lastObject(), MapPointAStar); }
static int mapStrNAdd(struct s_map *map, const char *str, const int len, const void *value) { mapStrNPrepKey(map, str, len); return mapAdd(map, key, value); }