// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/WorldState.cpp
// Function: WorldStateUpdater::UpdateFieldInfo()
void WorldStateUpdater::UpdateFieldInfo() {
  mpWorldState->mCurrentTime = mpObserver->CurrentTime();
  mpWorldState->mIsBallDropped = mpObserver->IsBallDropped();
  mpWorldState->mKickOffMode = mpObserver->GetKickOffMode();

  if (mpWorldState->mPlayMode != mpObserver->GetPlayMode()) {
    mpWorldState->mLastPlayMode = mpWorldState->mPlayMode;
    mpWorldState->mPlayMode = mpObserver->GetPlayMode();
    mpWorldState->mPlayModeTime = mpObserver->CurrentTime();
  }

  Formation::instance.SetOpponentGoalieUnum(
      mpObserver->OppGoalieUnum()); // 设置OpponentFormation的守门员号码
  mpWorldState->mTeammateGoalieUnum = PlayerParam::instance().ourGoalieUnum();
  mpWorldState->mOpponentGoalieUnum = mpObserver->OppGoalieUnum();

  mpWorldState->mTeammateScore = mpObserver->OurScore();
  mpWorldState->mOpponentScore = mpObserver->OppScore();

  if (mpWorldState->GetHistory(1) &&
      mpWorldState->GetHistory(1)->CurrentTime().T() ==
          mpWorldState->mCurrentTime.T()) {
    mpWorldState->mIsCycleStopped = true;
  } else {
    mpWorldState->mIsCycleStopped = false;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq %rax, %rdx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
movq (%rdx), %rdx
movq %rdx, 0x10(%rcx)
movq (%rax), %rdi
callq 0xbcdc0
movb %al, %dl
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
andb $0x1, %dl
movb %dl, 0x2c(%rcx)
movq (%rax), %rdi
callq 0xbcde0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movl (%rcx), %edx
movq 0x8(%rax), %rcx
movl %edx, 0x18(%rcx)
movq 0x8(%rax), %rcx
movl 0x1c(%rcx), %ecx
movl %ecx, -0xc(%rbp)
movq (%rax), %rdi
callq 0x28970
movq %rax, %rcx
movl -0xc(%rbp), %eax
cmpl (%rcx), %eax
je 0xad8ee
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
movl 0x1c(%rcx), %edx
movq 0x8(%rax), %rcx
movl %edx, 0x20(%rcx)
movq (%rax), %rdi
callq 0x28970
movq %rax, %rcx
movq -0x18(%rbp), %rax
movl (%rcx), %edx
movq 0x8(%rax), %rcx
movl %edx, 0x1c(%rcx)
movq (%rax), %rdi
callq 0x11a70
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rcx), %rcx
movq %rcx, 0x24(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rdi
callq 0xbce00
movl (%rax), %esi
leaq 0x578cd(%rip), %rdi     # 0x1051d0
callq 0x3f920
callq 0x798a0
movq %rax, %rdi
callq 0x29520
movq %rax, %rcx
movq -0x18(%rbp), %rax
movl (%rcx), %edx
movq 0x8(%rax), %rcx
movl %edx, 0x2110(%rcx)
movq (%rax), %rdi
callq 0xbce00
movq %rax, %rcx
movq -0x18(%rbp), %rax
movl (%rcx), %edx
movq 0x8(%rax), %rcx
movl %edx, 0x2114(%rcx)
movq (%rax), %rdi
callq 0xbce20
movq %rax, %rcx
movq -0x18(%rbp), %rax
movl (%rcx), %edx
movq 0x8(%rax), %rcx
movl %edx, 0x2118(%rcx)
movq (%rax), %rdi
callq 0xbce40
movq %rax, %rcx
movq -0x18(%rbp), %rax
movl (%rcx), %edx
movq 0x8(%rax), %rcx
movl %edx, 0x211c(%rcx)
movq 0x8(%rax), %rdi
movl $0x1, %esi
callq 0xab550
cmpq $0x0, %rax
je 0xad9df
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x1, %esi
callq 0xab550
movq %rax, %rdi
callq 0x12100
movq %rax, %rdi
callq 0x13040
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, -0x1c(%rbp)
movq 0x8(%rax), %rdi
addq $0x10, %rdi
callq 0x13040
movl %eax, %ecx
movl -0x1c(%rbp), %eax
cmpl %ecx, %eax
jne 0xad9df
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movb $0x1, 0x2120(%rax)
jmp 0xad9ee
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movb $0x0, 0x2120(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)