// File: 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
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xb0(%rbp)
callq 0x3b476
movq -0xb0(%rbp), %rax
movss 0x2e0(%rax), %xmm1
movss 0x911aa(%rip), %xmm2    # 0xa5400
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x2e0(%rax)
callq 0xc380
testb $0x1, %al
jne 0x14271
jmp 0x142c6
movq -0xb0(%rbp), %rax
movss 0x2e4(%rax), %xmm1
cvtsi2ssl 0x2e8(%rax), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x142ab
callq 0x3b476
movq -0xb0(%rbp), %rax
addss 0x2e4(%rax), %xmm0
movss %xmm0, 0x2e4(%rax)
jmp 0x142c4
movq -0xb0(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x2e4(%rax)
xorl %edi, %edi
callq 0xbc70
jmp 0x142c6
movq -0xb0(%rbp), %rax
testb $0x1, 0x2c0(%rax)
je 0x1450d
movq -0xb0(%rbp), %rdi
callq 0x13f10
movq -0xb0(%rbp), %rdi
callq 0x13bd0
andb $0x1, %al
movb %al, -0x9(%rbp)
testb $0x1, -0x9(%rbp)
jne 0x14480
movq -0xb0(%rbp), %rax
cmpl $0x0, 0x2d0(%rax)
jne 0x14325
movq -0xb0(%rbp), %rax
cmpl $0x0, 0x2cc(%rax)
je 0x14480
movq -0xb0(%rbp), %rax
cvtsi2ssl 0x2d0(%rax), %xmm0
movss 0x2d4(%rax), %xmm1
movss %xmm1, -0xd8(%rbp)
movss 0x2dc(%rax), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0xd4(%rbp)
callq 0x3b476
movss -0xd8(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0xd4(%rbp), %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x91084(%rip), %xmm1    # 0xa5404
callq 0xba10
movq -0xb0(%rbp), %rax
movss %xmm0, 0x2d4(%rax)
cvtsi2ssl 0x2cc(%rax), %xmm0
movss 0x2d8(%rax), %xmm1
movss %xmm1, -0xd0(%rbp)
movss 0x2dc(%rax), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0xcc(%rbp)
callq 0x3b476
movss -0xd0(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0xcc(%rbp), %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x91020(%rip), %xmm1    # 0xa5408
callq 0xba10
movq -0xb0(%rbp), %rax
movss %xmm0, 0x2d8(%rax)
movq %rax, %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movq %rdi, -0xc8(%rbp)
movss 0x2e0(%rax), %xmm0
callq 0x14b20
movq -0xb0(%rbp), %rax
movq -0xc8(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0xc0(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x14ba0
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x15e90
jmp 0x14458
leaq -0x30(%rbp), %rdi
callq 0x9530
jmp 0x14508
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x9530
jmp 0x14681
movq -0xb0(%rbp), %rax
movq %rax, %rdi
addq $0x320, %rdi            # imm = 0x320
movq %rdi, -0xf0(%rbp)
movss 0x2e0(%rax), %xmm0
callq 0x14b20
movq -0xb0(%rbp), %rax
movq -0xf0(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0xe8(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x14ba0
movq -0xe8(%rbp), %rdi
movq -0xe0(%rbp), %rsi
callq 0x15e90
jmp 0x144e3
leaq -0x60(%rbp), %rdi
callq 0x9530
jmp 0x14508
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x9530
jmp 0x14681
jmp 0x14595
movq -0xb0(%rbp), %rax
movq %rax, %rdi
addq $0x350, %rdi            # imm = 0x350
movq %rdi, -0x108(%rbp)
movss 0x2e0(%rax), %xmm0
callq 0x14b20
movq -0xb0(%rbp), %rax
movq -0x108(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0x100(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x14ba0
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rsi
callq 0x15e90
jmp 0x14570
leaq -0x80(%rbp), %rdi
callq 0x9530
jmp 0x14595
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x9530
jmp 0x14681
movq -0xb0(%rbp), %rax
movss 0x2d4(%rax), %xmm0
movss %xmm0, -0x8c(%rbp)
movl $0x0, -0x88(%rbp)
movss 0x2d8(%rax), %xmm0
movss %xmm0, -0x84(%rbp)
movl -0x84(%rbp), %ecx
movl %ecx, 0x20(%rax)
movq -0x8c(%rbp), %rcx
movq %rcx, 0x18(%rax)
movl 0x20(%rax), %ecx
movl %ecx, -0x90(%rbp)
movq 0x18(%rax), %rax
movq %rax, -0x98(%rbp)
movl -0x90(%rbp), %eax
movl %eax, -0xa0(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
movss -0xa0(%rbp), %xmm1
callq 0x18ac0
movq -0xb0(%rbp), %rax
movss 0x2d4(%rax), %xmm0
callq 0x14890
movq -0xb0(%rbp), %rax
cvttss2si %xmm0, %ecx
movl %ecx, 0x211aaa(%rip)    # 0x2260ec
movss 0x2d8(%rax), %xmm0
callq 0x14890
movq -0xb0(%rbp), %rax
cvttss2si %xmm0, %ecx
movl %ecx, 0x211a90(%rip)    # 0x2260f0
movl 0x2d0(%rax), %ecx
movl %ecx, 0x211a88(%rip)    # 0x2260f4
movl 0x2cc(%rax), %eax
movl %eax, 0x211a80(%rip)    # 0x2260f8
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x9f50
nopw (%rax,%rax)