[Community Project] Real Time Strategy Game. NEW MODELS AVAILABLE. SEE POST #1

@:
is the difference between different themes

City Building: The aim is to build a city, its transportation, roads… You most likely play as the mayor or something.
Civilization: You start as a group of tribal people. YOu will then invest in research, military… to advance your technology, population, territory… Almost like Civilization Games
Government: You will be controlling an entire country. Like City builder, you have the options to build infrastructure, make trade… But main focus is on governance, ie policy making, diplomacy… A prime example will be Tropico
War: This is something you all know
Tower Defence: ditto

About Construction system:

I am still working on it. But I think I will be able to post a video by sunday. And I 'm afraid I wont be able to devote as much time as I want on this project for several weeks. We have started working on a new project where I work and I am very very busy these days. But I will be free on weekends and contribute as much as I can. So even if I cannot finish the construction system by myself, I will push it to git so you guys can work on it

Anyway I need your opinion on the design. Currently I am at crossroads and confused which way to go:
As I’ve said in a previous post, the class ConstructionProxy is responsible for everything from a building is queued until it is created. But there are two possible ways to implement it:

  1. Create a generic ConstructionProxy class, that accepts Transform, WorkHours… and additionally an array of structs that define the stages. Each element in the array is a struct and will have the following fields:

float Percentage (at what percentage of construction should we switch to next stage)
StaticMesh Mesh (the mesh to use at this stage)
Material Material (material to apply)
SoundCue Audio (the audio to play during this stage)
ParticleSystem Particle (the particle that will be used during this stage)
SoundCue TransitionAudio (the audio that will be played when transitioning to next stage)
particleSystem TransitionParticle (particle system that will be used during the transition to next stage)

So when you queue up a new construction, you will create an array with various stages and pass it along. The Proxy class will use it during the construction time. So there is only a single ConstructionProxy class. You will create instances of it and configure each instance differently.

  1. Create a ConstructionProxy class per building class. The Building class should have the name of the ConstructionProxy class as a member. How the ConstructionProxy works can be fully changed by extending it. The base class will be very similar to the generic ConstructionProxy class described previously. However the array of structs will be defined within the class using default properties instead of providing it at runtime. If you dont want a multi stage construction prxy and instead need something taht generates geometry procedurely or control transparency, you can do that. But we need one ConstructionProxy class per Building.

If you are defining buildings using XL files… then method 1 is better. However if all buildings are hardcoded classes, then I think method 2 is the way to go

So what do you guys think?