Ejemplo n.º 1
0
void NetCity::PacketizeResources(const Resources &resources, uint8 *buf, uint16 &size)
{
	sint32 resourceCount;
	resourceCount = resources.m_numGoods;
	sint32 r;
	PUSHLONG(resourceCount);
	for(r = 0; r < resourceCount; r++) {
		PUSHLONG(resources.m_supply[r]);
	}
	PUSHLONG(resources.m_totalResources);
}
Ejemplo n.º 2
0
void NetCityResources::Packetize(uint8 *buf, uint16 &size)
{
	size = 0;
	PUSHID(k_PACKET_RESOURCES_ID);
	PUSHLONG((uint32)m_cityData->m_home_city);
#ifdef CTP1_TRADE
	PUSHLONG(m_cityData->m_resources.m_numGoods);
	PUSHLONG(m_cityData->m_resources.m_totalResources);
	sint32 i;
	for(i = 0; i < m_cityData->m_resources.m_numGoods; i++) {
		PUSHLONG(m_cityData->m_resources.m_supply[i]);
	}
#endif
}
Ejemplo n.º 3
0
void NetCityName::Packetize(uint8* buf, uint16 &size)
{
	size = 0;
	PUSHID(k_PACKET_CITY_NAME_ID);
	PUSHLONG((uint32)m_cityData->m_home_city);
	PUSHSTRING(m_cityData->m_name);
}
Ejemplo n.º 4
0
void NetCityBuildQueue::Packetize(uint8 *buf, uint16 &size)
{
	size = 0;
	PUSHID(k_PACKET_CITY_BQ_ID);

	PUSHLONG((uint32)m_cityData->m_home_city);
	PUSHLONG(m_cityData->m_build_queue.m_list->GetCount());

	PointerList<BuildNode>::Walker walk(m_cityData->m_build_queue.m_list);
	while(walk.IsValid()) {
		BuildNode *bn = walk.GetObj();
		PUSHLONG(bn->m_cost);
		PUSHLONG(bn->m_type);
		PUSHLONG(bn->m_category);
		PUSHBYTE(bn->m_flags);

		walk.Next();
	}
}
Ejemplo n.º 5
0
void NetTradeRoute::Packetize(uint8 *buf, uint16 & size)
{
	sint32 i;

	buf[0] = k_PACKET_TRADE_ROUTE_ID >> 8;
	buf[1] = k_PACKET_TRADE_ROUTE_ID & 0xff;

	size = 2;

	PUSHLONG(m_routeData->m_id);

	PUSHBYTE(m_newRoute);

	PUSHBYTE((uint8)m_routeData->m_owner);
	PUSHBYTE((uint8)m_routeData->m_payingFor);

	PUSHLONG((uint32)(m_routeData->m_transportCost * 10000.0));
	PUSHBYTE((uint8)m_routeData->m_sourceRouteType);
	PUSHLONG(m_routeData->m_sourceResource);
	
	uint32 passesThrough = 0;
	for(i = 0; i < k_MAX_PLAYERS; i++) {
		passesThrough |= (m_routeData->m_passesThrough[i] << i);
	}
	PUSHLONG(passesThrough);
	PUSHBYTE(m_routeData->m_crossesWater);
	PUSHBYTE(m_routeData->m_isActive);
	PUSHLONG(m_routeData->m_color);
	PUSHLONG(m_routeData->m_outline);
	PUSHLONG(m_routeData->m_gold_in_return);

	PUSHLONG((uint32)(m_routeData->m_sourceCity));
	PUSHLONG((uint32)(m_routeData->m_destinationCity));
	PUSHLONG((uint32)(m_routeData->m_recip));
	PUSHSHORT((uint16)(m_routeData->m_path.Num()));
	for(i = 0; i < m_routeData->m_path.Num(); i++) {
		PUSHSHORT((uint16)m_routeData->m_path[i].x);
		PUSHSHORT((uint16)m_routeData->m_path[i].y);
	}
}
Ejemplo n.º 6
0
void NetExclusions::Packetize(uint8 *buf, uint16 &size)
{
	PUSHID(k_PACKET_EXCLUSIONS_ID);
	PUSHLONG(g_exclusions->m_numUnits);
	PUSHLONG(g_exclusions->m_numBuildings);
	PUSHLONG(g_exclusions->m_numWonders);

	sint32 i;
	sint32 bitPos;
	uint8 next;
	for(i = 0; i < g_exclusions->m_numUnits; i += 8) {
		next = 0;
		for(bitPos = 0; (bitPos < 8) && ((i + bitPos) < g_exclusions->m_numUnits); bitPos++) {
			if(g_exclusions->IsUnitExcluded(i + bitPos))
				next |= 1 << bitPos;
		}
		PUSHBYTE(next);
	}

	for(i = 0; i < g_exclusions->m_numBuildings; i += 8) {
		next = 0;
		for(bitPos = 0; (bitPos < 8) && ((i + bitPos) < g_exclusions->m_numBuildings); bitPos++) {
			if(g_exclusions->IsBuildingExcluded(i + bitPos))
				next |= 1 << bitPos;
		}
		PUSHBYTE(next);
	}

	for(i = 0; i < g_exclusions->m_numWonders; i += 8) {
		next = 0;
		for(bitPos = 0; (bitPos < 8) && ((i + bitPos) < g_exclusions->m_numWonders); bitPos++) {
			if(g_exclusions->IsWonderExcluded(i + bitPos))
				next |= 1 << bitPos;
		}
		PUSHBYTE(next);
	}
}
Ejemplo n.º 7
0
void NetCivilization::Packetize(uint8 *buf, uint16 &size)
{
	size = 0;
	PUSHID(k_PACKET_CIVILIZATION_ID);

	PUSHLONG(m_data->m_id);
	PUSHBYTE((uint8)m_data->m_owner);
	PUSHBYTE((uint8)m_data->m_gender);
	PUSHSHORT((uint16)m_data->m_civ);
	PUSHSTRING(m_data->m_leader_name);
	PUSHSTRING(m_data->m_civilisation_name);
	PUSHSTRING(m_data->m_country_name);
	PUSHSTRING(m_data->m_singular_name);
	PUSHSTRING(m_data->m_personality_description);
	
	uint16 numCityNames = (uint16)g_theCivilisationDB->Get(m_data->m_civ)->GetNumCityName();
	PUSHSHORT(numCityNames);
	sint32 i;
	for(i = 0; i < numCityNames; i++) {
		PUSHBYTE(m_data->m_cityname_count[i]);
	}
}
Ejemplo n.º 8
0
void NetGameSettings::Packetize(uint8 *buf, uint16 &size)
{
	size = 0;
	PUSHID(k_PACKET_GAME_SETTINGS_ID);

	PUSHLONG(m_x);
	PUSHLONG(m_y);
	PUSHLONG(m_numPlayers);
	PUSHBYTE(m_gameStyle);
	PUSHLONG(m_movesPerSlice);
	PUSHLONG(m_totalTime);
	PUSHLONG(m_turnTime);
	PUSHLONG(m_cityTime);
	uint32 playerMask = 0;
	for(sint32 i = 0; i < k_MAX_PLAYERS; i++) {
		if(g_player[i])
			playerMask |= (1 << i);
	}
	PUSHLONG(playerMask);

	PUSHLONG(g_theGameSettings->m_difficulty);
	PUSHLONG(g_theGameSettings->m_risk);
	PUSHLONG(g_theGameSettings->m_alienEndGame);
	PUSHLONG(g_theGameSettings->m_pollution);

	PUSHLONG(g_theWorld->m_isYwrap);
	PUSHLONG(g_theWorld->m_isXwrap);
}
Ejemplo n.º 9
0
void NetCity::Packetize(uint8* buf, uint16& size)
{
	buf[0] = 'C';
	buf[1] = 'D';
	uint16 unitSize;

	putlong(&buf[2], m_unitData->m_id);
	NetUnit::PacketizeUnit(&buf[6], unitSize, m_unitData);

	size = 6 + unitSize;
	CityData* cityData = m_unitData->m_city_data;

	PUSHBYTE(m_isInitialPacket);

	PUSHLONG(cityData->m_slaveBits);
	PUSHLONG(cityData->m_shieldstore);
	PUSHLONG(cityData->m_shieldstore_at_begin_turn);
	PUSHLONG(cityData->m_net_gold);
	PUSHLONG(cityData->m_science);
	PUSHLONG(cityData->m_luxury);
	PUSHLONG(cityData->m_city_attitude);
	PUSHLONG64((uint64)cityData->m_built_improvements);

	
	

#ifdef CTP1_TRADE
	uint8 numNonZeroResources = 0;
	
	sint32 resourceCountPosition = size++;

	sint32 i;

	for(i = 0; i < g_theResourceDB->NumRecords(); i++) {
		if(cityData->m_resources.GetResourceCount(i) > 0) {
			numNonZeroResources++;
			PUSHBYTE((uint8)i);
			PUSHSHORT((uint16)cityData->m_resources.GetResourceCount(i));
		}
	}
	buf[resourceCountPosition] = numNonZeroResources;
#endif

	sint32 i;
	PUSHLONG(cityData->m_population);
	for(i = 0; i < (sint32)POP_MAX; i++) {
		PUSHSHORT(cityData->m_numSpecialists[i]);
	}
	PUSHLONG(cityData->m_partialPopulation);
	PUSHLONG(cityData->m_sizeIndex);
	PUSHLONG(cityData->m_workerFullUtilizationIndex);
	PUSHLONG(cityData->m_workerPartialUtilizationIndex);

	PUSHDOUBLE(cityData->m_defensiveBonus);
	PUSHBYTE((uint8)cityData->m_founder);

	PacketizeResources(cityData->m_collectingResources, buf, size);
	PacketizeResources(cityData->m_sellingResources, buf, size);
	PacketizeResources(cityData->m_buyingResources, buf, size);

	sint32 r;
	for(r = 0; r < g_theResourceDB->NumRecords(); r++) {
		PUSHLONG(cityData->m_distanceToGood[r]);
	}
	
}
Ejemplo n.º 10
0
void NetCity2::Packetize(uint8* buf, uint16 &size)
{
	size = 0;
	PUSHID(k_PACKET_CITY2_ID);

	PUSHLONG((uint32)m_data->m_home_city);
	
	PUSHLONG(m_data->m_gold_lost_to_crime);
	PUSHLONG(m_data->m_gross_gold);
	PUSHLONG(m_data->m_goldFromTradeRoutes);
	PUSHLONG(m_data->m_gross_production);
	PUSHLONG(m_data->m_net_production);
	PUSHLONG(m_data->m_production_lost_to_crime);
	PUSHLONG64((uint64)m_data->m_builtWonders);
	PUSHDOUBLE(m_data->m_food_delta);
	PUSHDOUBLE(m_data->m_gross_food);
	PUSHDOUBLE(m_data->m_net_food);
	PUSHDOUBLE(m_data->m_food_lost_to_crime);
	PUSHDOUBLE(m_data->m_food_consumed_this_turn);
	PUSHLONG(m_data->m_total_pollution);

	uint8 flags = 
		(uint8)m_data->m_contribute_materials |
		((uint8)m_data->m_contribute_military << 1) |
		((uint8)m_data->m_buildCapitalization << 4) |
		((uint8)m_data->m_walls_nullified << 5) |
		((uint8)m_data->m_isInjoined << 6) |
		((uint8)m_data->m_buildInfrastructure << 7);
	PUSHBYTE(flags);

#if 0
	DPRINTF(k_DBG_NET, ("city: %d, %d, %d, %d, %d, %d, %d, %d, %d\n",
						m_data->m_spied_upon,
						m_data->m_franchise_owner,
						m_data->m_franchiseTurnsRemaining,
						m_data->m_ignore_happiness,
						m_data->m_watchfulTurns,
						m_data->m_bioInfectionTurns,
						m_data->m_nanoInfectionTurns,
						m_data->m_convertedTo,
						m_data->m_convertedBy));
#endif
						
	PUSHBYTE((sint8)m_data->m_spied_upon);

	PUSHBYTE((sint8)m_data->m_franchise_owner);
	PUSHBYTE((sint8)m_data->m_franchiseTurnsRemaining);
	
#ifdef _DEBUG
	
#endif
	PUSHBYTE((sint8)m_data->m_watchfulTurns);
	PUSHBYTE((sint8)m_data->m_bioInfectionTurns);
	PUSHBYTE((sint8)m_data->m_nanoInfectionTurns);
	PUSHBYTE((sint8)m_data->m_convertedTo);
	PUSHBYTE((sint8)m_data->m_convertedBy);
	PUSHLONG(m_data->m_convertedGold);

	PUSHLONG(m_data->m_accumulated_food);
	

	
	

	PUSHLONG(m_data->m_foodVatPollution);
	sint8 govSetting = -1;
	if(m_data->m_useGovernor) {
		govSetting = (sint8)m_data->m_buildListSequenceIndex;
	}
	PUSHBYTE(govSetting);

	PUSHBYTE(m_isInitialPacket);
}
Ejemplo n.º 11
0
//----------------------------------------------------------------------------
//
// Name       : NetUnseenCell::Packetize
//
// Description: Generate an application data packet to transmit.
//
// Parameters : buf         : buffer to store the message
//
// Globals    : -
//
// Returns    : size        : number of bytes stored in buf
//
// Remark(s)  : -
//
//----------------------------------------------------------------------------
void NetUnseenCell::Packetize(uint8 *buf, uint16 &size)
{
	PUSHID(k_PACKET_UNSEEN_CELL_ID);
	PUSHBYTE(m_owner);

	PUSHLONG(m_ucell->m_env);
	PUSHBYTE(uint8(m_ucell->m_terrain_type));

	PUSHSHORT((uint16)m_ucell->m_point.x);
	PUSHSHORT((uint16)m_ucell->m_point.y);
	PUSHSHORT(m_ucell->m_move_cost);


	PUSHSHORT((uint16)m_ucell->m_flags);













	uint8 const citySize = (m_ucell->m_actor)
                           ? static_cast<uint8>(m_ucell->m_citySize)
                           : 0;
	PUSHBYTE(citySize);

	if(citySize > 0) {
		PUSHBYTE(m_ucell->m_bioInfectedOwner);
		PUSHBYTE(m_ucell->m_nanoInfectedOwner);
		PUSHBYTE(m_ucell->m_convertedOwner);
		PUSHBYTE(m_ucell->m_franchiseOwner);
		PUSHBYTE(m_ucell->m_injoinedOwner);
		PUSHBYTE(m_ucell->m_happinessAttackOwner);










		PUSHSHORT((uint16)m_ucell->m_cityOwner);
		PUSHSHORT((uint16)m_ucell->m_citySpriteIndex);

		PUSHSTRING(m_ucell->m_cityName);


		PUSHSHORT((uint16)m_ucell->m_actor->GetUnitDBIndex());
	}

#ifdef BATTLE_FLAGS
	PUSHSHORT(m_ucell->m_battleFlags);
#endif
	uint8 c = (uint8)m_ucell->m_improvements->GetCount();
	PUSHBYTE(c);
	PointerList<UnseenImprovementInfo>::Walker impWalk(m_ucell->m_improvements);
	for(; impWalk.IsValid(); impWalk.Next()) {
		PUSHBYTE((uint8)impWalk.GetObj()->m_type);
		PUSHBYTE((uint8)impWalk.GetObj()->m_percentComplete);
	}

	c = (uint8)m_ucell->m_installations->GetCount();
	PUSHBYTE(c);
	PointerList<UnseenInstallationInfo>::Walker instWalk(m_ucell->m_installations);
	for(; instWalk.IsValid(); instWalk.Next()) {
		PUSHBYTE((uint8)instWalk.GetObj()->m_type);
		PUSHLONG(instWalk.GetObj()->m_visibility);
	}

	PUSHBYTE(m_ucell->m_tileInfo->m_riverPiece);
	PUSHBYTE(m_ucell->m_tileInfo->m_megaInfo);
	PUSHSHORT(m_ucell->m_tileInfo->m_terrainType);
	PUSHSHORT(m_ucell->m_tileInfo->m_tileNum);
	for(c = 0; c < k_NUM_TRANSITIONS; c++) {
		PUSHBYTE(m_ucell->m_tileInfo->m_transitions[c]);
	}
}