|
@@ -0,0 +1,201 @@
|
|
|
+/*
|
|
|
+User class
|
|
|
+
|
|
|
+This contains everything needed to have a "player"
|
|
|
+*/
|
|
|
+
|
|
|
+#include "user.h"
|
|
|
+#include <string>
|
|
|
+
|
|
|
+User::User() { this->init(); }
|
|
|
+
|
|
|
+User::User(std::string name, std::string realname) {
|
|
|
+ uid = 0;
|
|
|
+ nick = name;
|
|
|
+ real = realname;
|
|
|
+ experience = 0;
|
|
|
+ laston = 0;
|
|
|
+ armor = 1;
|
|
|
+ armorpoints = 8;
|
|
|
+ shield = 0;
|
|
|
+ shieldpoints = 0;
|
|
|
+ shieldsup = 0;
|
|
|
+ hitpoints = 4;
|
|
|
+ gun = 1;
|
|
|
+ metal = 0;
|
|
|
+ fuel = 10;
|
|
|
+ dirt = true;
|
|
|
+}
|
|
|
+
|
|
|
+User::User(int uuid, std::string name, std::string realname, int exp, int lo, int a, int ap, int s, int sp, int su, int hp, int g, int m, int f) {
|
|
|
+ uid = uuid;
|
|
|
+ nick = name;
|
|
|
+ real = realname;
|
|
|
+ experience = exp;
|
|
|
+ laston = lo;
|
|
|
+ armor = a;
|
|
|
+ armorpoints = ap;
|
|
|
+ shield = s;
|
|
|
+ shieldpoints = sp;
|
|
|
+ shieldsup = su;
|
|
|
+ hitpoints = hp;
|
|
|
+ gun = g;
|
|
|
+ metal = m;
|
|
|
+ fuel = f;
|
|
|
+ dirt = false;
|
|
|
+}
|
|
|
+
|
|
|
+void User::init(void) {
|
|
|
+ uid = 0;
|
|
|
+ nick = "Unknown";
|
|
|
+ real = "Unknown";
|
|
|
+ experience = 0;
|
|
|
+ laston = 0;
|
|
|
+ armor = 1;
|
|
|
+ armorpoints = 8;
|
|
|
+ shield = 0;
|
|
|
+ shieldpoints = 0;
|
|
|
+ shieldsup = 0;
|
|
|
+ hitpoints = 4;
|
|
|
+ gun = 1;
|
|
|
+ metal = 0;
|
|
|
+ fuel = 10;
|
|
|
+ dirt = false;
|
|
|
+}
|
|
|
+
|
|
|
+bool User::dirty(void) {return dirt;}
|
|
|
+// How much metal to add one more cost?
|
|
|
+int User::calcArmor(void) {return (3 * (armor + 1));}
|
|
|
+int User::calcShield(void) {return (6 * (shield + 1));}
|
|
|
+int User::calcGun(void) {return (4 * (gun + 1));}
|
|
|
+// Calc Max value
|
|
|
+int User::calcHP(void) {return (gun + armor + shield + 2);}
|
|
|
+int User::calcSP(void) {return (shield * 3);}
|
|
|
+int User::calcAP(void) {return (armor * 8);}
|
|
|
+// Combat System
|
|
|
+void User::regen(void) {
|
|
|
+ if(shieldsup != 0) {
|
|
|
+ dirt = true;
|
|
|
+ shieldsup -= 1;
|
|
|
+ }
|
|
|
+ if(shieldsup != 0) {
|
|
|
+ dirt = true;
|
|
|
+ shieldpoints += 1;
|
|
|
+ } else {
|
|
|
+ dirt = true;
|
|
|
+ shieldpoints += shield;
|
|
|
+ }
|
|
|
+ if(shieldpoints > calcSP()) {
|
|
|
+ dirt = true;
|
|
|
+ shieldpoints = calcSP();
|
|
|
+ }
|
|
|
+}
|
|
|
+void User::repair(bool docked) {
|
|
|
+ int amount;
|
|
|
+ if(docked) {
|
|
|
+ amount = 4;
|
|
|
+ } else {
|
|
|
+ amount = 2;
|
|
|
+ }
|
|
|
+ if(armorpoints < calcAP()) {
|
|
|
+ if(metal != 0) {
|
|
|
+ dirt = true;
|
|
|
+ metal -= 1;
|
|
|
+ armorpoints += amount;
|
|
|
+ if(armorpoints > calcAP()) {
|
|
|
+ armorpoints = calcAP();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+int User::takeDamage(int dmg) {
|
|
|
+ if(shieldsup == 0) {
|
|
|
+ if(shieldpoints >= dmg) {
|
|
|
+ // Shields Absorbed all damage
|
|
|
+ dirt = true;
|
|
|
+ shieldpoints -= dmg;
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ // Shields took some damage but more damage to take
|
|
|
+ dirt = true;
|
|
|
+ dmg -= shieldpoints;
|
|
|
+ shieldpoints = 0;
|
|
|
+ shieldsup += (shield + 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(dmg > 0) {
|
|
|
+ if(armorpoints >= dmg) {
|
|
|
+ // Armor took all remaining damage
|
|
|
+ dirt = true;
|
|
|
+ armorpoints -= dmg;
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ // Armor took some damage but more damage to take
|
|
|
+ dirt = true;
|
|
|
+ dmg -= armorpoints;
|
|
|
+ armorpoints = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(dmg > 0) {
|
|
|
+ if(hitpoints > dmg) {
|
|
|
+ // Hull took all remaining damage
|
|
|
+ dirt = true;
|
|
|
+ hitpoints -= dmg;
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ // Hull took some damage but more needed to be taken
|
|
|
+ // Our ship is :boom: space debris.
|
|
|
+ dirt = true;
|
|
|
+ int temp = dmg;
|
|
|
+ dmg -= hitpoints;
|
|
|
+ hitpoints -= temp;
|
|
|
+ temp = 0;
|
|
|
+ return dmg;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+// Adds and Removes
|
|
|
+void User::addEXP(int amount) {dirt = true; experience += amount;}
|
|
|
+void User::rmEXP(int amount) {dirt = true; experience -= amount;}
|
|
|
+void User::addMetal(int amount) {dirt = true; metal += amount;}
|
|
|
+void User::rmMetal(int amount) {dirt = true; metal -= amount;}
|
|
|
+void User::addFuel(int amount) {dirt = true; fuel += amount;}
|
|
|
+void User::rmFuel(int amount) {dirt = true; fuel -= amount;}
|
|
|
+void User::rmLaston(int amount) {dirt = true; laston -= amount; if(laston < 0) {laston = 0;}}
|
|
|
+void User::addHP(int amount) {dirt = true; hitpoints += amount;}
|
|
|
+void User::addGun(int amount) {dirt = true; gun += amount; addHP(1);}
|
|
|
+void User::addArmor(int amount) {dirt = true; armor += amount; armorpoints += (amount * 8); addHP(1);}
|
|
|
+void User::addShield(int amount) {dirt = true; shield += amount; if(shieldsup == 0) {shieldpoints += (amount * 1);} else {shieldpoints += (amount * 3);} addHP(1);}
|
|
|
+void User::rmSU(int amount) {dirt = true; shieldsup -= amount; if(shieldsup > 0) {shieldsup = 0;}}
|
|
|
+// Sets
|
|
|
+void User::set_dirt(bool val) {dirt = val;}
|
|
|
+void User::set_uid(int val) {uid = val;}
|
|
|
+void User::set_experience(int val) {experience = val;}
|
|
|
+void User::set_gun(int val) {gun = val;}
|
|
|
+void User::set_armor(int val) {armor = val;}
|
|
|
+void User::set_armorpoints(int val) {armorpoints = val;}
|
|
|
+void User::set_shield(int val) {shield = val;}
|
|
|
+void User::set_shieldpoints(int val) {shieldpoints = val;}
|
|
|
+void User::set_shieldsup(int val) {shieldsup = val;}
|
|
|
+void User::set_hitpoints(int val) {hitpoints = val;}
|
|
|
+void User::set_laston(int val) {laston = val;}
|
|
|
+void User::set_nick(std::string val) {nick = val;}
|
|
|
+void User::set_real(std::string val) {real = val;}
|
|
|
+void User::set_metal(int val) {metal = val;}
|
|
|
+void User::set_fuel(int val) {fuel = val;}
|
|
|
+// Gets
|
|
|
+bool User::get_dirt(void) {return dirt;}
|
|
|
+int User::get_uid(void) {return uid;}
|
|
|
+int User::get_experience(void) {return experience;}
|
|
|
+int User::get_gun(void) {return gun;}
|
|
|
+int User::get_armor(void) {return armor;}
|
|
|
+int User::get_armorpoints(void) {return armorpoints;}
|
|
|
+int User::get_shield(void) {return shield;}
|
|
|
+int User::get_shieldpoints(void) {return shieldpoints;}
|
|
|
+int User::get_shieldsup(void) {return shieldsup;}
|
|
|
+int User::get_hitpoints(void) {return hitpoints;}
|
|
|
+int User::get_laston(void) {return laston;}
|
|
|
+int User::get_metal(void) {return metal;}
|
|
|
+int User::get_fuel(void) {return fuel;}
|
|
|
+std::string User::get_nick(void) {return nick;}
|
|
|
+std::string User::get_real(void) {return real;}
|