// File: angelapwen[P]text-based-game/game.cpp
// Function: Game::characterChoice()
void Game::characterChoice() {
	cout <<
	     "********************************************************************************"
	     << endl;
	cout << "You may pick a disguise before you enter." << endl;
	cout << "\nYou have the option of disguising yourself with Hydra technology "
			"as "
			"one of\nthe other guests while you complete your mission. ";
	cout << "Each disguise will come with a\nspecial feature. ";
	cout << "Each character also begins in a different room in the estate." <<
	     endl;
	cout << "If you continue as yourself, you will also receive a special "
			"feature." << endl;
	cout << "\nThe disguises we have available are:" << endl;
	cout << "\n- Miss Scarlet is a femme fetale." << endl;
	cout << "Special Feature: Miss Scarlet has charmed a Hydra employee to let"
			" her satchel\nbegin with a revolver instead of empty." << endl;
	cout << "Starting Location: Hall." << endl;
	cout << "\n- Colonel Mustard is a dangerous hunter." << endl;
	cout << "Special Feature: Colonel Mustard's satchel's capacity is 1 more "
			"than the\ndefault number."	<< endl;
	cout << "Starting Location: Dining Room." << endl;
	cout << "\n- Mrs. White is the disgruntled servant of the estate." << endl;
	cout << "Special Feature: Mrs. White will never be randomly discovered by "
			"Mr. Boddy, as\nshe is allowed to be in the Estate at any time."	<<
	     endl;
	cout << "Starting Location: Kitchen." << endl;
	cout << "\n- Mr. Green is a mobster." << endl;
	cout << "Special Feature: Mr. Green has paid one of the Hydra employees "
			"off to find out\nwhich room the secret escape is in before the game "
			"begins." << endl;
	cout << "Starting Location: Ballroom." << endl;
	cout << "\n- Mrs. Peacock is a grand dame." << endl;
	cout << "Special Feature: Due to her age, Mrs. Peacock receives 1.25x the "
			"number of\nmaximum moves before the dinner begins." << endl;
	cout << "Starting Location: Conservatory." << endl;
	cout << "\n- Complete your mission as Professor Plum." << endl;
	cout << "Special Feature: you receive a key to access all the "
			"corner passageways\nthroughout the game, regardless of if you have "
			"the wrench." << endl;
	cout << "Starting Location: Library." << endl;
	cout << "\nHere is a map of the Estate:" << endl;
	map->printBoard();
	cout << "\n\tCHARACTER MENU" << endl;
	cout << "1. Miss Scarlet" << endl;
	cout << "2. Colonel Mustard" << endl;
	cout << "3. Mrs. White" << endl;
	cout << "4. Mr. Green" << endl;
	cout << "5. Mrs. Peacock" << endl;
	cout << "6. Turn down the disguise-- remain as Professor Plum." << endl;
	cout << "Make your choice: ";

	int characterChoice = intValidation(1,6);

	// Initialize character variable depending on choice
	switch (characterChoice) {
		case 1: {
			character = 's'; // For Scarlet
			current = hall;
			map->placeHall();
			break;
		}
		case 2: {
			character = 'm'; // For Mustard
			current = dining;
			map->placeDining();
			break;
		}
		case 3: {
			character = 'w'; // For White
			current = kitchen;
			map->placeKitchen();
			break;
		}
		case 4: {
			character = 'g'; // For Green
			current = ballroom;
			map->placeBallroom();
			break;
		}
		case 5: {
			character = 'p'; // For Peacock
			current = conservatory;
			map->placeConservatory();
			break;
		}
			case 6: {
			character = 'o'; // For original, Plum
			current = library;
			map->placeLibrary();
			break;
		}
		default:
			break;
	}

	cout << "Thank you, your choice has been noted." << endl;
	cout << "\nPress enter to continue." << endl;
	getchar();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq 0x13d25(%rip), %rdi     # 0x1afd0
movq %rdi, -0x28(%rbp)
leaq 0xb834(%rip), %rsi      # 0x12aea
callq 0x3200
movq %rax, %rdi
movq 0x13cfb(%rip), %rsi     # 0x1afc0
movq %rsi, -0x30(%rbp)
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc60d(%rip), %rsi      # 0x138e6
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc61b(%rip), %rsi      # 0x13910
callq 0x3200
movq -0x28(%rbp), %rdi
leaq 0xc68a(%rip), %rsi      # 0x1398f
callq 0x3200
movq -0x28(%rbp), %rdi
leaq 0xc6ab(%rip), %rsi      # 0x139c0
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc6cd(%rip), %rsi      # 0x139fe
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc6f7(%rip), %rsi      # 0x13a44
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc701(%rip), %rsi      # 0x13a6a
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc708(%rip), %rsi      # 0x13a8d
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc762(%rip), %rsi      # 0x13b03
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc75f(%rip), %rsi      # 0x13b1c
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc76d(%rip), %rsi      # 0x13b46
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc7aa(%rip), %rsi      # 0x13b9f
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc7ae(%rip), %rsi      # 0x13bbf
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc7ca(%rip), %rsi      # 0x13bf7
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc82d(%rip), %rsi      # 0x13c76
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc82d(%rip), %rsi      # 0x13c92
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc82c(%rip), %rsi      # 0x13cad
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc89a(%rip), %rsi      # 0x13d37
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc89b(%rip), %rsi      # 0x13d54
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc8a0(%rip), %rsi      # 0x13d75
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc8f7(%rip), %rsi      # 0x13de8
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc8fc(%rip), %rsi      # 0x13e09
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc90c(%rip), %rsi      # 0x13e35
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc973(%rip), %rsi      # 0x13eb8
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc973(%rip), %rsi      # 0x13ed4
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0xa630
movq -0x28(%rbp), %rdi
leaq 0xc969(%rip), %rsi      # 0x13ef2
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc95e(%rip), %rsi      # 0x13f03
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc952(%rip), %rsi      # 0x13f13
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc949(%rip), %rsi      # 0x13f26
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc93b(%rip), %rsi      # 0x13f34
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc92c(%rip), %rsi      # 0x13f41
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xc920(%rip), %rsi      # 0x13f51
callq 0x3200
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x3230
movq -0x28(%rbp), %rdi
leaq 0xd30d(%rip), %rsi      # 0x1495a
callq 0x3200
movq -0x20(%rbp), %rdi
movl $0x1, %esi
movl $0x6, %edx
callq 0x86e0
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x5, %eax
ja 0x7741
movq -0x18(%rbp), %rax
leaq 0xb065(%rip), %rcx      # 0x126ec
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rax
movb $0x73, 0x8a(%rax)
movq 0x60(%rax), %rcx
movq %rcx, 0x18(%rax)
movq (%rax), %rdi
callq 0xa570
jmp 0x7743
movq -0x20(%rbp), %rax
movb $0x6d, 0x8a(%rax)
movq 0x50(%rax), %rcx
movq %rcx, 0x18(%rax)
movq (%rax), %rdi
callq 0xa5d0
jmp 0x7743
movq -0x20(%rbp), %rax
movb $0x77, 0x8a(%rax)
movq 0x48(%rax), %rcx
movq %rcx, 0x18(%rax)
movq (%rax), %rdi
callq 0xa600
jmp 0x7743
movq -0x20(%rbp), %rax
movb $0x67, 0x8a(%rax)
movq 0x40(%rax), %rcx
movq %rcx, 0x18(%rax)
movq (%rax), %rdi
callq 0xa540
jmp 0x7743
movq -0x20(%rbp), %rax
movb $0x70, 0x8a(%rax)
movq 0x38(%rax), %rcx
movq %rcx, 0x18(%rax)
movq (%rax), %rdi
callq 0xa510
jmp 0x7743
movq -0x20(%rbp), %rax
movb $0x6f, 0x8a(%rax)
movq 0x28(%rax), %rcx
movq %rcx, 0x18(%rax)
movq (%rax), %rdi
callq 0xa4b0
jmp 0x7743
jmp 0x7743
movq 0x13886(%rip), %rdi     # 0x1afd0
leaq 0xc836(%rip), %rsi      # 0x13f87
callq 0x3200
movq %rax, %rdi
movq 0x13860(%rip), %rsi     # 0x1afc0
callq 0x3230
movq 0x13864(%rip), %rdi     # 0x1afd0
leaq 0xc83b(%rip), %rsi      # 0x13fae
callq 0x3200
movq %rax, %rdi
movq 0x1383e(%rip), %rsi     # 0x1afc0
callq 0x3230
callq 0x3300
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)