This commit is contained in:
2025-02-20 19:08:50 +03:30
parent 195276c221
commit 627e9c4706
4 changed files with 733 additions and 57 deletions
@@ -1908,7 +1908,7 @@ void SortZones(
if (!hasLast)
{
//
idx = GetYoungest(source);
idx = GetOldest(source);
hasLast = IsValidIndex(idx);
if (hasLast)
{
@@ -1923,7 +1923,7 @@ void SortZones(
//
Add(
last,
source //
tmpItems //
);
}
@@ -1946,7 +1946,7 @@ void SortZones(
//
T *item = NULL;
idx = GetYoungest(source);
idx = GetOldest(source);
has = IsValidIndex(idx);
if (!has)
{
@@ -3548,7 +3548,7 @@ void Sort(
if (!hasLast)
{
//
idx = GetYoungest(source);
idx = GetOldest(source);
hasLast = IsValidIndex(idx);
if (hasLast)
{
@@ -3563,7 +3563,7 @@ void Sort(
//
AddRef(
last,
source //
tmpItems //
);
}
@@ -3580,13 +3580,13 @@ void Sort(
if (!hasLast)
{
//
ZeroMemory(last);
last.Clean();
break;
}
//
XOBFVG item;
idx = GetYoungest(source);
idx = GetOldest(source);
has = IsValidIndex(idx);
if (!has)
{
+190
View File
@@ -6639,6 +6639,196 @@ struct XOBFVG
return result;
}
//
void UpdateZones(
XPOIState &state //
)
{
//
Clean(supplyZones);
Clean(demandZones);
Clean(supportZones);
Clean(resistanceZones);
//
bool isValid =
IsValid() &&
state.HasChild();
if (!isValid)
{
return;
}
//
int count = 0;
bool has = false;
bool isPassed = false;
//
// Supply Zones ...
has = state.HasSupplyZones();
if (has)
{
//
count = state.CountSupplyZones();
for (int i = 0; i < count; i++)
{
//
XCSupplyZone *iZone = state.supplyZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
supplyZones //
);
}
}
//
// Demand Zones ...
has = state.HasDemandZones();
if (has)
{
//
count = state.CountDemandZones();
for (int i = 0; i < count; i++)
{
//
XCDemandZone *iZone = state.demandZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
demandZones //
);
}
}
//
// Support Zones ...
has = state.HasSupportZones();
if (has)
{
//
count = state.CountSupportZones();
for (int i = 0; i < count; i++)
{
//
XCSupportZone *iZone = state.supportZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
supportZones //
);
}
}
//
// Resistance Zones ...
has = state.HasResistanceZones();
if (has)
{
//
count = state.CountResistanceZones();
for (int i = 0; i < count; i++)
{
//
XCResistanceZone *iZone = state.resistanceZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
resistanceZones //
);
}
}
}
//
void UpdateTo(datetime value = NULL)
{