From 99d932743948c8fa47c6efebdf2a2464ff45c027 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Sun, 9 Mar 2014 23:23:13 +0000
Subject: [PATCH] [Change] Revamped the ship classes. I've yet to change them
 in the data files.

---
 bin/Makefile |   6 +--
 src/ship.c   | 124 ++++++++++++++++++++++++++++++---------------------
 src/ship.h   |  36 +++++++++------
 3 files changed, 99 insertions(+), 67 deletions(-)

diff --git a/bin/Makefile b/bin/Makefile
index 5707275..b9246b2 100644
--- a/bin/Makefile
+++ b/bin/Makefile
@@ -28,7 +28,7 @@ CLUA := -I../lib/lua
 CSDL := $(shell sdl-config --cflags)
 CXML := $(shell xml2-config --cflags)
 CTTF := $(shell freetype-config --cflags)
-CPNG := $(shell libpng-config libpng --cflags)
+CPNG := #$(shell libpng-config libpng --cflags)
 CGL  :=
 CFLAGS := $(CLUA) $(CSDL) $(CXML) $(CTTF) $(CPNG) $(CGL) $(VERSION) -D$(OS)
 
@@ -58,10 +58,10 @@ endif
 
 # LDFLAGS.
 LDLUA := ../lib/lua/liblua.a
-LDSDL := $(shell sdl-config --libs) -lSDL_image -lSDL_mixer
+LDSDL := $(shell sdl-config --libs) -lSDL_image -lSDL_mixer -lpng
 LDXML := $(shell xml2-config --libs)
 LDTTF := $(shell freetype-config --libs)
-CPNG 	:= $(shell libpng-config libpng --libs)
+CPNG 	:= #$(shell libpng-config libpng --libs)
 LDGL	:= -lGL
 LDFLAGS := -lm $(LDLUA) $(LDSDL) $(LDXML) $(LDTTF) $(CPNG) $(LDGL) $(LDPNG)
 
