mirror of
				https://github.com/halpz/re3.git
				synced 2025-11-04 13:14:51 +00:00 
			
		
		
		
	zone info commands + fix
This commit is contained in:
		
							parent
							
								
									fb1f51241d
								
							
						
					
					
						commit
						c11a20cb4f
					
				| 
						 | 
				
			
			@ -3095,14 +3095,21 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
 | 
			
		|||
		CTheScripts::ReadTextLabelFromScript(&m_nIp, label);
 | 
			
		||||
		m_nIp += KEY_LENGTH_IN_SCRIPT;
 | 
			
		||||
		CollectParameters(&m_nIp, 12);
 | 
			
		||||
		for (i = 0; i < NUM_GANGS; i++)
 | 
			
		||||
			gangDensities[i] = ScriptParams[i + 2];
 | 
			
		||||
		int zone = CTheZones::FindZoneByLabelAndReturnIndex(label, ZONE_INFO);
 | 
			
		||||
		for (int i = 0; i < NUM_GANGS; i++) {
 | 
			
		||||
			if (gangDensities[i] != 0 && CGangs::GetGangInfo(i)->m_nVehicleMI == -1)
 | 
			
		||||
				debug("SET_ZONE_CAR_INFO - Gang %d car ratio should be 0 in %s zone\n", i + 1, label);
 | 
			
		||||
		}
 | 
			
		||||
		if (zone < 0) {
 | 
			
		||||
			debug("Couldn't find zone - %s\n", label);
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
		for(i = 0; i < NUM_GANGS; i++)
 | 
			
		||||
			gangDensities[i] = ScriptParams[2+i];
 | 
			
		||||
		CTheZones::SetZoneCarInfo(zone, ScriptParams[0], ScriptParams[1], ScriptParams[11], gangDensities);
 | 
			
		||||
		while (zone >= 0) {
 | 
			
		||||
			CTheZones::SetZoneCarInfo(zone, ScriptParams[0], ScriptParams[1], ScriptParams[11], gangDensities);
 | 
			
		||||
			zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
 | 
			
		||||
		}
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
	/* Not implemented.
 | 
			
		||||
| 
						 | 
				
			
			@ -3166,8 +3173,11 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
 | 
			
		|||
			debug("Couldn't find zone - %s\n", label);
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
		CTheZones::SetZonePedInfo(zone, ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3],
 | 
			
		||||
			ScriptParams[4], ScriptParams[5], ScriptParams[6], ScriptParams[7], ScriptParams[8], ScriptParams[9], ScriptParams[10], ScriptParams[11]);
 | 
			
		||||
		while (zone >= 0) {
 | 
			
		||||
			CTheZones::SetZonePedInfo(zone, ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3],
 | 
			
		||||
				ScriptParams[4], ScriptParams[5], ScriptParams[6], ScriptParams[7], ScriptParams[8], ScriptParams[9], ScriptParams[10], ScriptParams[11]);
 | 
			
		||||
			zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
 | 
			
		||||
		}
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
	case COMMAND_SET_TIME_SCALE:
 | 
			
		||||
| 
						 | 
				
			
			@ -9835,7 +9845,32 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
 | 
			
		|||
	case COMMAND_IS_OBJECT_IN_AREA_2D:
 | 
			
		||||
	case COMMAND_IS_OBJECT_IN_AREA_3D:
 | 
			
		||||
	case COMMAND_TASK_TOGGLE_DUCK:
 | 
			
		||||
		assert(0);
 | 
			
		||||
	case COMMAND_SET_ZONE_CIVILIAN_CAR_INFO:
 | 
			
		||||
	{
 | 
			
		||||
		char label[12];
 | 
			
		||||
		int16 carDensities[CCarCtrl::NUM_CAR_CLASSES];
 | 
			
		||||
		int16 boatDensities[CCarCtrl::NUM_BOAT_CLASSES];
 | 
			
		||||
		int i;
 | 
			
		||||
 | 
			
		||||
		CTheScripts::ReadTextLabelFromScript(&m_nIp, label);
 | 
			
		||||
		m_nIp += KEY_LENGTH_IN_SCRIPT;
 | 
			
		||||
		CollectParameters(&m_nIp, 12);
 | 
			
		||||
		for (i = 0; i < CCarCtrl::NUM_CAR_CLASSES; i++)
 | 
			
		||||
			carDensities[i] = ScriptParams[i + 1];
 | 
			
		||||
		for (i = 0; i < CCarCtrl::NUM_BOAT_CLASSES; i++)
 | 
			
		||||
			boatDensities[i] = ScriptParams[i + 1 + CCarCtrl::NUM_CAR_CLASSES];
 | 
			
		||||
		int zone = CTheZones::FindZoneByLabelAndReturnIndex(label, ZONE_INFO);
 | 
			
		||||
		if (zone < 0) {
 | 
			
		||||
			debug("Couldn't find zone - %s\n", label);
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
		while (zone >= 0) {
 | 
			
		||||
			CTheZones::SetZoneCivilianCarInfo(zone, ScriptParams[0], carDensities, boatDensities);
 | 
			
		||||
			zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
 | 
			
		||||
		}
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
	case COMMAND_REQUEST_ANIMATION:
 | 
			
		||||
	case COMMAND_HAS_ANIMATION_LOADED:
 | 
			
		||||
	case COMMAND_REMOVE_ANIMATION:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1299,14 +1299,17 @@ CStreaming::StreamVehiclesAndPeds(void)
 | 
			
		|||
		int32 mostRequestedRating = 0;
 | 
			
		||||
		for(i = 0; i < CCarCtrl::TOTAL_CUSTOM_CLASSES; i++){
 | 
			
		||||
			if(CCarCtrl::NumRequestsOfCarRating[i] > maxReq &&
 | 
			
		||||
				(i == 0 && zone.carThreshold[0] != 0) ||
 | 
			
		||||
				(i != 0 && zone.carThreshold[i] != zone.carThreshold[i-1])) {
 | 
			
		||||
				((i == 0 && zone.carThreshold[0] != 0) ||
 | 
			
		||||
				(i != 0 && zone.carThreshold[i] != zone.carThreshold[i-1]))) {
 | 
			
		||||
				maxReq = CCarCtrl::NumRequestsOfCarRating[i];
 | 
			
		||||
				mostRequestedRating = i;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		debug("selected %d with %d\n", mostRequestedRating, maxReq);
 | 
			
		||||
		model = CCarCtrl::ChooseCarModelToLoad(mostRequestedRating);
 | 
			
		||||
		debug("selected %d\n", model);
 | 
			
		||||
		if(!HasModelLoaded(model)){
 | 
			
		||||
			debug("requested %d\n", model);
 | 
			
		||||
			RequestModel(model, STREAMFLAGS_DEPENDENCY);
 | 
			
		||||
			timeBeforeNextLoad = 350;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -399,6 +399,7 @@ int16
 | 
			
		|||
CTheZones::FindNextZoneByLabelAndReturnIndex(char *name, eZoneType type)
 | 
			
		||||
{
 | 
			
		||||
	char str[8];
 | 
			
		||||
	++FindIndex;
 | 
			
		||||
	memset(str, 0, 8);
 | 
			
		||||
	strncpy(str, name, 8);
 | 
			
		||||
	switch(type){
 | 
			
		||||
| 
						 | 
				
			
			@ -501,6 +502,21 @@ CTheZones::SetZoneCarInfo(uint16 zoneid, uint8 day, int16 carDensity,
 | 
			
		|||
	info->gangThreshold[8] = gangCarDensities[8] + info->gangThreshold[7];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CTheZones::SetZoneCivilianCarInfo(uint16 zoneid, uint8 day,
 | 
			
		||||
	const int16* carDensities, const int16* boatDensities)
 | 
			
		||||
{
 | 
			
		||||
	CZone* zone;
 | 
			
		||||
	CZoneInfo* info;
 | 
			
		||||
	zone = GetInfoZone(zoneid);
 | 
			
		||||
	info = &ZoneInfoArray[day ? zone->zoneinfoDay : zone->zoneinfoNight];
 | 
			
		||||
	info->carThreshold[0] = carDensities[0];
 | 
			
		||||
	for (int i = 1; i < CCarCtrl::NUM_CAR_CLASSES; i++)
 | 
			
		||||
		info->carThreshold[i] = carDensities[i] + info->carThreshold[i-1];
 | 
			
		||||
	info->boatThreshold[0] = boatDensities[0];
 | 
			
		||||
	for (int i = 1; i < CCarCtrl::NUM_BOAT_CLASSES; i++)
 | 
			
		||||
		info->boatThreshold[i] = boatDensities[i] + info->boatThreshold[i - 1];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
CTheZones::SetZonePedInfo(uint16 zoneid, uint8 day, int16 pedDensity,
 | 
			
		||||
	int16 gang0Density, int16 gang1Density, int16 gang2Density, int16 gang3Density,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,6 +93,8 @@ public:
 | 
			
		|||
	static void GetZoneInfoForTimeOfDay(const CVector *pos, CZoneInfo *info);
 | 
			
		||||
	static void SetZoneCarInfo(uint16 zoneid, uint8 day, int16 carDensity,
 | 
			
		||||
		int16 copCarDensity, const int16 *gangCarDensities /*[NUMGANGS]*/);
 | 
			
		||||
	static void SetZoneCivilianCarInfo(uint16 zoneid, uint8 day,
 | 
			
		||||
		const int16* carDensities, const int16* boatDensities);
 | 
			
		||||
	static void SetZonePedInfo(uint16 zoneid, uint8 day, int16 pedDensity,
 | 
			
		||||
		int16 gang0Density, int16 gang1Density, int16 gang2Density, int16 gang3Density,
 | 
			
		||||
		int16 gang4Density, int16 gang5Density, int16 gang6Density, int16 gang7Density,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue