From fc3276464a941d020afb495672c4ab9674fdc45a Mon Sep 17 00:00:00 2001 From: Allanis Date: Fri, 6 Sep 2013 16:37:38 +0100 Subject: [PATCH] [Add] Targetting sounds implemented. [Add] More doxygen. --- snd/sounds/target.wav | Bin 0 -> 10690 bytes src/pilot.c | 10 ++++----- src/player.c | 46 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 snd/sounds/target.wav diff --git a/snd/sounds/target.wav b/snd/sounds/target.wav new file mode 100644 index 0000000000000000000000000000000000000000..471889032173cf20e82445dc716b76c3ac281624 GIT binary patch literal 10690 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, pilot, sizeof(FleetPilot)); free(pilot); } - } while((cur = cur->next)); + } while(xml_nextNode(cur)); } - } while((node = node->next)); + } while(xml_nextNode(node)); #define MELEMENT(o,s) if(o) WARN("Fleet '%s' missing '"s"' element", tmp->name) MELEMENT(tmp->ai==NULL, "ai"); MELEMENT(tmp->faction==-1, "faction"); @@ -1348,13 +1348,13 @@ int fleet_load(void) { memcpy(fleet_stack+nfleets-1, tmp, sizeof(Fleet)); free(tmp); } - } while((node = node->next)); + } while(xml_nextNode(node)); xmlFreeDoc(doc); free(buf); xmlCleanupParser(); - DEBUG("Loaded %d fleet%c", nfleets, (nfleets==1)?' ':'s'); + DEBUG("Loaded %d fleet%s", nfleets, (nfleets==1) ? "" : "s"); return 0; } diff --git a/src/player.c b/src/player.c index cf74034..ed80e6b 100644 --- a/src/player.c +++ b/src/player.c @@ -53,6 +53,12 @@ static Ship* player_ship = NULL; /**< Temp ship to hold when naming it. * static double player_px, player_py, player_vx, player_vy, player_dir; /**< More hack. */ static int player_credits = 0; /**< Temp hack on create. */ +/* + * Player sounds. + */ +static int snd_target = -1; +static int snd_jump = -1; + /* Player pilot stack - Ships she owns. */ static Pilot** player_stack = NULL; /**< Stack of ships player has. */ static char** player_lstack = NULL; /**< Names of the planet the ships are at. */ @@ -478,10 +484,15 @@ static int player_soundReserved = 0; /**< Has the player already reserved sound? static void player_initSound(void) { if(player_soundReserved) return; + /* Allocated channels. */ sound_reserve(PLAYER_RESERVED_CHANNELS); sound_createGroup(PLAYER_ENGINE_CHANNEL, 0, 1); /* Channel for engine noises. */ sound_createGroup(PLAYER_GUI_CHANNEL, 1, PLAYER_RESERVED_CHANNELS-1); player_soundReserved = 1; + + /* Get sounds. */ + snd_target = sound_get("target"); + snd_jump = sound_get("jump"); } /** @@ -587,7 +598,7 @@ const char* player_rating(void) { * @fn int player_outfitOwned(const char* outfitname) * * @brief Get how many of the outfits the player owns. - * @param outfitname Outfit to check how many the player owns of. + * @param outfitname Outfit to check how many the player owns. * @return The number of outfits matching outfitname owned. */ int player_outfitOwned(const char* outfitname) { @@ -600,7 +611,13 @@ int player_outfitOwned(const char* outfitname) { return 0; } -/* Return how many of the commodity the player has. */ +/** + * @fn int player_cargoOwned(const char* commodityname) + * + * @brief Get how many of the commodity the player has. + * @param commodityname Commodity to check how many the player has. + * @return The number of commodities owned matching commodityname. + */ int player_cargoOwned(const char* commodityname) { int i; @@ -623,7 +640,11 @@ void player_rmMissionCargo(unsigned int cargo_id) { return; /* Success. */ } -/* Render the background player stuff, namely planet target */ +/** + * @fn void player_renderBG(void) + * + * @brief Render the background player stuff, namely planet target gfx. + */ void player_renderBG(void) { double x, y; glColour* c; @@ -689,7 +710,11 @@ void player_render(void) { } } -/* Render the player's GUI. */ +/** + * @fn void player_renderGUI(void) + * + * @brief Render the players GUI. + */ void player_renderGUI(void) { int i, j; double x, y; @@ -1668,6 +1693,10 @@ void player_targetHostile(void) { tp = pilot_stack[i]->id; } } + + if((tp != PLAYER_ID) && (tp != player_target)) + player_playSound(snd_target, 1); + player_target = tp; } @@ -1678,6 +1707,9 @@ void player_targetHostile(void) { */ void player_targetNext(void) { player_target = pilot_getNextID(player_target); + + if(player_target != PLAYER_ID) + player_playSound(snd_target, 1); } /** @@ -1686,7 +1718,13 @@ void player_targetNext(void) { * @brief Player targets nearest pilot. */ void player_targetNearest(void) { + unsigned int t; + + t = player_target; player_target = pilot_getNearestPilot(player); + + if((player_target != PLAYER_ID) && (t != player_target)) + player_playSound(snd_target, 1); } /**