diff --git a/src/ship.c b/src/ship.c
index 11878dc..d6885d0 100644
--- a/src/ship.c
+++ b/src/ship.c
@@ -102,34 +102,47 @@ char* ship_class(Ship* s) {
   switch(s->class) {
     case SHIP_CLASS_NULL:
       return "NULL";
-    /* Civilian */
-    case SHIP_CLASS_CIV_LIGHT:
-      return "Civilian Light";
-    case SHIP_CLASS_CIV_MEDIUM:
-      return "Civilian Medium";
-    case SHIP_CLASS_CIV_HEAVY:
-      return "Civilian Heavy";
+    /* Civilian. */
+    case SHIP_CLASS_YACHT:
+      return "Yacht";
+    case SHIP_CLASS_LUXURY_YACHT:
+      return "Luxury Yacht";
+    case SHIP_CLASS_CRUISE_SHIP:
+      return "Cruise Ship";
+
+    /* Merchant. */
+    case SHIP_CLASS_COURIER:
+      return "Courier";
+    case SHIP_CLASS_FREIGHTER:
+      return "Freighter";
+    case SHIP_CLASS_BULK_CARRIER:
+      return "Bulk Carrier";
+
     /* Military. */
-    case SHIP_CLASS_MIL_LIGHT:
-      return "Military Light";
-    case SHIP_CLASS_MIL_MEDIUM:
-      return "Military Medium";
-    case SHIP_CLASS_MIL_HEAVY:
-      return "Military Heavy";
+    case SHIP_CLASS_SCOUT:
+      return "Scout";
+    case SHIP_CLASS_FIGHTER:
+      return "Fighter";
+    case SHIP_CLASS_BOMBER:
+      return "Bomber";
+    case SHIP_CLASS_CORVETTE:
+      return "Corvette";
+    case SHIP_CLASS_DESTROYER:
+      return "Destroyer";
+    case SHIP_CLASS_CRUISER:
+      return "Cruiser";
+    case SHIP_CLASS_CARRIER:
+      return "Carrier";
+
     /* Robotic. */
-    case SHIP_CLASS_ROB_LIGHT:
-      return "Robotic Light";
-    case SHIP_CLASS_ROB_MEDIUM:
-      return "Robotic Medium";
-    case SHIP_CLASS_ROB_HEAVY:
-      return "Robotic Heavy";
-    /* Hybrid. */
-    case SHIP_CLASS_HYB_LIGHT:
-      return "Hybrid Light";
-    case SHIP_CLASS_HYB_MEDIUM:
-      return "Hybrid Medium";
-    case SHIP_CLASS_HYB_HEAVY:
-      return "Hybrid Heavy";
+    case SHIP_CLASS_DRONE:
+      return "Drone";
+    case SHIP_CLASS_HEAVY_DRONE:
+      return "Heavy Drone";
+    case SHIP_CLASS_MOTHERSHIP:
+      return "Mothership";
+
+    /* Unknown. */
     default:
       return "Unknown";
   }
@@ -143,33 +156,42 @@ char* ship_class(Ship* s) {
  */
 ShipClass ship_classFromString(char* str) {
   /* Civilian. */
-  if(strcmp(str, "civ light")==0)
-    return SHIP_CLASS_CIV_LIGHT;
-  if(strcmp(str, "civ medium")==0)
-    return SHIP_CLASS_CIV_MEDIUM;
-  if(strcmp(str, "civ heavy")==0)
-    return SHIP_CLASS_CIV_HEAVY;
+  if(strcmp(str, "Yacht")==0)
+    return SHIP_CLASS_YACHT;
+  else if(strcmp(str, "Luxury Yacht")==0)
+    return SHIP_CLASS_LUXURY_YACHT;
+  else if(strcmp(str, "Cruise Ship")==0)
+    return SHIP_CLASS_CRUISE_SHIP;
+
+  /* Merchant. */
+   else if(strcmp(str, "Courier")==0)
+    return SHIP_CLASS_COURIER;
+  else if(strcmp(str, "Freighter")==0)
+    return SHIP_CLASS_FREIGHTER;
+  else if(strcmp(str, "Bulk Carrier")==0)
+    return SHIP_CLASS_BULK_CARRIER;
+
   /* Military. */
-  if(strcmp(str, "mil light")==0)
-    return SHIP_CLASS_MIL_LIGHT;
-  if(strcmp(str, "mil medium")==0)
-    return SHIP_CLASS_MIL_MEDIUM;
-  if(strcmp(str, "mil heavy")==0)
-    return SHIP_CLASS_MIL_HEAVY;
+  else if(strcmp(str, "Scout")==0)
+    return SHIP_CLASS_SCOUT;
+  else if(strcmp(str, "Fighter")==0)
+    return SHIP_CLASS_FIGHTER;
+  else if(strcmp(str, "Bomber")==0)
+    return SHIP_CLASS_BOMBER;
+  else if(strcmp(str, "Corvette")==0)
+    return SHIP_CLASS_CORVETTE;
+  else if(strcmp(str, "Destroyer")==0)
+    return SHIP_CLASS_DESTROYER;
+  else if(strcmp(str, "Carrier")==0)
+    return SHIP_CLASS_CARRIER;
+ 
   /* Robotic. */
-  if(strcmp(str, "rob light")==0)
-    return SHIP_CLASS_ROB_LIGHT;
-  if(strcmp(str, "rob medium")==0)
-    return SHIP_CLASS_ROB_MEDIUM;
-  if(strcmp(str, "rob heavy")==0)
-    return SHIP_CLASS_ROB_HEAVY;
-  /* Hybrid. */
-  if(strcmp(str, "hyb light")==0)
-    return SHIP_CLASS_HYB_LIGHT;
-  if(strcmp(str, "hyb medium")==0)
-    return SHIP_CLASS_HYB_MEDIUM;
-  if(strcmp(str, "hyb heavy")==0)
-    return SHIP_CLASS_HYB_HEAVY;
+  else if(strcmp(str, "Drone")==0)
+    return SHIP_CLASS_DRONE;
+  else if(strcmp(str, "Heavy Drone")==0)
+    return SHIP_CLASS_HEAVY_DRONE;
+  else if(strcmp(str, "Mothership")==0)
+    return SHIP_CLASS_MOTHERSHIP;
 
   /* Unknown. */
   return SHIP_CLASS_NULL;
diff --git a/src/ship.h b/src/ship.h
index 3f67b69..bd44fc9 100644
--- a/src/ship.h
+++ b/src/ship.h
@@ -13,19 +13,29 @@
  * @breif Contains the different types of ships.
  */
 typedef enum ShipClass_ {
-  SHIP_CLASS_NULL,
-  SHIP_CLASS_CIV_LIGHT,
-  SHIP_CLASS_CIV_MEDIUM,
-  SHIP_CLASS_CIV_HEAVY,
-  SHIP_CLASS_MIL_LIGHT,
-  SHIP_CLASS_MIL_MEDIUM,
-  SHIP_CLASS_MIL_HEAVY,
-  SHIP_CLASS_ROB_LIGHT,
-  SHIP_CLASS_ROB_MEDIUM,
-  SHIP_CLASS_ROB_HEAVY,
-  SHIP_CLASS_HYB_LIGHT,
-  SHIP_CLASS_HYB_MEDIUM,
-  SHIP_CLASS_HYB_HEAVY
+  SHIP_CLASS_NULL,           /**< Invalid ship. */
+  /* Civilian. */
+  SHIP_CLASS_YACHT,           /**< Small cheap ship. */
+  SHIP_CLASS_LUXURY_YACHT,    /**< Small expensive ship. */
+  SHIP_CLASS_CRUISE_SHIP,     /**< Medium Ship. */
+  /* Merchant. */
+  SHIP_CLASS_COURIER,         /**< Small ship. */
+  SHIP_CLASS_FREIGHTER,        /**< Medium ship. */
+  SHIP_CLASS_BULK_CARRIER,    /**< Large ship. */
+  /* Military. */
+  SHIP_CLASS_SCOUT,           /**< Small scouter. */
+  SHIP_CLASS_FIGHTER,         /**< Small attack ship. */
+  SHIP_CLASS_BOMBER,          /**< Small attack ship with many missiles. */
+  SHIP_CLASS_CORVETTE,        /**< Very agile medium ship. */
+  SHIP_CLASS_DESTROYER,       /**< Not so agile medium ship. */
+  SHIP_CLASS_CRUISER,         /**< Large ship. */
+  SHIP_CLASS_CARRIER,         /**< Large ship with fighter bays. */
+  /* Robotic. */
+  SHIP_CLASS_DRONE,           /**< Unmanned small robotic ship. */
+  SHIP_CLASS_HEAVY_DRONE,     /**< Unmannded medium robotic ship. */
+  SHIP_CLASS_MOTHERSHIP       /**< Unmanned large robotic carrier. */
+  /* Hybrid. */
+  /** @todo hybrid ship classification. */
 } ShipClass;
 
 /* Small wrapper for the outfits. */