Esempio n. 1
0
size_t json_measure(json_value *value) {
	return json_measure_ex(value, default_opts);
}
Esempio n. 2
0
//exit funtion
void saveData() {
	
	printf("Saving data @ %d...\n", currentMatchId);

	//make new arrays to hold the data
	json_value *outputArray = json_array_new(0);
	json_value **structures = malloc(1024);

	//TODO: Save brawler data into BRAWLER_DATA_FILE
	json_value *outputBrawlerArray = json_array_new(0);
	json_value *(brawlerStructs[4]);

	//for every champion that may or may not have had data stored for
	for (int i = 0; i < 1024; i++) {
		//if this champion had any data stored for it (at least one brawler has been bought on this champ)
		if (outputData[i].razorfinsBought    +
			outputData[i].ironbacksBought    +
			outputData[i].plundercrabsBought +
			outputData[i].ocklepodsBought > 0) {

			//make it a new array
			structures[i] = json_array_new(11);

			//push the appropriate data into it
			json_array_push(structures[i], json_integer_new(i));
			json_array_push(structures[i], json_integer_new(outputData[i].razorfinsBought));
			json_array_push(structures[i], json_integer_new(outputData[i].ironbacksBought));
			json_array_push(structures[i], json_integer_new(outputData[i].plundercrabsBought));
			json_array_push(structures[i], json_integer_new(outputData[i].ocklepodsBought));

			json_array_push(structures[i], json_integer_new(outputData[i].offensiveBuilds));
			json_array_push(structures[i], json_integer_new(outputData[i].defensiveBuilds));

			json_array_push(structures[i], json_integer_new(outputData[i].totalDamageTaken));
			json_array_push(structures[i], json_integer_new(outputData[i].totalDamageDealt));

			json_array_push(structures[i], json_integer_new(outputData[i].wins));
			json_array_push(structures[i], json_integer_new(outputData[i].picks));

			//add it to the output array
			json_array_push(outputArray, structures[i]);
		}
	}
	
	//for every brawler
	for (int i = 0; i < 4; i++) {
		//make it a new array
		brawlerStructs[i] = json_array_new(6);

		//push the appropriate data into it
		json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].offensiveBuilds));
		json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].defensiveBuilds));

		json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].totalDamageTakenByBuyers));
		json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].totalDamageDealtByBuyers));

		json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].wins));
		json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].picks));

		json_value *boughtObject = json_object_new(0);

		for (int j = 0; j < 8192; j++) {
			if (outputBrawlerData[i].itemsBought[j] < 1) continue;
			char itemName[63];
			snprintf(itemName, 62, "%d", j);

			json_object_push(boughtObject, itemName, json_integer_new(outputBrawlerData[i].itemsBought[j]));
		}

		json_array_push(brawlerStructs[i], boughtObject);

		//add it to the output array
		json_array_push(outputBrawlerArray, brawlerStructs[i]);
	}

	json_serialize_opts opts;
	opts.mode = json_serialize_mode_packed;

	int length = json_measure_ex(outputArray, opts);
	char *outputJSONString = malloc(length);

	json_serialize_ex(outputJSONString, outputArray, opts);

	fwrite(outputJSONString, sizeof(char), length, outputDataFileStream);


	length = json_measure_ex(outputBrawlerArray, opts);
	char *outputJSONString_brawlers = malloc(length);

	json_serialize_ex(outputJSONString_brawlers, outputBrawlerArray, opts);

	fwrite(outputJSONString_brawlers, sizeof(char), length, outputBrawlerDataFileStream);

	fcloseall();

	//json_builder_free(outputArray);
	//json_builder_free(outputBrawlerArray);
	json_value_free(matchIdArray);
	return;
}