Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -726,6 +726,7 @@ This page lists all the individual contributions to the project by their author.
- Fix the bug where landing direction cannot be correctly converted when set to a value exceeding 256
- Separately define the global default values of TerrainTypes' `IsPassable` and `CanBeBuiltOn` based on `SpawnsTiberium`
- Remove the restriction that prohibits InfantryTypes from using the InitialPayload logic
- Disable AlphaImage during Buildup
- **Ollerus**:
- Build limit group enhancement
- Customizable rocker amplitude
Expand Down
13 changes: 13 additions & 0 deletions docs/Fixed-or-Improved-Logics.md
Original file line number Diff line number Diff line change
Expand Up @@ -1323,6 +1323,19 @@ StartFacing.Random= ; boolean, defaults to [General] -> BuildingSt
Unlike the identically named INI flag in Tiberian Sun, this flag uses a 256-point circle rather than an 8-point circle.
```

### Disable AlphaImage during Buildup

- Now you can disable AlphaImage before the building is completed.

In `rulesmd.ini`:
```ini
[AudioVisual]
NoAlphaImageOnBuildup=false ; boolean

[SOMEBUILDING] ; BuildingType
NoAlphaImageOnBuildup= ; boolean, defaults to [AudioVisual] -> NoAlphaImageOnBuildup
```

### Disable `DamageSound`

- Now you can disable `DamageSound` of a building.
Expand Down
1 change: 1 addition & 0 deletions docs/Whats-New.md
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@ HideShakeEffects=false ; boolean
- Separately define the global default values of TerrainTypes' `IsPassable` and `CanBeBuiltOn` based on `SpawnsTiberium` (by Noble_Fish)
- Customize reveal radius of `RevealToAll` (by NetsuNegi)
- [Customize whether aircraft is a cargo plane](Fixed-or-Improved-Logics.md#customize-whether-aircraft-is-a-cargo-plane) (by TaranDahl)
- [Disable AlphaImage during Buildup](Fixed-or-Improved-Logics.md#disable-alphaimage-during-buildup) (by Noble_Fish)

#### Vanilla fixes:
- Fixed sidebar not updating queued unit numbers when adding or removing units when the production is on hold (by CrimRecya)
Expand Down
2 changes: 2 additions & 0 deletions src/Ext/BuildingType/Body.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@ void BuildingTypeExt::LoadFromINIFile(CCINIClass* const pINI)
this->Units_UseRepairCost.Read(exINI, pSection, "Units.UseRepairCost");

this->NoBuildAreaOnBuildup.Read(exINI, pSection, "NoBuildAreaOnBuildup");
this->NoAlphaImageOnBuildup.Read(exINI, pSection, "NoAlphaImageOnBuildup");
this->Adjacent_Allowed.Read(exINI, pSection, "Adjacent.Allowed");
this->Adjacent_Disallowed.Read(exINI, pSection, "Adjacent.Disallowed");
this->Adjacent_Disallowed_Prohibit.Read(exINI, pSection, "Adjacent.Disallowed.Prohibit");
Expand Down Expand Up @@ -408,6 +409,7 @@ void BuildingTypeExt::Serialize(T& Stm)
.Process(this->Units_RepairPercent)
.Process(this->Units_UseRepairCost)
.Process(this->NoBuildAreaOnBuildup)
.Process(this->NoAlphaImageOnBuildup)
.Process(this->Adjacent_Allowed)
.Process(this->Adjacent_Disallowed)
.Process(this->Adjacent_Disallowed_Prohibit)
Expand Down
2 changes: 2 additions & 0 deletions src/Ext/BuildingType/Body.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ class BuildingTypeExt final : public TechnoTypeExt
Nullable<bool> Units_UseRepairCost;

Valueable<bool> NoBuildAreaOnBuildup;
Nullable<bool> NoAlphaImageOnBuildup;
ValueableVector<BuildingTypeClass*> Adjacent_Allowed;
ValueableVector<BuildingTypeClass*> Adjacent_Disallowed;
Valueable<bool> Adjacent_Disallowed_Prohibit;
Expand Down Expand Up @@ -188,6 +189,7 @@ class BuildingTypeExt final : public TechnoTypeExt
, Units_RepairPercent {}
, Units_UseRepairCost {}
, NoBuildAreaOnBuildup { false }
, NoAlphaImageOnBuildup {}
, Adjacent_Allowed {}
, Adjacent_Disallowed {}
, Adjacent_Disallowed_Prohibit { false }
Expand Down
3 changes: 3 additions & 0 deletions src/Ext/Rules/Body.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -590,6 +590,8 @@ void RulesExt::ExtData::LoadBeforeTypeData(RulesClass* pThis, CCINIClass* pINI)
this->PoseDir_Production.Read(exINI, GameStrings::AudioVisual, "PoseDir.Production");
this->PoseDir_Field.Read(exINI, GameStrings::AudioVisual, "PoseDir.Field");

this->NoAlphaImageOnBuildup.Read(exINI, GameStrings::AudioVisual, "NoAlphaImageOnBuildup");

// Section AITargetTypes
int itemsCount = pINI->GetKeyCount("AITargetTypes");
for (int i = 0; i < itemsCount; ++i)
Expand Down Expand Up @@ -1058,6 +1060,7 @@ void RulesExt::ExtData::Serialize(T& Stm)
.Process(this->AircraftDockingDir_DefaultToPoseDir)
.Process(this->PoseDir_Production)
.Process(this->PoseDir_Field)
.Process(this->NoAlphaImageOnBuildup)
;
}

Expand Down
4 changes: 4 additions & 0 deletions src/Ext/Rules/Body.h
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,8 @@ class RulesExt
Nullable<int> PoseDir_Production;
Nullable<int> PoseDir_Field;

Valueable<bool> NoAlphaImageOnBuildup;

ExtData(RulesClass* OwnerObject) : Extension<RulesClass>(OwnerObject)
, Storage_TiberiumIndex { -1 }
, HarvesterDumpAmount { 0.0f }
Expand Down Expand Up @@ -980,6 +982,8 @@ class RulesExt
, AircraftDockingDir_DefaultToPoseDir{ true }
, PoseDir_Production {}
, PoseDir_Field{}

, NoAlphaImageOnBuildup { false }
{ }

virtual ~ExtData() = default;
Expand Down
12 changes: 10 additions & 2 deletions src/Misc/Hooks.AlphaImage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,16 @@ static void __fastcall UpdateAlphaShape(ObjectClass* pSource)

const auto pBuilding = abstract_cast<BuildingClass*, true>(pSource);

if (pBuilding && !inactive && pBuilding->GetCurrentMission() != Mission::Construction)
inactive |= !pBuilding->IsPowerOnline() || BuildingExt::Fetch(pBuilding)->LimboID != -1;
if (pBuilding && !inactive)
{
if (pBuilding->GetCurrentMission() == Mission::Construction)
{
if (BuildingTypeExt::Fetch(pBuilding->Type)->NoAlphaImageOnBuildup.Get(RulesExt::Global()->NoAlphaImageOnBuildup))
inactive = true;
Comment thread
Coronia marked this conversation as resolved.
Outdated
}
else // Buildup phase has ended
inactive |= !pBuilding->IsPowerOnline() || BuildingExt::Fetch(pBuilding)->LimboID != -1;
}

auto& alphaExt = *AresFunctions::AlphaExtMap;

Expand Down
Loading