This all sounds good, i agree with your conclusion wrt data structures
vs config.

I'll post a few comments about the data structures themselves

note that these are general comments on some things you might not have
thought of yet, or not put in your diagram for simplification purpose.
If that the case, that's perfectly fine just tell me so

PlannedActionSet
* to have a getChanges, you need to somehow know "since when" either
as a param to getChange or an internal data from the
Planned ActionSet => this is probably a "not looking at the details of
network management yet" problem, and I totally agree with that
* std::vectors have much more than just get and set actions, stuff
like iterators are very handy... will the internal vector be exposed ?
or do you plan to reimplemnt the iterator routines (drawing will need
to iterate on the vector) an other way to do it would be to inherit
from vector instead of having an internal one (or simply use a vector
without any wrapping if none is needed)

ConflictSet
*same question about std::vector

Planned*
*you probably want an inherited draw() routine rather than all sorts
of drawGhost,drawPath, thus you would just have to iterate on the
PlannedActionSet to do the drawing. This draw will probably take a hex
as parameter (the hex to redraw) (just mentionning that last point
since you havn't put your function params in)
*related : some of your classes should probably contain some cached
pathfinding results
*i'm at work so I can't check, but if units contain their own
position, you don't need to store the start position on a move
*if they don't contain their start position, then you should probably
store the targeted hex in the PlannedAttack rather than the targeted
unit (maybe both)

Conflict
* I assume that "type" will become an enum at some point, once we have
a good idea of all the types of conflict. Will their be some class
hierarchy of conflict types ?


SMALL CODING TASK : MULTIPLE FAKE UNITS
this is a task that you will need, which is independant of your
project, and that you can commit directly to mainline once done. It
will also help you get familiar with the display engine

The game has a hard limit of one and only one unit per hex.

However, there are cases where we need to draw more than one unit in a
given hex (typically when a unit moves through an occupied hex) To do
that, the display engine (in the display or game_display class, i'm
not sure) keeps a unit object and a location object, which represent
the "fake unit" it basically says "there is an extra unit in hex XX"

the problem is that the engine directly keeps a single unit that way,
which means that there can only be a single fake unit

With your ghosted units, you will need to draw more than one of these
units, so your task is to allow the engine to have multiple such
units, probably using a set of pair<unit,loc> or something like that

keep in mind that you will need a "key" to somehow allow people to
find their fake unit within the multiple units

we'll discuss this whenever we meet on IRC, but you can have a look right away

_______________________________________________
Wesnoth-dev mailing list
Wesnoth-dev@gna.org
https://mail.gna.org/listinfo/wesnoth-dev

Reply via email to