Mostly planning

This commit is contained in:
Kayne Ruse
2014-05-16 02:05:52 +10:00
parent f0453375c4
commit b1d6e5a314
4 changed files with 74 additions and 5 deletions
+12 -3
View File
@@ -38,9 +38,8 @@ struct CharacterData {
int mapIndex = 0; int mapIndex = 0;
Vector2 position = {0.0,0.0}; Vector2 position = {0.0,0.0};
Vector2 motion = {0.0,0.0}; Vector2 motion = {0.0,0.0};
BBox bbox = {0,0,0,0};
//statistics //base statistics
int level = 0; int level = 0;
int exp = 0; int exp = 0;
int maxHP = 0; int maxHP = 0;
@@ -55,7 +54,17 @@ struct CharacterData {
float evasion = 0.0; float evasion = 0.0;
float luck = 0.0; float luck = 0.0;
//TODO: equipment and items //TODO: equipment
//TODO: items
//TODO: buffs
//TODO: debuffs
//active gameplay members
//NOTE: these are lost when unloaded
BBox bbox = {0,0,0,0};
bool inCombat = false;
int atbGauge = 0;
//TODO: stored command
}; };
#endif #endif
+7
View File
@@ -28,6 +28,13 @@
#include <list> #include <list>
struct CombatInstance { struct CombatInstance {
//TODO: metadata
//world position
int mapIndex = 0;
Vector2 position = {0.0,0.0};
Vector2 motion = {0.0,0.0};
std::list<CharacterData*> characterList; std::list<CharacterData*> characterList;
std::list<EnemyData> enemyList; std::list<EnemyData> enemyList;
+10 -2
View File
@@ -29,8 +29,6 @@ struct EnemyData {
std::string handle; std::string handle;
std::string avatar; std::string avatar;
//TODO: attached lua scripts
//statistics //statistics
int level = 0; int level = 0;
int exp = 0; int exp = 0;
@@ -45,6 +43,16 @@ struct EnemyData {
float accuracy = 0.0; float accuracy = 0.0;
float evasion = 0.0; float evasion = 0.0;
float luck = 0.0; float luck = 0.0;
//TODO: equipment
//TODO: items
//TODO: buffs
//TODO: debuffs
//active gameplay members
//NOTE: these are lost when unloaded
int tableIndex;
int atbGauge = 0;
}; };
#endif #endif
+45
View File
@@ -1,6 +1,7 @@
* I need to keep the documentation up to date. Namely, the GDD is getting out of date. * I need to keep the documentation up to date. Namely, the GDD is getting out of date.
* How many lookups is the map system using? * How many lookups is the map system using?
* Add the serial packet to the network utility * Add the serial packet to the network utility
* I completely forgot about status ailments
--Naming conventions-- --Naming conventions--
@@ -38,3 +39,47 @@ Room:
EnemyFactory enemyFactory --this takes information on the room's data early in the room's construction EnemyFactory enemyFactory --this takes information on the room's data early in the room's construction
list<CombatInstance> list<CombatInstance>
--Requirements--
The enemies need AI scripts
The scripts need to be able to generate other enemies (frog king).
The characters need a flag to show if they're in a combat instance or not, to signify of they should be unloaded client-side
On each game loop, the server should envoke each combat instance's update function
Each combat instance invokes each enemy's and character's update functions
These update functions increase the ATB guagues
if an ATB guage is full
than the stored command is executed
the players issue their commands during the build up
if there isn't a command ready, then the player is still choosing
for the enemies, the stored commands are driven by scripts, so when the enemies need to attack, their attached scripts are called.
after the commands are called, the ATB is reset to 0.
etc...
--Enemy Tables--
enemyTables: The global store of enemy tables. Only accessed by C++ code (unless you want to break something).
table.logic: the AI logic. If null, simply attack
table.ref: reference to the enemy itself, for use by API functions, set by constructor?
--NOTE: useful for copying tables
function deepcopy(orig)
local orig_type = type(orig)
local copy
if orig_type == 'table' then
copy = {}
for orig_key, orig_value in next, orig, nil do
copy[deepcopy(orig_key)] = deepcopy(orig_value)
end
setmetatable(copy, deepcopy(getmetatable(orig)))
else -- number, string, boolean, etc
copy = orig
end
return copy
end