Pastebin

New pastes are no longer accepted · Stats

Latest Pastes

ECF class datac

void ECF::Read(std::string filename)
{
	this->data.clear();

	std::FILE *fh = std::fopen(filename.c_str(), "rb");
	safe_fail_filename = filename.c_str();

	if (!fh)
	{
		Console::Err("Could not load file: %s", filename.c_str());
		std::exit(1);
	}

	SAFE_SEEK(fh, 3, SEEK_SET);
	SAFE_READ(this->rid, sizeof(char), 4, fh);
	SAFE_READ(this->len, sizeof(char), 2, fh);
	int numobj = PacketProcessor::Number(this->len[0], this->len[1]);
	SAFE_SEEK(fh, 1, SEEK_CUR);

	unsigned char namesize;
	std::string name;
	char buf[ECF::DATA_SIZE] = {0};

	this->data.resize(numobj+1);

	this->data[0] = new ECF_Data;

	SAFE_READ(static_cast<void *>(&namesize), sizeof(char), 1, fh);
	for (int i = 1; i <= numobj; ++i)
	{
		ECF_Data *newdata = new ECF_Data;

		namesize = PacketProcessor::Number(namesize);
		name.resize(namesize);
		SAFE_READ(&name[0], sizeof(char), namesize, fh);

		SAFE_READ(buf, sizeof(char), ECF::DATA_SIZE, fh);

		newdata->id = i;
		newdata->name = name;

        newdata->base = PacketProcessor::Number(buf[0]);//works
		newdata->type = PacketProcessor::Number(buf[1]);
//newdata->subclass = static_cast<ECF::SubClass>(PacketProcessor::Number(buf[1]));

		newdata->str = PacketProcessor::Number(buf[2], buf[3]);//works
        newdata->intl = PacketProcessor::Number(buf[4], buf[5]);//works
        newdata->wis = PacketProcessor::Number(buf[6], buf[7]);//works
        newdata->agi = PacketProcessor::Number(buf[8], buf[9]);//works
        newdata->con = PacketProcessor::Number(buf[10], buf[11]);//works
        newdata->cha = PacketProcessor::Number(buf[12], buf[13]);//works

		this->data[i] = newdata;

		if (std::fread(static_cast<void *>(&namesize), sizeof(char), 1, fh) != 1)
		{
			break;
		}
	}

	if (this->data.back()->name.compare("eof") == 0)
	{
		this->data.pop_back();
	}

	Console::Out("%i classes loaded.", this->data.size()-1);

	std::fclose(fh);
}