// File: /workspace/github_cpp_makefile_star2_O2/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 0x2e7fe
mulss 0x8b335(%rip), %xmm0    # 0x9853c
addss 0x2e0(%rbx), %xmm0
movss %xmm0, 0x2e0(%rbx)
callq 0xa3ca
testb %al, %al
je 0xd256
cvtsi2ssl 0x2e8(%rbx), %xmm0
ucomiss 0x2e4(%rbx), %xmm0
jbe 0xd248
callq 0x2e7fe
addss 0x2e4(%rbx), %xmm0
movss %xmm0, 0x2e4(%rbx)
jmp 0xd256
andl $0x0, 0x2e4(%rbx)
xorl %edi, %edi
callq 0x9fa8
cmpb $0x1, 0x2c0(%rbx)
jne 0xd2be
movq %rbx, %rdi
callq 0xcfc6
movq %rbx, %rdi
callq 0xcd90
testb %al, %al
jne 0xd287
movl 0x2d0(%rbx), %eax
movl 0x2cc(%rbx), %ecx
orl %eax, %ecx
jne 0xd376
leaq 0x320(%rbx), %r15
movss 0x2e0(%rbx), %xmm0
movq %r15, %rdi
callq 0xd6f2
leaq 0x8(%rbx), %r12
leaq -0x68(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0xd72c
movq %r12, %rdi
movq %r14, %rsi
callq 0xdce4
jmp 0xd2f3
leaq 0x350(%rbx), %r15
movss 0x2e0(%rbx), %xmm0
movq %r15, %rdi
callq 0xd6f2
leaq 0x8(%rbx), %r12
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0xd72c
movq %r12, %rdi
movq %r14, %rsi
callq 0xdce4
movq %r14, %rdi
callq 0x83a0
movss 0x2d4(%rbx), %xmm0
movss 0x2d8(%rbx), %xmm1
movss %xmm0, 0x18(%rbx)
andl $0x0, 0x1c(%rbx)
movss %xmm1, 0x20(%rbx)
movsd 0x18(%rbx), %xmm0
callq 0xef4f
movss 0x2d4(%rbx), %xmm0
callq 0x88a0
cvttss2si %xmm0, %eax
movl %eax, 0x206d72(%rip)    # 0x2140ac
movss 0x2d8(%rbx), %xmm0
callq 0x88a0
cvttss2si %xmm0, %eax
movl %eax, 0x206d5f(%rip)    # 0x2140b0
movl 0x2d0(%rbx), %eax
movl %eax, 0x206d57(%rip)    # 0x2140b4
movl 0x2cc(%rbx), %eax
movl %eax, 0x206d4f(%rip)    # 0x2140b8
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 0x2e7fe
mulss -0x24(%rbp), %xmm0
addss -0x28(%rbp), %xmm0
movss 0x8b195(%rip), %xmm1    # 0x98540
callq 0x9e2e
movss %xmm0, 0x2d4(%rbx)
cvtsi2ssl 0x2cc(%rbx), %xmm1
movss 0x2d8(%rbx), %xmm0
movss %xmm0, -0x28(%rbp)
mulss 0x2dc(%rbx), %xmm1
movss %xmm1, -0x24(%rbp)
callq 0x2e7fe
mulss -0x24(%rbp), %xmm0
addss -0x28(%rbp), %xmm0
movss 0x8b153(%rip), %xmm1    # 0x98544
callq 0x9e2e
movss %xmm0, 0x2d8(%rbx)
leaq 0x2f0(%rbx), %r15
movss 0x2e0(%rbx), %xmm0
movq %r15, %rdi
callq 0xd6f2
leaq 0x8(%rbx), %r12
leaq -0x88(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0xd72c
movq %r12, %rdi
movq %r14, %rsi
callq 0xdce4
jmp 0xd2f3
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
jmp 0xd457
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
jmp 0xd457
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x83a0
movq %rbx, %rdi
callq 0x8ed0