forked from freeciv/freeciv-web
-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO
99 lines (93 loc) · 5.2 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
TODO:
-----
Current TODO-list in prioritized order here:
- Bugs are often reported to Freeciv-web on Github here: https://github.com/freeciv/freeciv-web/issues - any fixes to these bugs is very welcome. Some of the bugs are also well suited for new developers interested in contributing to Freeciv-web.
Basically you can help improve Freeciv-web in any way you like, as long at it actually makes the game better! Other things to improve there:
Unimplemented Freeciv client features:
- action selection dialog pops up and down based on unit focus rather than
opening all at once.
- the Freeciv C clients give units that wants an action decision higher
priority in the unit focus queue. This keeps player decisions fast.
- makes turn change less confusing when many units on a goto reaches their
targets.
- gives the user freedom to delay a response without losing the reminder.
- open action selection dialogs are stored in save games.
- action selection dialogs are based on more up to date information.
(Since it asks right before showing the dialog)
- Implementation hints:
- a unit's request for the player to chose an action is stored in its
fields action_decision_want and action_decision_tile.
- action_decision_want tells if an action decision is wanted and if it
was caused by the unit being moved inside a transport
(ACT_DEC_PASSIVE) or by the unit itself moving (ACT_DEC_ACTIVE). It is
defined and explained in fc_types.js
- action_decision_tile is the tile the unit wonders what to do to.
- a unit's request for the player to chose an action can be set by the
server based on unit movement or by the client via
PACKET_UNIT_SSCS_SET(unit_id, type, value) where type is USSDT_QUEUE
like key_unit_action_select() does.
- once the player has made a decision (deciding not to act by pressing
cancel is a decision too) the client must ask the server to clear the
unit's action_decision_want by sending a USSDT_UNQUEUE typed
PACKET_UNIT_SSCS_SET(unit_id, type, value).
- the action selection dialog lives in action_dialog.js. It has recently
become less repetitive. This should make it easier to send
PACKET_UNIT_SSCS_SET with USSDT_UNQUEUE on all user choices.
- when a client sends a PACKET_UNIT_GET_ACTIONS(actor_unit_id,
target_unit_id, target_tile_id, disturb_player) the
server will respond with the information needed for the action
selection dialog in a PACKET_UNIT_ACTIONS.
- the current situation is that the Freeciv-web client sends a
PACKET_UNIT_GET_ACTIONS as soon as a unit's action decision state
changes and the new state wants a decision. (See
unit_actor_wants_input() and process_diplomat_arrival()) Multiple
action selection dialogs will hide behind each other.
- the current situation is that the Freeciv-web client clears the action
decision as soon as an action selection dialog is received. (See
handle_unit_actions())
- in Freeciv C clients a PACKET_UNIT_GET_ACTIONS is sent when a unit
gets focus OR when a unit already in focus changes action decision
state to one that wants a decision.
- Freeciv's common/networking/packets.def has up to date packet field
info.
- the popup_attack_actions client setting (so attack pop up can be avoided)
- global work lists
- advanced unit selection
- rearranging items in the city production worklist
- Maybe allow rearranging items by drag and drop?
- the cities tab
- the auto generated part of the help texts
- the code is big (it also refers to other Freeciv C code)
- "just rewrite the code in JavaScript"
- would be much work
- keeping it updated as the corresponding code changes in Freeciv would be a nightmare
- high probability of it ending up telling lies
- parts of the freeciv-manual output is now marked. This makes it more
machine readable.
- have freeciv-manual output more auto generated help texts in a form
Freeciv-web can use.
- between turns timer count down
Unimplemented rule variation support:
- The topology server setting
The Freeciv-web client can only display the TF_WRAPX and the non wrapping
topology. Isometric, hex and WRAP_Y maps are unsupported.
Testing: to test new topology support the Freeciv server must be changed.
Open server/settings.c. Find topology_callback(). Remove the blocking of
the toplogy you are working to support.
- The ID of certain extras are hard coded.
- EXTRA_NONE isn't from the ruleset. There is no need to do anything about
it.
- replace the hard coded drawing code with code that draws the extra as
specified by the tileset Freeciv-web extracts from and by the extra
related packages the server sends.
- replace the hard coded control code. Maybe delay this part until unit
activities to becomes action enabler controlled?
- The graphic tags of certain extras are hard coded.
- Wikipedia help is only extracted for items that appear in the classic
ruleset.
- Freeciv-web has no client side effect evaluation.
- Building_Build_Cost_Pct doesn't work.
- Unit_Build_Cost_Pct doesn't work.
Simplify Freeciv server upgrade:
- get rid of the worst merge conflict causes
- freeciv_web_all_packets_def_changes: