mirror of
https://github.com/electronicarts/CNC_TS_and_RA2_Mission_Editor.git
synced 2025-04-30 09:01:41 -04:00
Fix: change object owner (#118)
* split out overlay handling function, and change digit to meaningful enum values . * GetStructureData returns ID and readd using the same . * resolved data insert sequence issue .
This commit is contained in:
parent
f5601fb046
commit
be0ca9c1af
5 changed files with 393 additions and 345 deletions
|
@ -4605,7 +4605,220 @@ void CIsoView::ShowAllTileSets()
|
|||
}
|
||||
}
|
||||
|
||||
void CIsoView::handleMouseActionManageOverlays(int x, int y)
|
||||
{
|
||||
// Overlay
|
||||
DWORD dwPos = x + y * Map->GetIsoSize();
|
||||
|
||||
FIELDDATA m = *Map->GetFielddataAt(dwPos);
|
||||
if (m.wGround == 0xFFFF) m.wGround = 0;
|
||||
|
||||
BYTE oldOverlay = Map->GetOverlayAt(dwPos);
|
||||
BYTE oldOverlayData = Map->GetOverlayDataAt(dwPos);
|
||||
|
||||
if (AD.data == 1) // delete overlay
|
||||
{
|
||||
int gx, gy;
|
||||
for (gx = x - AD.data2; gx <= x + AD.data2; gx++) {
|
||||
for (gy = y - AD.data2; gy <= y + AD.data2; gy++) {
|
||||
Map->SetOverlayDataAt(gx + gy * Map->GetIsoSize(), 0xFF);
|
||||
Map->SetOverlayAt(gx + gy * Map->GetIsoSize(), 0xFF);
|
||||
|
||||
|
||||
HandleTrail(gx - 1, gy - 1);
|
||||
HandleTrail(gx + 1, gy - 1);
|
||||
HandleTrail(gx - 1, gy + 1);
|
||||
HandleTrail(gx + 1, gy + 1);
|
||||
HandleTrail(gx - 0, gy - 1);
|
||||
HandleTrail(gx + 0, gy + 1);
|
||||
HandleTrail(gx - 1, gy + 0);
|
||||
HandleTrail(gx + 1, gy + 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else if (AD.data == 2) // green tiberium mode
|
||||
{
|
||||
|
||||
{
|
||||
if (AD.data2 == 0) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
//srand( GetTickCount()+i+e*5 );
|
||||
int v1 = ((float)rand() / (float)RAND_MAX) * 8.0f + 0x68;
|
||||
int v2 = ((float)rand() / (float)RAND_MAX) * 8.0f + 1;
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), v1);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), v2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (AD.data2 == 10) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), 0x70);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), 0x5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (AD.data2 == 20) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl > 0x65 && ovrl < 0x72) {
|
||||
if (Map->GetOverlayDataAt(i + e * Map->GetIsoSize() + dwPos) < 9) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (AD.data2 == 21) {
|
||||
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl > 0x65 && ovrl < 0x72) {
|
||||
if (Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) > 0) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (AD.data == 3) // blue tiberium mode
|
||||
{
|
||||
int o = 0x7f;
|
||||
#ifdef RA2_MODE
|
||||
o = 0x1e;
|
||||
#endif
|
||||
//if((*tiledata)[m.wGround].bAllowTiberium)
|
||||
{
|
||||
if (AD.data2 == 0) {
|
||||
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
|
||||
int v2 = ((float)rand() / (float)RAND_MAX) * 8 + 1;
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), o);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), v2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (AD.data2 == 10) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), o);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), 0x5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (AD.data2 == 20) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl == o) {
|
||||
if (Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) < 9) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (AD.data2 == 21) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl == o) {
|
||||
if (Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) > 0) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (AD.data == 4) // veinhole stuff mode
|
||||
{
|
||||
if (AD.data2 == 0) // Set veinhole!
|
||||
{
|
||||
int gx, gy;
|
||||
for (gx = x - 1; gx <= x + 1; gx++) {
|
||||
for (gy = y - 1; gy <= y + 1; gy++) {
|
||||
Map->SetOverlayAt(gx + gy * Map->GetIsoSize(), OVRL_VEINHOLEBORDER);
|
||||
Map->SetOverlayDataAt(gx + gy * Map->GetIsoSize(), 0x0);
|
||||
}
|
||||
}
|
||||
Map->SetOverlayAt(dwPos, OVRL_VEINHOLE);
|
||||
Map->SetOverlayDataAt(dwPos, 0x0);
|
||||
Map->SetHeightAt(dwPos, Map->GetHeightAt(dwPos) - 1);
|
||||
}
|
||||
else if (AD.data2 == 1) // set veins
|
||||
{
|
||||
Map->SetOverlayAt(dwPos, OVRL_VEINS);
|
||||
Map->SetOverlayDataAt(dwPos, 0x30);
|
||||
}
|
||||
|
||||
}
|
||||
else if (AD.data == 30) // any overlay
|
||||
{
|
||||
Map->SetOverlayAt(dwPos, AD.data2);
|
||||
Map->SetOverlayDataAt(dwPos, 0);
|
||||
int i;
|
||||
for (i = 0; i < overlay_count; i++) {
|
||||
if (overlay_number[i] == AD.data2) {
|
||||
if (overlay_trail[i]) {
|
||||
// handle trail stuff!
|
||||
HandleTrail(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (AD.data == 33) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), AD.data2);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), AD.data3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (AD.data == 31) {
|
||||
Map->SetOverlayAt(dwPos, AD.data2);
|
||||
}
|
||||
else if (AD.data == 32) {
|
||||
Map->SetOverlayDataAt(dwPos, AD.data2);
|
||||
}
|
||||
|
||||
// RedrawWindow(NULL,NULL,RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
}
|
||||
|
||||
void CIsoView::PlaceCurrentObjectAt(int x, int y)
|
||||
{
|
||||
|
@ -4629,328 +4842,128 @@ void CIsoView::PlaceCurrentObjectAt(int x, int y)
|
|||
return;
|
||||
}
|
||||
|
||||
if (AD.type == 1) // ADD INFANTRY
|
||||
{
|
||||
if (Map->GetInfantryCountAt(x + y * Map->GetIsoSize()) >= SUBPOS_COUNT) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map->AddInfantry(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} else if (AD.type == 2) // add structure
|
||||
{
|
||||
int n = Map->GetStructureAt(x + y * Map->GetIsoSize());
|
||||
if (n >= 0) {
|
||||
STDOBJECTDATA sod;
|
||||
Map->GetStdStructureData(n, &sod);
|
||||
if (strcmp(sod.type, "GAPAVE") != NULL) {
|
||||
//isMoving=FALSE;
|
||||
switch (MouseActionType(AD.type)) {
|
||||
case MouseActionType::AddInfantry: {
|
||||
if (Map->GetInfantryCountAt(x + y * Map->GetIsoSize()) >= SUBPOS_COUNT) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Map->AddStructure(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} else if (AD.type == 3) // add aircraft
|
||||
{
|
||||
|
||||
if (Map->GetAirAt(x + y * Map->GetIsoSize()) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map->AddAircraft(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} else if (AD.type == 4) // add vehicle
|
||||
{
|
||||
if (Map->GetUnitAt(x + y * Map->GetIsoSize()) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map->AddUnit(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} else if (AD.type == 5) // add terrain
|
||||
{
|
||||
if (Map->GetTerrainAt(x + y * Map->GetIsoSize()) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map->AddTerrain(AD.data_s, x + y * Map->GetIsoSize());
|
||||
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} else if (AD.type == 6) {
|
||||
// Overlay
|
||||
|
||||
|
||||
|
||||
DWORD dwPos = x + y * Map->GetIsoSize();
|
||||
|
||||
FIELDDATA m = *Map->GetFielddataAt(dwPos);
|
||||
if (m.wGround == 0xFFFF) m.wGround = 0;
|
||||
|
||||
BYTE oldOverlay = Map->GetOverlayAt(dwPos);
|
||||
BYTE oldOverlayData = Map->GetOverlayDataAt(dwPos);
|
||||
|
||||
if (AD.data == 1) // delete overlay
|
||||
{
|
||||
int gx, gy;
|
||||
for (gx = x - AD.data2; gx <= x + AD.data2; gx++) {
|
||||
for (gy = y - AD.data2; gy <= y + AD.data2; gy++) {
|
||||
Map->SetOverlayDataAt(gx + gy * Map->GetIsoSize(), 0xFF);
|
||||
Map->SetOverlayAt(gx + gy * Map->GetIsoSize(), 0xFF);
|
||||
|
||||
|
||||
HandleTrail(gx - 1, gy - 1);
|
||||
HandleTrail(gx + 1, gy - 1);
|
||||
HandleTrail(gx - 1, gy + 1);
|
||||
HandleTrail(gx + 1, gy + 1);
|
||||
HandleTrail(gx - 0, gy - 1);
|
||||
HandleTrail(gx + 0, gy + 1);
|
||||
HandleTrail(gx - 1, gy + 0);
|
||||
HandleTrail(gx + 1, gy + 0);
|
||||
Map->AddInfantry(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} break;
|
||||
case MouseActionType::AddStructure: {
|
||||
int n = Map->GetStructureAt(x + y * Map->GetIsoSize());
|
||||
if (n >= 0) {
|
||||
STDOBJECTDATA sod;
|
||||
Map->GetStdStructureData(n, &sod);
|
||||
if (strcmp(sod.type, "GAPAVE") != NULL) {
|
||||
//isMoving=FALSE;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else if (AD.data == 2) // green tiberium mode
|
||||
{
|
||||
Map->AddStructure(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} break;
|
||||
case MouseActionType::AddAircraft: {
|
||||
|
||||
{
|
||||
if (AD.data2 == 0) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
//srand( GetTickCount()+i+e*5 );
|
||||
int v1 = ((float)rand() / (float)RAND_MAX) * 8.0f + 0x68;
|
||||
int v2 = ((float)rand() / (float)RAND_MAX) * 8.0f + 1;
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), v1);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), v2);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (AD.data2 == 10) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), 0x70);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), 0x5);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (AD.data2 == 20) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl > 0x65 && ovrl < 0x72) {
|
||||
if (Map->GetOverlayDataAt(i + e * Map->GetIsoSize() + dwPos) < 9) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (AD.data2 == 21) {
|
||||
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl > 0x65 && ovrl < 0x72) {
|
||||
if (Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) > 0) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Map->GetAirAt(x + y * Map->GetIsoSize()) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
} else if (AD.data == 3) // blue tiberium mode
|
||||
{
|
||||
int o = 0x7f;
|
||||
#ifdef RA2_MODE
|
||||
o = 0x1e;
|
||||
#endif
|
||||
//if((*tiledata)[m.wGround].bAllowTiberium)
|
||||
{
|
||||
if (AD.data2 == 0) {
|
||||
Map->AddAircraft(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
|
||||
int v2 = ((float)rand() / (float)RAND_MAX) * 8 + 1;
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), o);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), v2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if (AD.data2 == 10) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int curground = Map->GetFielddataAt(dwPos + i + e * Map->GetIsoSize())->wGround;
|
||||
if (curground == 0xFFFF) curground = 0;
|
||||
|
||||
if ((*tiledata)[curground].bAllowTiberium) {
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), o);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), 0x5);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (AD.data2 == 20) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl == o) {
|
||||
if (Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) < 9) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (AD.data2 == 21) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
int ovrl = Map->GetOverlayAt(dwPos + i + e * Map->GetIsoSize());
|
||||
if (ovrl == o) {
|
||||
if (Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) > 0) Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), Map->GetOverlayDataAt(dwPos + i + e * Map->GetIsoSize()) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} break;
|
||||
case MouseActionType::AddVehicle: {
|
||||
if (Map->GetUnitAt(x + y * Map->GetIsoSize()) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
} else if (AD.data == 4) // veinhole stuff mode
|
||||
{
|
||||
if (AD.data2 == 0) // Set veinhole!
|
||||
{
|
||||
int gx, gy;
|
||||
for (gx = x - 1; gx <= x + 1; gx++) {
|
||||
for (gy = y - 1; gy <= y + 1; gy++) {
|
||||
Map->SetOverlayAt(gx + gy * Map->GetIsoSize(), OVRL_VEINHOLEBORDER);
|
||||
Map->SetOverlayDataAt(gx + gy * Map->GetIsoSize(), 0x0);
|
||||
}
|
||||
}
|
||||
Map->SetOverlayAt(dwPos, OVRL_VEINHOLE);
|
||||
Map->SetOverlayDataAt(dwPos, 0x0);
|
||||
Map->SetHeightAt(dwPos, Map->GetHeightAt(dwPos) - 1);
|
||||
} else if (AD.data2 == 1) // set veins
|
||||
{
|
||||
Map->SetOverlayAt(dwPos, OVRL_VEINS);
|
||||
Map->SetOverlayDataAt(dwPos, 0x30);
|
||||
Map->AddUnit(NULL, AD.data_s, currentOwner, x + y * Map->GetIsoSize());
|
||||
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} break;
|
||||
case MouseActionType::AddTerrain: {
|
||||
if (Map->GetTerrainAt(x + y * Map->GetIsoSize()) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
} else if (AD.data == 30) // any overlay
|
||||
{
|
||||
Map->SetOverlayAt(dwPos, AD.data2);
|
||||
Map->SetOverlayDataAt(dwPos, 0);
|
||||
int i;
|
||||
for (i = 0; i < overlay_count; i++) {
|
||||
if (overlay_number[i] == AD.data2) {
|
||||
if (overlay_trail[i]) {
|
||||
// handle trail stuff!
|
||||
HandleTrail(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (AD.data == 33) {
|
||||
int i, e;
|
||||
for (i = 0; i < m_BrushSize_x; i++) {
|
||||
for (e = 0; e < m_BrushSize_y; e++) {
|
||||
Map->SetOverlayAt(dwPos + i + e * Map->GetIsoSize(), AD.data2);
|
||||
Map->SetOverlayDataAt(dwPos + i + e * Map->GetIsoSize(), AD.data3);
|
||||
}
|
||||
}
|
||||
}
|
||||
Map->AddTerrain(AD.data_s, x + y * Map->GetIsoSize());
|
||||
|
||||
else if (AD.data == 31) {
|
||||
Map->SetOverlayAt(dwPos, AD.data2);
|
||||
} else if (AD.data == 32) {
|
||||
Map->SetOverlayDataAt(dwPos, AD.data2);
|
||||
}
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} break;
|
||||
case MouseActionType::ManageOverlay:
|
||||
this->handleMouseActionManageOverlays(x, y);
|
||||
break;
|
||||
case MouseActionType::ChangeOwner: {
|
||||
// set owner!
|
||||
BOOL bchanged = FALSE;
|
||||
|
||||
// RedrawWindow(NULL,NULL,RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} else if (AD.type == 7) {
|
||||
// set owner!
|
||||
BOOL bchanged = FALSE;
|
||||
|
||||
int t = Map->GetStructureAt(x + y * Map->GetIsoSize());
|
||||
if (t >= 0) {
|
||||
STRUCTURE structure;
|
||||
Map->GetStructureData(t, &structure);
|
||||
Map->DeleteStructure(t);
|
||||
structure.house = AD.data_s;
|
||||
Map->AddStructure(&structure);
|
||||
bchanged = TRUE;
|
||||
}
|
||||
t = Map->GetUnitAt(x + y * Map->GetIsoSize());
|
||||
if (t >= 0) {
|
||||
UNIT unit;
|
||||
Map->GetUnitData(t, &unit);
|
||||
Map->DeleteUnit(t);
|
||||
unit.house = AD.data_s;
|
||||
Map->AddUnit(&unit);
|
||||
bchanged = TRUE;
|
||||
}
|
||||
t = Map->GetAirAt(x + y * Map->GetIsoSize());
|
||||
if (t >= 0) {
|
||||
AIRCRAFT aircraft;
|
||||
Map->GetAircraftData(t, &aircraft);
|
||||
Map->DeleteAircraft(t);
|
||||
aircraft.house = AD.data_s;
|
||||
Map->AddAircraft(&aircraft);
|
||||
bchanged = TRUE;
|
||||
}
|
||||
int z;
|
||||
for (z = 0; z < SUBPOS_COUNT; z++) {
|
||||
t = Map->GetInfantryAt(x + y * Map->GetIsoSize(), z);
|
||||
int t = Map->GetStructureAt(x + y * Map->GetIsoSize());
|
||||
if (t >= 0) {
|
||||
INFANTRY infantry;
|
||||
Map->GetInfantryData(t, &infantry);
|
||||
Map->DeleteInfantry(t);
|
||||
infantry.house = AD.data_s;
|
||||
Map->AddInfantry(&infantry);
|
||||
STRUCTURE structure;
|
||||
auto const id = Map->GetStructureData(t, &structure);
|
||||
Map->DeleteStructure(t);
|
||||
structure.house = AD.data_s;
|
||||
Map->AddStructure(&structure, nullptr, nullptr, 0, std::move(id));
|
||||
bchanged = TRUE;
|
||||
}
|
||||
}
|
||||
t = Map->GetUnitAt(x + y * Map->GetIsoSize());
|
||||
if (t >= 0) {
|
||||
UNIT unit;
|
||||
auto const id = Map->GetUnitData(t, &unit);
|
||||
Map->DeleteUnit(t);
|
||||
unit.house = AD.data_s;
|
||||
Map->AddUnit(&unit, nullptr, nullptr, 0, std::move(id));
|
||||
bchanged = TRUE;
|
||||
}
|
||||
t = Map->GetAirAt(x + y * Map->GetIsoSize());
|
||||
if (t >= 0) {
|
||||
AIRCRAFT aircraft;
|
||||
auto const id = Map->GetAircraftData(t, &aircraft);
|
||||
Map->DeleteAircraft(t);
|
||||
aircraft.house = AD.data_s;
|
||||
Map->AddAircraft(&aircraft, nullptr, nullptr, 0, std::move(id));
|
||||
bchanged = TRUE;
|
||||
}
|
||||
int z;
|
||||
for (z = 0; z < SUBPOS_COUNT; z++) {
|
||||
t = Map->GetInfantryAt(x + y * Map->GetIsoSize(), z);
|
||||
if (t >= 0) {
|
||||
INFANTRY infantry;
|
||||
Map->GetInfantryData(t, &infantry);
|
||||
Map->DeleteInfantry(t);
|
||||
infantry.house = AD.data_s;
|
||||
Map->AddInfantry(&infantry);
|
||||
bchanged = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (bchanged) {
|
||||
//RedrawWindow(NULL,NULL,RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
}
|
||||
if (bchanged) {
|
||||
//RedrawWindow(NULL,NULL,RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
}
|
||||
} break;
|
||||
#ifdef SMUDGE_SUPP
|
||||
case MouseActionType::AddSmudge: {
|
||||
if (Map->GetFielddataAt(x + y * Map->GetIsoSize())->smudge >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
SMUDGE s;
|
||||
s.type = AD.data_s;
|
||||
s.x = x;
|
||||
s.y = y;
|
||||
s.deleted = 0;
|
||||
Map->AddSmudge(&s);
|
||||
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
} break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#ifdef SMUDGE_SUPP
|
||||
else if (AD.type == 8) // add smudge
|
||||
{
|
||||
|
||||
if (Map->GetFielddataAt(x + y * Map->GetIsoSize())->smudge >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
SMUDGE s;
|
||||
s.type = AD.data_s;
|
||||
s.x = x;
|
||||
s.y = y;
|
||||
s.deleted = 0;
|
||||
Map->AddSmudge(&s);
|
||||
|
||||
//RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void CIsoView::OnTimer(UINT_PTR nIDEvent)
|
||||
|
|
|
@ -116,6 +116,7 @@ protected:
|
|||
|
||||
// implementation
|
||||
protected:
|
||||
void handleMouseActionManageOverlays(int x, int y);
|
||||
|
||||
#ifdef _DEBUG
|
||||
virtual void AssertValid() const;
|
||||
|
|
|
@ -1837,7 +1837,9 @@ void CMapData::DeleteInfantry(DWORD dwIndex)
|
|||
{
|
||||
//if(dwIndex>=m_infantry.size()) MessageBox(0,"CMapData::DeleteInfantry(): Out of range error", "Error", 0);
|
||||
|
||||
if (dwIndex >= m_infantry.size()) return;
|
||||
if (dwIndex >= m_infantry.size()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// BUG TRACING HERE, FOR THE COPY INSTEAD MOVE INFANTRY BUG!
|
||||
// SOLUTION WAS IN ADDINFANTRY();
|
||||
|
@ -1845,21 +1847,23 @@ void CMapData::DeleteInfantry(DWORD dwIndex)
|
|||
//MessageBox(0,"CMapData::DeleteInfantry() called for infantry that already got deleted!", "Error",0);
|
||||
errstream << "CMapData::DeleteInfantry() called for infantry that already got deleted! Index: " << dwIndex << endl;
|
||||
errstream.flush();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_infantry[dwIndex].deleted) return;
|
||||
|
||||
|
||||
|
||||
m_infantry[dwIndex].deleted = 1;
|
||||
|
||||
int x = atoi(m_infantry[dwIndex].x);
|
||||
int y = atoi(m_infantry[dwIndex].y);
|
||||
int pos = atoi(m_infantry[dwIndex].pos);
|
||||
|
||||
if (pos > 0) pos--;
|
||||
if (pos > 0) {
|
||||
pos--;
|
||||
}
|
||||
|
||||
if (x + y * m_IsoSize < fielddata_size) fielddata[x + y * m_IsoSize].infantry[pos] = -1;
|
||||
if (x + y * m_IsoSize < fielddata_size) {
|
||||
fielddata[x + y * m_IsoSize].infantry[pos] = -1;
|
||||
}
|
||||
|
||||
Mini_UpdatePos(x, y, IsMultiplayer());
|
||||
|
||||
|
@ -1919,7 +1923,9 @@ void CMapData::DeleteCelltag(DWORD dwIndex)
|
|||
|
||||
void CMapData::DeleteUnit(DWORD dwIndex)
|
||||
{
|
||||
if (dwIndex >= GetUnitCount()) return;
|
||||
if (dwIndex >= GetUnitCount()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto const& pSec = m_mapfile.TryGetSection("Units");
|
||||
ASSERT(pSec != nullptr);
|
||||
|
@ -2074,14 +2080,14 @@ BOOL CMapData::AddWaypoint(CString id, DWORD dwPos)
|
|||
|
||||
|
||||
|
||||
void CMapData::GetStructureData(DWORD dwIndex, STRUCTURE* lpStructure) const
|
||||
CString CMapData::GetStructureData(DWORD dwIndex, STRUCTURE* lpStructure) const
|
||||
{
|
||||
auto const& section = m_mapfile.GetSection("Structures");
|
||||
if (dwIndex >= section.Size()) {
|
||||
return;
|
||||
return {};
|
||||
}
|
||||
|
||||
auto const& data = section.Nth(dwIndex).second;
|
||||
auto const& [id, data] = section.Nth(dwIndex);
|
||||
|
||||
lpStructure->house = GetParam(data, 0);
|
||||
lpStructure->type = GetParam(data, 1);
|
||||
|
@ -2101,6 +2107,7 @@ void CMapData::GetStructureData(DWORD dwIndex, STRUCTURE* lpStructure) const
|
|||
lpStructure->flag3 = GetParam(data, 15);
|
||||
lpStructure->flag4 = GetParam(data, 16);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
void CMapData::GetStdStructureData(DWORD dwIndex, STDOBJECTDATA* lpStdStructure) const
|
||||
|
@ -2164,8 +2171,9 @@ BOOL CMapData::AddInfantry(INFANTRY* lpInfantry, LPCTSTR lpType, LPCTSTR lpHouse
|
|||
dwPos = atoi(infantry.x) + atoi(infantry.y) * Map->GetIsoSize();
|
||||
|
||||
// MW Bugfix: not checking if infantry.pos does already exist caused crashes with user scripts!
|
||||
if (GetInfantryAt(dwPos, atoi(infantry.pos)) >= 0)
|
||||
if (GetInfantryAt(dwPos, atoi(infantry.pos)) >= 0) {
|
||||
infantry.pos = "-1";
|
||||
}
|
||||
} else {
|
||||
char cx[10], cy[10];
|
||||
itoa(dwPos % Map->GetIsoSize(), cx, 10);
|
||||
|
@ -2195,9 +2203,9 @@ BOOL CMapData::AddInfantry(INFANTRY* lpInfantry, LPCTSTR lpType, LPCTSTR lpHouse
|
|||
int subpos = -1;
|
||||
int i;
|
||||
|
||||
if (GetInfantryCountAt(dwPos) == 0)
|
||||
if (GetInfantryCountAt(dwPos) == 0) {
|
||||
subpos = 0;
|
||||
else {
|
||||
} else {
|
||||
int oldInf = GetInfantryAt(dwPos, 0);
|
||||
if (oldInf > -1) {
|
||||
INFANTRY inf;
|
||||
|
@ -2229,7 +2237,9 @@ BOOL CMapData::AddInfantry(INFANTRY* lpInfantry, LPCTSTR lpType, LPCTSTR lpHouse
|
|||
}
|
||||
}
|
||||
|
||||
if (subpos < 0) return FALSE;
|
||||
if (subpos < 0) {
|
||||
return FALSE;
|
||||
}
|
||||
char c[50];
|
||||
itoa(subpos, c, 10);
|
||||
|
||||
|
@ -2267,36 +2277,43 @@ BOOL CMapData::AddInfantry(INFANTRY* lpInfantry, LPCTSTR lpType, LPCTSTR lpHouse
|
|||
// below code should be much more compatible to the very old code (the direct ini one)
|
||||
|
||||
int sp = atoi(infantry.pos);
|
||||
if (sp > 0) sp--;
|
||||
if (sp > 0) {
|
||||
sp--;
|
||||
}
|
||||
|
||||
int i;
|
||||
BOOL bFound = FALSE;
|
||||
if (suggestedIndex >= 0 && suggestedIndex < m_infantry.size()) {
|
||||
// reuse slot
|
||||
if (m_infantry[suggestedIndex].deleted) {
|
||||
m_infantry[suggestedIndex] = infantry;
|
||||
if (dwPos < fielddata_size) fielddata[dwPos].infantry[sp] = suggestedIndex;
|
||||
if (dwPos < fielddata_size) {
|
||||
fielddata[dwPos].infantry[sp] = suggestedIndex;
|
||||
}
|
||||
bFound = TRUE;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (!bFound)
|
||||
if (!bFound) {
|
||||
for (i = 0; i < m_infantry.size(); i++) {
|
||||
if (m_infantry[i].deleted) // yep, found one, replace it
|
||||
{
|
||||
// yep, found one, replace it
|
||||
if (m_infantry[i].deleted) {
|
||||
m_infantry[i] = infantry;
|
||||
if (dwPos < fielddata_size) fielddata[dwPos].infantry[sp] = i;
|
||||
if (dwPos < fielddata_size) {
|
||||
fielddata[dwPos].infantry[sp] = i;
|
||||
}
|
||||
bFound = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!bFound) {
|
||||
m_infantry.push_back(infantry);
|
||||
if (dwPos < fielddata_size) fielddata[dwPos].infantry[sp] = m_infantry.size() - 1;
|
||||
if (dwPos < fielddata_size) {
|
||||
fielddata[dwPos].infantry[sp] = m_infantry.size() - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -2332,10 +2349,10 @@ BOOL CMapData::AddStructure(STRUCTURE* lpStructure, LPCTSTR lpType, LPCTSTR lpHo
|
|||
}
|
||||
|
||||
|
||||
CString id = GetFree("Structures");
|
||||
CString id = suggestedID;
|
||||
|
||||
if (!suggestedID.IsEmpty() && !m_mapfile["Structures"].Exists(suggestedID)) {
|
||||
id = suggestedID;
|
||||
if (suggestedID.IsEmpty() || m_mapfile["Structures"].Exists(suggestedID)) {
|
||||
id = GetFree("Structures");
|
||||
}
|
||||
|
||||
CString value;
|
||||
|
@ -2344,7 +2361,8 @@ BOOL CMapData::AddStructure(STRUCTURE* lpStructure, LPCTSTR lpType, LPCTSTR lpHo
|
|||
structure.flag2 + "," + structure.energy + "," + structure.upgradecount + "," + structure.spotlight + ","
|
||||
+ structure.upgrade1 + "," + structure.upgrade2 + "," + structure.upgrade3 + "," + structure.flag3 + "," + structure.flag4;
|
||||
|
||||
m_mapfile.SetString("Structures", id, value);
|
||||
auto& section = m_mapfile.AddSection("Structures");
|
||||
section.InsertOrAssign(id, value);
|
||||
|
||||
if (!m_noAutoObjectUpdate) {
|
||||
UpdateStructures(FALSE);
|
||||
|
@ -2425,7 +2443,9 @@ void CMapData::GetInfantryData(DWORD dwIndex, INFANTRY* lpInfantry) const
|
|||
{
|
||||
ASSERT(dwIndex < m_infantry.size());
|
||||
|
||||
if (dwIndex >= m_infantry.size()) return;
|
||||
if (dwIndex >= m_infantry.size()) {
|
||||
return;
|
||||
}
|
||||
|
||||
/*lpInfantry->house=m_infantry.house;
|
||||
lpInfantry->type=m_infantry.;
|
||||
|
@ -2441,7 +2461,7 @@ void CMapData::GetInfantryData(DWORD dwIndex, INFANTRY* lpInfantry) const
|
|||
lpInfantry->flag3=m_infantry.;
|
||||
lpInfantry->flag4=m_infantry.;
|
||||
lpInfantry->flag5=m_infantry.;*/
|
||||
* lpInfantry = m_infantry[dwIndex];
|
||||
*lpInfantry = m_infantry[dwIndex];
|
||||
|
||||
//memcpy(lpInfantry, &m_infantry[dwIndex], sizeof(INFANTRY));
|
||||
|
||||
|
@ -2470,14 +2490,14 @@ void CMapData::GetInfantryData(DWORD dwIndex, INFANTRY* lpInfantry) const
|
|||
|
||||
}
|
||||
|
||||
void CMapData::GetUnitData(DWORD dwIndex, UNIT* lpUnit) const
|
||||
CString CMapData::GetUnitData(DWORD dwIndex, UNIT* lpUnit) const
|
||||
{
|
||||
auto const& section = m_mapfile.GetSection("Units");
|
||||
if (dwIndex >= section.Size()) {
|
||||
return;
|
||||
return {};
|
||||
}
|
||||
|
||||
auto const& data = section.Nth(dwIndex).second;
|
||||
auto const& [id, data] = section.Nth(dwIndex);
|
||||
|
||||
lpUnit->house = GetParam(data, 0);
|
||||
lpUnit->type = GetParam(data, 1);
|
||||
|
@ -2493,16 +2513,18 @@ void CMapData::GetUnitData(DWORD dwIndex, UNIT* lpUnit) const
|
|||
lpUnit->flag4 = GetParam(data, 11);
|
||||
lpUnit->flag5 = GetParam(data, 12);
|
||||
lpUnit->flag6 = GetParam(data, 13);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
void CMapData::GetAircraftData(DWORD dwIndex, AIRCRAFT* lpAircraft) const
|
||||
CString CMapData::GetAircraftData(DWORD dwIndex, AIRCRAFT* lpAircraft) const
|
||||
{
|
||||
auto const& section = m_mapfile.GetSection("Aircraft");
|
||||
if (dwIndex >= section.Size()) {
|
||||
return;
|
||||
return {};
|
||||
}
|
||||
|
||||
auto const& data = section.Nth(dwIndex).second;
|
||||
auto const& [id, data] = section.Nth(dwIndex);
|
||||
|
||||
lpAircraft->house = GetParam(data, 0);
|
||||
lpAircraft->type = GetParam(data, 1);
|
||||
|
@ -2516,6 +2538,8 @@ void CMapData::GetAircraftData(DWORD dwIndex, AIRCRAFT* lpAircraft) const
|
|||
lpAircraft->group = GetParam(data, 9);
|
||||
lpAircraft->flag3 = GetParam(data, 10);
|
||||
lpAircraft->flag4 = GetParam(data, 11);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
BOOL CMapData::AddCelltag(LPCTSTR lpTag, DWORD dwPos)
|
||||
|
@ -2583,10 +2607,10 @@ BOOL CMapData::AddAircraft(AIRCRAFT* lpAircraft, LPCTSTR lpType, LPCTSTR lpHouse
|
|||
aircraft.flag4 = "0";
|
||||
}
|
||||
|
||||
CString id = GetFree("Aircraft");
|
||||
CString id = suggestedID;
|
||||
|
||||
if (!suggestedID.IsEmpty() && !m_mapfile["Aircraft"].Exists(suggestedID)) {
|
||||
id = suggestedID;
|
||||
if (suggestedID.IsEmpty() || m_mapfile["Aircraft"].Exists(suggestedID)) {
|
||||
id = GetFree("Aircraft");
|
||||
}
|
||||
|
||||
CString value;
|
||||
|
@ -2594,7 +2618,7 @@ BOOL CMapData::AddAircraft(AIRCRAFT* lpAircraft, LPCTSTR lpType, LPCTSTR lpHouse
|
|||
aircraft.x + "," + aircraft.direction + "," + aircraft.action + "," + aircraft.tag + ","
|
||||
+ aircraft.flag1 + "," + aircraft.group + "," + aircraft.flag3 + "," + aircraft.flag4;
|
||||
|
||||
m_mapfile.SetString("Aircraft", id, value);
|
||||
m_mapfile.AddSection("Aircraft").InsertOrAssign(id, value);
|
||||
|
||||
if (!m_noAutoObjectUpdate) {
|
||||
UpdateAircraft(FALSE);
|
||||
|
@ -2631,10 +2655,10 @@ BOOL CMapData::AddUnit(UNIT* lpUnit, LPCTSTR lpType, LPCTSTR lpHouse, DWORD dwPo
|
|||
|
||||
}
|
||||
|
||||
CString id = GetFree("Units");
|
||||
CString id = suggestedID;
|
||||
|
||||
if (!suggestedID.IsEmpty() && !m_mapfile["Units"].Exists(suggestedID)) {
|
||||
id = suggestedID;
|
||||
if (suggestedID.IsEmpty() || m_mapfile["Units"].Exists(suggestedID)) {
|
||||
id = GetFree("Units");
|
||||
}
|
||||
|
||||
CString value;
|
||||
|
@ -2642,7 +2666,7 @@ BOOL CMapData::AddUnit(UNIT* lpUnit, LPCTSTR lpType, LPCTSTR lpHouse, DWORD dwPo
|
|||
unit.x + "," + unit.direction + "," + unit.action + "," + unit.tag + ","
|
||||
+ unit.flag1 + "," + unit.group + "," + unit.flag3 + "," + unit.flag4 + "," + unit.flag5 + "," + unit.flag6;
|
||||
|
||||
m_mapfile.SetString("Units", id, value);
|
||||
m_mapfile.AddSection("Units").InsertOrAssign(id, value);
|
||||
|
||||
if (!m_noAutoObjectUpdate) {
|
||||
UpdateUnits(FALSE);
|
||||
|
|
|
@ -251,8 +251,8 @@ public:
|
|||
BOOL AddAircraft(AIRCRAFT* lpAircraft, LPCTSTR lpType = NULL, LPCTSTR lpHouse = NULL, DWORD dwPos = 0, CString suggestedID = "");
|
||||
void GetCelltagData(DWORD dwIndex, CString* lpTag, DWORD* lpdwPos) const;
|
||||
BOOL AddCelltag(LPCTSTR lpTag, DWORD dwPos);
|
||||
void GetAircraftData(DWORD dwIndex, AIRCRAFT* lpAircraft) const;
|
||||
void GetUnitData(DWORD dwIndex, UNIT* lpUnit) const;
|
||||
CString GetAircraftData(DWORD dwIndex, AIRCRAFT* lpAircraft) const;
|
||||
CString GetUnitData(DWORD dwIndex, UNIT* lpUnit) const;
|
||||
void GetInfantryData(DWORD dwIndex, INFANTRY* lpInfantry) const;
|
||||
void GetStdInfantryData(DWORD dwIndex, STDOBJECTDATA* lpStdInfantry) const;
|
||||
INT GetUnitTypeID(LPCTSTR lpType);
|
||||
|
@ -261,7 +261,7 @@ public:
|
|||
BOOL AddInfantry(INFANTRY* lpInfantry, LPCTSTR lpType = NULL, LPCTSTR lpHouse = NULL, DWORD dwPos = 0, int suggestedIndex = -1);
|
||||
BOOL AddNode(NODE* lpNode, WORD dwPos);
|
||||
void GetStdStructureData(DWORD dwIndex, STDOBJECTDATA* lpStdStructure) const;
|
||||
void GetStructureData(DWORD dwIndex, STRUCTURE* lpStructure) const;
|
||||
CString GetStructureData(DWORD dwIndex, STRUCTURE* lpStructure) const;
|
||||
BOOL AddWaypoint(CString lpID, DWORD dwPos);
|
||||
|
||||
void DeleteNode(LPCTSTR lpHouse, DWORD dwIndex);
|
||||
|
|
|
@ -34,6 +34,16 @@
|
|||
|
||||
class MapTool;
|
||||
|
||||
enum class MouseActionType : unsigned {
|
||||
AddInfantry = 1,
|
||||
AddStructure = 2,
|
||||
AddAircraft = 3,
|
||||
AddVehicle = 4,
|
||||
AddTerrain = 5,
|
||||
ManageOverlay = 6,
|
||||
ChangeOwner = 7,
|
||||
AddSmudge = 8,
|
||||
};
|
||||
|
||||
enum class TheaterChar : char
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue