void PlayerInventoryHud::update() {
	if(player.Interface & INTER_INVENTORY) {
		if((player.Interface & INTER_COMBATMODE) || player.doingmagic >= 2) {
			long t = Original_framedelay * (1.f/5) + 2;
			InventoryY += t;

			if(InventoryY > 110) {
				InventoryY = 110;
			}
		} else {
			if(bInventoryClosing) {
				long t = Original_framedelay * (1.f/5) + 2;
				InventoryY += t;

				if(InventoryY > 110) {
					InventoryY = 110;
					bInventoryClosing = false;

					player.Interface &=~ INTER_INVENTORY;

					if(bInventorySwitch) {
						bInventorySwitch = false;
						ARX_SOUND_PlayInterface(SND_BACKPACK, Random::getf(0.9f, 1.1f));
						player.Interface |= INTER_INVENTORYALL;
						ARX_INTERFACE_NoteClose();
						InventoryY = 121 * player.bag;
						lOldInterface=INTER_INVENTORYALL;
					}
				}
			} else if(InventoryY > 0) {
				InventoryY -= long((Original_framedelay * (1.f/5)) + 2.f);

				if(InventoryY < 0) {
					InventoryY = 0;
				}
			}
		}
	} else if((player.Interface & INTER_INVENTORYALL) || bInventoryClosing) {
		float fSpeed = (1.f/3);
		if((player.Interface & INTER_COMBATMODE) || player.doingmagic >= 2) {
			if(InventoryY < 121 * player.bag) {
				InventoryY += long((Original_framedelay * fSpeed) + 2.f);
			}
		} else {
			if(bInventoryClosing) {
				InventoryY += long((Original_framedelay * fSpeed) + 2.f);
				if(InventoryY > 121 * player.bag) {
					bInventoryClosing = false;
					if(player.Interface & INTER_INVENTORYALL) {
						player.Interface &= ~INTER_INVENTORYALL;
					}
					lOldInterface=0;
				}
			} else if(InventoryY > 0) {
				InventoryY -= long((Original_framedelay * fSpeed) + 2.f);
				if(InventoryY < 0) {
					InventoryY = 0;
				}
			}
		}
	}
}
Beispiel #2
0
void BackpackIconGui::updateInput() {
	
	static PlatformInstant flDelay = 0;
	
	// Check for backpack Icon
	if(m_rect.contains(Vec2f(DANAEMouse))) {
		if(eeMouseUp1() && playerInventory.insert(DRAGINTER)) {
			ARX_SOUND_PlayInterface(SND_INVSTD);
			Set_DragInter(NULL);
		}
	}
	
	if(m_rect.contains(Vec2f(DANAEMouse)) || flDelay != 0) {
		eMouseState = MOUSE_IN_INVENTORY_ICON;
		cursorSetInteraction();
		
		
		if(eeMouseDoubleClick1()) {
			ARX_SOUND_PlayInterface(SND_BACKPACK, Random::getf(0.9f, 1.1f));
			
			playerInventory.optimize();
			
			flDelay = 0;
		} else if(eeMouseDown1() || flDelay != 0) {
			if(flDelay == 0) {
				flDelay = g_platformTime.frameStart();
				return;
			} else {
				if(g_platformTime.frameStart() - flDelay < PlatformDurationMs(300)) {
					return;
				} else {
					flDelay = 0;
				}
			}
			
			if(player.Interface & INTER_INVENTORYALL) {
				ARX_SOUND_PlayInterface(SND_BACKPACK, Random::getf(0.9f, 1.1f));
				g_playerInventoryHud.close();
			} else {
				bInverseInventory = !bInverseInventory;
				lOldTruePlayerMouseLook = TRUE_PLAYER_MOUSELOOK_ON;
			}
		} else if(eeMouseDown2()) {
			g_playerBook.close();
			ARX_INVENTORY_OpenClose(NULL);
			
			if(player.Interface & INTER_INVENTORYALL) {
				g_playerInventoryHud.close();
			} else {
				if(player.Interface & INTER_INVENTORY) {
					ARX_SOUND_PlayInterface(SND_BACKPACK, Random::getf(0.9f, 1.1f));
					g_playerInventoryHud.close();
					bInventorySwitch = true;
				} else {
					ARX_SOUND_PlayInterface(SND_BACKPACK, Random::getf(0.9f, 1.1f));
					player.Interface |= INTER_INVENTORYALL;
					
					g_playerInventoryHud.resetPos();
					
					ARX_INTERFACE_NoteClose();
					
					if(TRUE_PLAYER_MOUSELOOK_ON) {
						WILLRETURNTOFREELOOK = true;
					}
				}
			}
			
			TRUE_PLAYER_MOUSELOOK_ON = false;
		}
		
		if(DRAGINTER == NULL)
			return;
	}
}