// File: /workspace/github_cpp_makefile_star2_O3/KellerMartins[P]PDS2-Pacman/source/game/pacman.cpp
// Function: Pacman::OnUpdate()
void Pacman::OnUpdate(){
	
	_timerAnimacao += GetFrameTime() * 9 /*Frames por segundo*/;

	
	if(Enemy::IsScared()){
		 if(_timerScared < _scaredTime){
		_timerScared += GetFrameTime();
		}
		else{
			_timerScared = 0;
			Enemy::GetScared(false);
		}
	}
	
	if(_vivo){
		CalculaDirecao();
		bool colidiu = VerificaPosicao();
		if(!colidiu && (_direcaoX != 0 || _direcaoY != 0)){
			_x = fModulus(_x + _direcaoX*_velocidade*GetFrameTime(), LARGURA);
			_y = fModulus(_y + _direcaoY*_velocidade*GetFrameTime(), ALTURA);

			_andando.SetTimer(_timerAnimacao);
			_modelo.Load3DModel(_andando.GetCurrentFrame());
		}else{
			_parado.SetTimer(_timerAnimacao);
			_modelo.Load3DModel(_parado.GetCurrentFrame());
		}
	}else{
		_morrendo.SetTimer(_timerAnimacao);
		_modelo.Load3DModel(_morrendo.GetCurrentFrame());
	}
	_modelo.position = (Vector3){(float)_x, 0, (float)_y};

	RenderManager::CameraFollow(_modelo.position);

	_xToGhost = round(_x);
	_yToGhost = round(_y);
	_dirxToGhost = _direcaoX;
	_diryToGhost = _direcaoY;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x70, %rsp
movq %rdi, %rbx
callq 0x2f43a
mulss 0x8bb81(%rip), %xmm0    # 0x99514
addss 0x2e0(%rbx), %xmm0
movss %xmm0, 0x2e0(%rbx)
callq 0xa5fe
testb %al, %al
je 0xd9e8
xorps %xmm0, %xmm0
cvtsi2ssl 0x2e8(%rbx), %xmm0
ucomiss 0x2e4(%rbx), %xmm0
jbe 0xd9d7
callq 0x2f43a
addss 0x2e4(%rbx), %xmm0
movss %xmm0, 0x2e4(%rbx)
jmp 0xd9e8
movl $0x0, 0x2e4(%rbx)
xorl %edi, %edi
callq 0xa162
cmpb $0x1, 0x2c0(%rbx)
jne 0xda54
movq %rbx, %rdi
callq 0xd744
movq %rbx, %rdi
callq 0xd4da
testb %al, %al
jne 0xda19
movl 0x2d0(%rbx), %eax
movl 0x2cc(%rbx), %ecx
orl %eax, %ecx
jne 0xdb1f
leaq 0x320(%rbx), %r14
movss 0x2e0(%rbx), %xmm0
movq %r14, %rdi
callq 0xdfee
leaq 0x8(%rbx), %r15
leaq -0x68(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xe02c
movq %r15, %rdi
movq %r12, %rsi
callq 0xe604
leaq -0x58(%rbp), %rax
jmp 0xda8d
leaq 0x350(%rbx), %r14
movss 0x2e0(%rbx), %xmm0
movq %r14, %rdi
callq 0xdfee
leaq 0x8(%rbx), %r15
leaq -0x48(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xe02c
movq %r15, %rdi
movq %r12, %rsi
callq 0xe604
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdaa1
movq (%rax), %rsi
incq %rsi
callq 0x8880
movss 0x2d4(%rbx), %xmm0
movss 0x2d8(%rbx), %xmm1
movss %xmm0, 0x18(%rbx)
movl $0x0, 0x1c(%rbx)
movss %xmm1, 0x20(%rbx)
movsd 0x18(%rbx), %xmm0
callq 0xf9ff
movss 0x2d4(%rbx), %xmm0
callq 0x8890
cvttss2si %xmm0, %eax
movl %eax, 0x2075a9(%rip)    # 0x21508c
movss 0x2d8(%rbx), %xmm0
callq 0x8890
cvttss2si %xmm0, %eax
movl %eax, 0x207596(%rip)    # 0x215090
movl 0x2d0(%rbx), %eax
movl %eax, 0x20758e(%rip)    # 0x215094
movl 0x2cc(%rbx), %eax
movl %eax, 0x207586(%rip)    # 0x215098
addq $0x70, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
cvtsi2ss %eax, %xmm1
movss 0x2d4(%rbx), %xmm0
movss %xmm0, -0x28(%rbp)
mulss 0x2dc(%rbx), %xmm1
movss %xmm1, -0x24(%rbp)
callq 0x2f43a
mulss -0x24(%rbp), %xmm0
addss -0x28(%rbp), %xmm0
movss 0x8b9c4(%rip), %xmm1    # 0x99518
callq 0x9f9c
movss %xmm0, 0x2d4(%rbx)
xorps %xmm1, %xmm1
cvtsi2ssl 0x2cc(%rbx), %xmm1
movss 0x2d8(%rbx), %xmm0
movss %xmm0, -0x28(%rbp)
mulss 0x2dc(%rbx), %xmm1
movss %xmm1, -0x24(%rbp)
callq 0x2f43a
mulss -0x24(%rbp), %xmm0
addss -0x28(%rbp), %xmm0
movss 0x8b97f(%rip), %xmm1    # 0x9951c
callq 0x9f9c
movss %xmm0, 0x2d8(%rbx)
leaq 0x2f0(%rbx), %r14
movss 0x2e0(%rbx), %xmm0
movq %r14, %rdi
callq 0xdfee
leaq 0x8(%rbx), %r15
leaq -0x88(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xe02c
movq %r15, %rdi
movq %r12, %rsi
callq 0xe604
leaq -0x78(%rbp), %rax
jmp 0xda8d
movq %rax, %rbx
leaq -0x78(%rbp), %rax
jmp 0xdc04
movq %rax, %rbx
leaq -0x58(%rbp), %rax
jmp 0xdc04
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc18
movq (%rax), %rsi
incq %rsi
callq 0x8880
movq %rbx, %rdi
callq 0x8ea0