Mostly planning
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user