Ejemplo n.º 1
0
// returns trainerCount.
static int streamNpcTrainers(ostream& stream, int id, int& requiredSkillLevel, bool pass) {
	int trainerCount = 0;
	for(auto p = SpellIndex::findLearnSpell(id); p.first != p.second; ++p.first) {
		for(auto t = gNpcTrainers.findSpell(p.first->second->id); t.first != t.second; ++t.first) {
			const NpcTrainer& nt(*t.first->second);
			if(nt.reqSkill) {
				requiredSkillLevel = nt.reqSkillValue;
			}
			if(!gNpcs.find(nt.entry)) {
				int count = 0;
				for(auto n = gNpcTrainers.findSpell(-nt.entry); n.first != n.second; ++n.first) {
					const NpcTrainer& nn(*n.first->second);
					if(pass) {
						if(trainerCount + count > 0)
							stream << ", ";
						NAMELINK(gNpcs, nn.entry);
					}
					count++;
				}
				EASSERT(count > 0);
				trainerCount += count;
			} else {
				if(pass) {
					if(trainerCount > 0)
						stream << ", ";
					NAMELINK(gNpcs, nt.entry);
				}
				trainerCount++;
			}
		}
	}
	return trainerCount;
}
Ejemplo n.º 2
0
void XSettingsManager::notify(void) {
	EASSERT(manager_data != NULL && "init() must be called before this function");

	if(!manager_data->manager_win)
		return;

	xsettings_manager_notify(manager_data);
}
Ejemplo n.º 3
0
void Parser::flush(const char* end) {
	int len = end - mNodeStart;
	EASSERT(len >= 0);
	if(len > 0) {
		addTextNode(mNodeStart, len);
		mNodeStart = end;
	}
}
Ejemplo n.º 4
0
bool XSettingsManager::should_terminate(const XEvent* xev) {
	EASSERT(manager_data != NULL && "init() must be called before this function");

	if(xev->xany.window == manager_data->manager_win &&
		xev->xany.type == SelectionClear &&
		xev->xselectionclear.selection == manager_data->selection_atom) {
		return true;
	}

	return false;
}
Ejemplo n.º 5
0
void XSettingsManager::set(const char* name, const char* val) {
	EASSERT(manager_data != NULL && "init() must be called before this function");

	if(!manager_data->manager_win)
		return;

	XSettingsSetting setting;
	setting.name = (char*)name;
	setting.type = XSETTINGS_TYPE_STRING;
	setting.data.v_string = (char*)val;

	xsettings_manager_set_setting(manager_data, &setting);
	/* xsettings_manager_notify(manager_data); */
}
Ejemplo n.º 6
0
void XSettingsManager::set(const char* name, 
		unsigned short red, unsigned short green, unsigned short blue, unsigned short alpha) {
	EASSERT(manager_data != NULL && "init() must be called before this function");

	if(!manager_data->manager_win)
		return;

	XSettingsSetting setting;
	setting.name = (char*)name;
	setting.type = XSETTINGS_TYPE_COLOR;
	setting.data.v_color.red = red;
	setting.data.v_color.green = green;
	setting.data.v_color.blue = blue;
	setting.data.v_color.alpha = alpha;

	xsettings_manager_set_setting(manager_data, &setting);
	/* xsettings_manager_notify(manager_data); */
}
Ejemplo n.º 7
0
int zoneFromCoords(int map, float x, float y) {
    // find areaId

    // compute grid and cell coordinates
    int globalCellX = (int)((MAX_NUMBER_OF_GRIDS*MAX_NUMBER_OF_CELLS/2) - (y/SIZE_OF_GRID_CELL));
    int globalCellY = (int)((MAX_NUMBER_OF_GRIDS*MAX_NUMBER_OF_CELLS/2) - (x/SIZE_OF_GRID_CELL));
    int gridX = globalCellX / MAX_NUMBER_OF_CELLS;
    int gridY = globalCellY / MAX_NUMBER_OF_CELLS;
    int cellX = globalCellX % MAX_NUMBER_OF_CELLS;
    int cellY = globalCellY % MAX_NUMBER_OF_CELLS;

    //puts "Grid: [#{gridX}][#{gridY}]"
    //puts "Cell: [#{cellX}][#{cellY}]"
    //puts "Pixel: [#{gridX*MAX_NUMBER_OF_CELLS + cellX}][#{gridY*MAX_NUMBER_OF_CELLS + cellY}]"
    int** const* ap = gAreaMap.find(map);
    if(!ap) {
        printf("Invalid mapId(%i) with coords %f x %f\n", map, x, y);
        return -1;
    }
    int** const area(*ap);
    int* grid = area[gridY * MAX_NUMBER_OF_GRIDS + gridX];
    if(!grid)
        return -1;
    int areaId = grid[cellY + cellX * MAX_NUMBER_OF_CELLS];
    EASSERT(areaId >= 0);

    // find zoneId
    int zoneId = areaId;
    do {
        const Area* a = gAreaTable.find(zoneId);
        if(!a) {
            printf("Invalid areaId(%i) for coords %i, %f x %f\n", zoneId, map, x, y);
            return zoneId;
        }
        if(a->parent != 0)
            zoneId = a->parent;
        else
            break;
    } while(true);
    return zoneId;
}