예제 #1
0
파일: load.c 프로젝트: jddantes/vnbeta
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);

}
예제 #2
0
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));
	}
}
예제 #3
0
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);
}
예제 #4
0
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);
}