code for credits is finished
This commit is contained in:
		
							parent
							
								
									7daac06f59
								
							
						
					
					
						commit
						ff87d9984a
					
				| @ -31,6 +31,7 @@ BEGIN_ENUM(ViewState) | ||||
| 	DECL_ENUM_ELEMENT(ViewStateEnterPlayername), | ||||
| 	DECL_ENUM_ELEMENT(ViewStateEditor), | ||||
| 	DECL_ENUM_ELEMENT(ViewStateOptions), | ||||
| 	DECL_ENUM_ELEMENT(ViewStateCredits), | ||||
| 	DECL_ENUM_ELEMENT(ViewStateGameOver), | ||||
| 	DECL_ENUM_LAST(ViewState) | ||||
| } | ||||
|  | ||||
| @ -83,6 +83,8 @@ int View::OnInit (int argc, char* argv[]) { | ||||
| 
 | ||||
| 	PushViewState (ViewStateMainMenu); | ||||
| 
 | ||||
| 	mCreditsPageIndex = 0; | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| @ -446,6 +448,9 @@ void View::DrawUi () { | ||||
| 		case ViewStateEditor: | ||||
| 			DrawUiEditor(); | ||||
| 			break; | ||||
| 		case ViewStateCredits: | ||||
| 			DrawUiCredits(); | ||||
| 			break; | ||||
| 		default: | ||||
| 			Engine::LogWarning ("Trying to draw unknown ViewState: %s (%d)",  | ||||
| 					GetStringViewState (game_state), game_state); | ||||
| @ -494,6 +499,11 @@ void View::DrawUiMainMenu() { | ||||
| 		PushViewState(ViewStateShowHighscore); | ||||
| 	} | ||||
| 
 | ||||
| 	if (Engine::GUI::Button (4, "Credits", screen_right * 0.5 - 100, 350, button_width, button_height)) { | ||||
| 		mCreditsPageIndex = 0; | ||||
| 		PushViewState(ViewStateCredits); | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| 	if (Engine::GUI::Button (6, "E", screen_right - 48, 20, 32, button_height)) { | ||||
| 		PushViewState(ViewStateEditor); | ||||
| @ -501,7 +511,7 @@ void View::DrawUiMainMenu() { | ||||
| 	} | ||||
| 	*/ | ||||
| 
 | ||||
| 	if (Engine::GUI::Button (4, "Quit", screen_right * 0.5 - 100, 380, button_width, button_height)) { | ||||
| 	if (Engine::GUI::Button (5, "Quit", screen_right * 0.5 - 100, 430, button_width, button_height)) { | ||||
| 		Engine::RunCommand("quit"); | ||||
| 	} | ||||
| } | ||||
| @ -747,6 +757,115 @@ void View::DrawUiOptions() { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void View::DrawUiCredits() { | ||||
| //	DrawPageTitle ("Credits");
 | ||||
| 	SelectFont ("console.ttf size=23"); | ||||
| 
 | ||||
| 	static std::string credits_content ( | ||||
| "_Programming,\r\
 | ||||
| _     Design, and Graphics\r\ | ||||
|   Martin Felis\r\ | ||||
| \r\ | ||||
| _Level Design\r\ | ||||
|   Martin Felis\r\ | ||||
| \r\ | ||||
| _Music\r\ | ||||
|   DJad - Space Exploration\r\ | ||||
| \r\ | ||||
| _Sounds\r\ | ||||
|   Marcus Zetterquist\r\ | ||||
| \r\ | ||||
| _Libraries\r\ | ||||
|   libSDL\r\ | ||||
|   SDL_mixer\r\ | ||||
|   OGLFT\r\ | ||||
|   freetype2\r\ | ||||
|   boost\r\ | ||||
|   libpng\r\ | ||||
| \r\ | ||||
| _Tools\r\ | ||||
|   GIMP\r\ | ||||
|   Blender\r\ | ||||
|   CMake\r\ | ||||
| \r\ | ||||
| _Special Thanks\r\ | ||||
|   to my wonderful wife Katrina\r\ | ||||
| \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
| _http://www.fysx.org\r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
|  \r\ | ||||
| :created with vim.\r\ | ||||
| ::wq\r\ | ||||
| \r\ | ||||
| EOF\r\ | ||||
| "); | ||||
| 	static float page_duration = 4.; | ||||
| 	static float page_draw_duration = page_duration; | ||||
| 
 | ||||
| 	if (page_draw_duration < 0.) { | ||||
| 		mCreditsPageIndex ++; | ||||
| 		page_draw_duration = page_duration;	 | ||||
| 	} | ||||
| 
 | ||||
| 	stringstream credits_stream (credits_content); | ||||
| 	std::string line; | ||||
| 
 | ||||
| 	float xpos = 270, ypos = 200.f; | ||||
| 	float dy = 20.f; | ||||
| 
 | ||||
| 	unsigned int index = 0; | ||||
| 	bool first_content_line = false; | ||||
| 	while (getline (credits_stream, line, '\r')) { | ||||
| 		if (line.size() == 0) { | ||||
| 			index ++; | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		if (index == mCreditsPageIndex) { | ||||
| 			if (line[0] == '_') { | ||||
| 				SelectFont ("console.ttf size=23 color=#e8d500"); | ||||
| 				line = line.substr (1, line.size()); | ||||
| 				first_content_line = true; | ||||
| 			} else if (line[0] == ':') { | ||||
| 				SelectFont ("console.ttf size=23 color=#ffffff"); | ||||
| 				line = line.substr (1, line.size()); | ||||
| 			} else { | ||||
| 				if (first_content_line) { | ||||
| 					ypos += 20; | ||||
| 					first_content_line = false; | ||||
| 				} | ||||
| 				SelectFont ("console.ttf size=23 color=#ffffff"); | ||||
| 			} | ||||
| 
 | ||||
| 			DrawGLString (xpos, ypos, line.c_str()); | ||||
| 			ypos += dy; | ||||
| 		} else { | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		if (index == mCreditsPageIndex && line == std::string("EOF")) { | ||||
| 			PopViewState(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	page_draw_duration -= Engine::GetFrameDuration(); | ||||
| 
 | ||||
| 	if (Engine::GUI::CheckKeyPressed(SDLK_ESCAPE)  | ||||
| 			|| Engine::GUI::CheckKeyPressed(SDLK_SPACE) ) { | ||||
| 		PopViewState(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void View::DrawUiEnterPlayername() { | ||||
| 	DrawPageTitle ("Asteroids"); | ||||
| 	SelectFont ("console.ttf size=23"); | ||||
|  | ||||
| @ -56,7 +56,8 @@ class View : public Engine::ViewBase { | ||||
| 			if (mViewStateStack.size() > 0) | ||||
| 				current_name = GetStringViewState(mViewStateStack.top()); | ||||
| 
 | ||||
| 			Engine::LogDebug("Popped ViewState: %s current %s remaining: %u", popped_name.c_str(), current_name.c_str(), mViewStateStack.size()); | ||||
| 			Engine::LogDebug("Popped ViewState: %s current %s remaining: %u", | ||||
| 					popped_name.c_str(), current_name.c_str(), mViewStateStack.size()); | ||||
| 
 | ||||
| 			if (mViewStateStack.size() == 0) { | ||||
| 				Engine::LogDebug ("No ViewState on the stack! Quitting."); | ||||
| @ -88,10 +89,12 @@ class View : public Engine::ViewBase { | ||||
| 		void DrawUiLevelComplete(); | ||||
| 		void DrawUiGamePaused(); | ||||
| 		void DrawUiPlayerDied(); | ||||
| 		void DrawHighscoreEntry(float x, float y, float entry_width, const std::string &name, unsigned int points); | ||||
| 		void DrawHighscoreEntry(float x, float y, float entry_width, | ||||
| 				const std::string &name, unsigned int points); | ||||
| 		void DrawUiHighscore(); | ||||
| 		void DrawUiOptions(); | ||||
| 		void DrawUiEnterPlayername(); | ||||
| 		void DrawUiCredits(); | ||||
| 
 | ||||
| 		void DrawUiEditor(); | ||||
| 
 | ||||
| @ -154,6 +157,8 @@ class View : public Engine::ViewBase { | ||||
| 		EditorState mEditorState; | ||||
| 		unsigned int mEditorEntityId; | ||||
| 
 | ||||
| 		unsigned int mCreditsPageIndex; | ||||
| 
 | ||||
| 		/// \brief can be used to perform some fading, etc.
 | ||||
| 		float mFadeTimerSecValue; | ||||
| 
 | ||||
|  | ||||
| @ -530,7 +530,6 @@ bool LineEdit (int id, int x, int y, std::string &text_value, const int &maxleng | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 
 | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| @ -652,8 +651,10 @@ bool CheckKeyPress (int keycode) { | ||||
| } | ||||
| 
 | ||||
| bool CheckKeyPressed (int keycode) { | ||||
| 	if (controller->uistate.keypressed_set.find(keycode) != controller->uistate.keypressed_set.end()) | ||||
| 	if (controller->uistate.keypressed_set.find(keycode) != controller->uistate.keypressed_set.end()) { | ||||
| 		controller->uistate.keypressed_set.erase(keycode); | ||||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| 	return false; | ||||
| } | ||||
|  | ||||
| @ -293,12 +293,21 @@ void SetPlayerEntityId(unsigned int entity_id) { | ||||
| 
 | ||||
| float GetFrameDuration () { | ||||
| 	if (!ModelInstance) { | ||||
| 		LogError ("Couldn't create Entity: Model not initialized!"); | ||||
| 		LogError ("Couldn't get frame duration: Model not initialized!"); | ||||
| 	} | ||||
| 
 | ||||
| 	return ModelInstance->GetFrameDuration (); | ||||
| } | ||||
| 
 | ||||
| float GetDurationApplicationStart () { | ||||
| 	if (!ModelInstance) { | ||||
| 		LogError ("Couldn't get application runtime: Model not initialized!"); | ||||
| 	} | ||||
| 
 | ||||
| 	return ModelInstance->GetDurationApplicationStart (); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| EntityBase * CreateEntity (int type) { | ||||
| 	if (!ModelInstance) { | ||||
| 		LogError ("Couldn't create Entity: Model not initialized!"); | ||||
|  | ||||
| @ -3,7 +3,6 @@ | ||||
| 
 | ||||
| #include "Engine.h" | ||||
| #include "EntityBase.h" | ||||
| // #include "Timer.h"
 | ||||
| 
 | ||||
| namespace Engine { | ||||
| 
 | ||||
| @ -13,10 +12,6 @@ class Events; | ||||
| class EntityFactoryBase; | ||||
| class OverlayManager; | ||||
| 
 | ||||
| #ifdef max | ||||
| #undef max | ||||
| #endif | ||||
| 
 | ||||
| const unsigned int NullEntityId = std::numeric_limits<unsigned int>::max() - 1; | ||||
| 
 | ||||
| struct EntityBase; | ||||
| @ -44,12 +39,16 @@ class ModelBase : public Module { | ||||
| 		void UpdateTimer () { | ||||
| 			static float last_frame = 0; | ||||
| 			float current_frame = static_cast<float> (SDL_GetTicks ()) * 1.0e-3; | ||||
| 			mDurationApplicationStart = current_frame; | ||||
| 			mDeltaSec = current_frame - last_frame; | ||||
| 			last_frame = current_frame; | ||||
| 		} | ||||
| 		float GetFrameDuration () { | ||||
| 			return mDeltaSec; | ||||
| 		} | ||||
| 		float GetDurationApplicationStart () { | ||||
| 			return mDurationApplicationStart; | ||||
| 		} | ||||
| 	 | ||||
| 		/** Adds the given Entity to the Model */ | ||||
| 		void RegisterEntity (EntityBase *entity); | ||||
| @ -86,7 +85,8 @@ class ModelBase : public Module { | ||||
| 		 | ||||
| 		/** Returns the id of the entity the player is currently controlling */ | ||||
| 		unsigned int GetPlayerEntityId (); | ||||
| 		/** \brief Assigns the player to an Entity. All controls will be redirected to that player 
 | ||||
| 		/** \brief Assigns the player to an Entity. All controls will be redirected
 | ||||
| 		 *  \brief to that player  | ||||
| 		 * | ||||
| 		 * This can be used to disable the controls of of the player by assinging | ||||
| 		 * the special entity id of NullEntityId */ | ||||
| @ -94,7 +94,8 @@ class ModelBase : public Module { | ||||
| 
 | ||||
| 		/** Notifies the gamelogic of a collision event */ | ||||
| 		void SendEntityCollisionEvent (const unsigned int reference_entity_id, | ||||
| 				const unsigned int incidence_entity_id, float collision_time, vector3d point, vector3d normal); | ||||
| 				const unsigned int incidence_entity_id, float collision_time, | ||||
| 				vector3d point, vector3d normal); | ||||
| 
 | ||||
| 		virtual void SetGameState (const unsigned int &state) { | ||||
| 			mLastGameState = mGameState; | ||||
| @ -164,6 +165,7 @@ class ModelBase : public Module { | ||||
| 		unsigned int mLastGameState; | ||||
| 
 | ||||
| 		float mDeltaSec; | ||||
| 		float mDurationApplicationStart; | ||||
| 
 | ||||
| 	friend class ViewBase; | ||||
| 	friend class OverlayManager; | ||||
|  | ||||
| @ -19,6 +19,12 @@ void SetPlayerEntityId(unsigned int entity_id); | ||||
| /** \brief Returns the duration of the frame in seconds */ | ||||
| float GetFrameDuration (); | ||||
| 
 | ||||
| /** \brief Returns the number of seconds the application is running 
 | ||||
|  * | ||||
|  * \todo [low] rename GetTimeApplicationStart to a proper name! | ||||
|  */ | ||||
| float GetDurationApplicationStart (); | ||||
| 
 | ||||
| // /** \brief Starts a timer with the given id that expires after sec seconds */
 | ||||
| // void StartTimer(const std::string &id, float sec);
 | ||||
| // 
 | ||||
|  | ||||
| @ -316,7 +316,8 @@ bool ViewBase::LoadFont (const std::string &font_spec_string) { | ||||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	font->setForegroundColor(font_color[0], font_color[1], font_color[2]); | ||||
| 	font->setForegroundColor(font_color[0], font_color[1], font_color[2], 1.); | ||||
| 	font->setBackgroundColor(0., 0., 0., 0.); | ||||
| 
 | ||||
| 	mFonts.insert(std::make_pair<std::string, OGLFT::Monochrome*>(font_spec_string, font)); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user