| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | // Copyright (C) 2019 Nomango
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #pragma once
 | 
					
						
							|  |  |  |  | #include "common.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | // <20><>ɫ
 | 
					
						
							|  |  |  |  | KGE_DECLARE_SMART_PTR(Hero); | 
					
						
							|  |  |  |  | class Hero | 
					
						
							| 
									
										
										
										
											2019-07-31 16:24:56 +08:00
										 |  |  |  | 	: public GifSprite | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2019-07-31 16:24:56 +08:00
										 |  |  |  | 	Hero(GifImagePtr image) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD>ͼƬ
 | 
					
						
							| 
									
										
										
										
											2019-07-31 16:24:56 +08:00
										 |  |  |  | 		Load(image); | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD> GIF <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
 | 
					
						
							|  |  |  |  | 		SetLoopCount(-1); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-18 15:00:58 +08:00
										 |  |  |  | 	// ÿ֡<C3BF><D6A1>Ⱦǰִ<C7B0><D6B4> OnUpdate
 | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	void OnUpdate(Duration dt) override | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>豸
 | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		auto input = Input::Instance(); | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		if (input->IsDown(KeyCode::Left)) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->Move(-2, 0); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		else if (input->IsDown(KeyCode::Right)) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->Move(2, 0); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		if (input->IsDown(KeyCode::Up)) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->Move(0, -2); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		else if (input->IsDown(KeyCode::Down)) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->Move(0, 2); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ɫ
 | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		if (input->IsDown(MouseButton::Left)) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ת<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							|  |  |  |  | 			float rotation = this->GetRotation(); | 
					
						
							|  |  |  |  | 			// <20><><EFBFBD>ýǶ<C3BD>ֵ+2
 | 
					
						
							|  |  |  |  | 			this->SetRotation(rotation + 2); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>ʾ<EFBFBD><CABE>ɫ
 | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		if (input->WasPressed(MouseButton::Right)) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ʾ״̬
 | 
					
						
							|  |  |  |  | 			bool visible = this->IsVisible(); | 
					
						
							|  |  |  |  | 			// <20><><EFBFBD><EFBFBD><EFBFBD>෴<EFBFBD><E0B7B4><EFBFBD><EFBFBD>ʾ״̬
 | 
					
						
							|  |  |  |  | 			this->SetVisible(!visible); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Demo2 | 
					
						
							|  |  |  |  | 	: public Scene | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | 	static ScenePtr Create() | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | 		return new Demo2; | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | 	Demo2() | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | 		HeroPtr hero = new Hero(g_Loader.GetGifImage(L"Kusanagi")); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD>Ļ<EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD><EFBFBD><EFBFBD>ʾ
 | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | 		hero->SetAnchor(0.5f, 0.5f); | 
					
						
							|  |  |  |  | 		hero->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-02-12 16:12:15 +08:00
										 |  |  |  | 		TextPtr text = new Text(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><EFBFBD>ƶ<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"); | 
					
						
							| 
									
										
										
										
											2019-03-10 13:44:02 +08:00
										 |  |  |  | 		// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD>СΪ<D0A1><CEAA><EFBFBD>ֲ<EFBFBD><D6B2>ִ<EFBFBD>С
 | 
					
						
							|  |  |  |  | 		text->SetSize(text->GetLayoutSize()); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
 | 
					
						
							|  |  |  |  | 		text->SetAnchor(0.5f, 0.5f); | 
					
						
							|  |  |  |  | 		text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT - 50); | 
					
						
							|  |  |  |  | 		text->SetAlignment(TextAlign::Center); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-04-14 23:29:17 +08:00
										 |  |  |  | 		this->AddChild(hero); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		this->AddChild(text); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }; |