|
@@ -1079,7 +1079,9 @@ __attribute__((noinline)) void CPlayer::SetConstantSpeed(bool b1) {
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00174204 ^_^
|
|
|
-int CPlayer::GetAverageRunSpeed() { return 0; }
|
|
|
+int CPlayer::GetAverageRunSpeed() {
|
|
|
+ LOGE("GetAverageRunSpeed%p",this);
|
|
|
+ return rand(); }
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00174260 ^_^
|
|
|
void CPlayer::SetAverageRunSpeed(int i1) {}
|
|
@@ -1117,6 +1119,7 @@ int CPlayer::GetRunSpeed() {
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 001744CC
|
|
|
int CPlayer::AttributeInterpolate(EPlayerAttribute eAttr1, int i2, int i3) {
|
|
|
+ LOGE("AttributeInterpolate%p%x%x%x",this,eAttr1,i2,i3);
|
|
|
return 0;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
@@ -1134,8 +1137,73 @@ void CPlayer::SetUrgency(int i1) {
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 00174550 经过单元测试,功能正常
|
|
|
+// 00174550 经过单元测试,功能正常
|
|
|
void CPlayer::SetUrgencyTime(int i1, bool b2) {
|
|
|
- // LOGI("CPlayer::SetUrgencyTime %p %d", this, i1);
|
|
|
+ int r5_i = i1;
|
|
|
+ int r8_i = LOCO_SPEED_WALK_AVG;
|
|
|
+ if (!bool_2F) // 00174568
|
|
|
+ r8_i = LOCO_SPEED_WALK_MIN;
|
|
|
+
|
|
|
+ int r10_i = GetAverageRunSpeed();
|
|
|
+ int r9_i = GetSprintSpeed();
|
|
|
+
|
|
|
+ if (b2) {
|
|
|
+ // 00174584
|
|
|
+ r5_i = (r5_i * 3) / 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ // loc_174590
|
|
|
+ int r7_i = 1;
|
|
|
+ if (r5_i <= 1) { // 00174598
|
|
|
+ // 001745A4
|
|
|
+ r5_i = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ TPoint point_28_sp8=point_34;
|
|
|
+ // 001745A8
|
|
|
+ int r0_i = XMATH_Distance(&point_28_sp8, &point_78);
|
|
|
+ int r1_i = r5_i - s_32;
|
|
|
+ if (r1_i > 1) {
|
|
|
+ r7_i = r1_i;
|
|
|
+ }
|
|
|
+
|
|
|
+ int r6_i;
|
|
|
+ // 001745B6
|
|
|
+ // 001745BA
|
|
|
+ r0_i = r0_i / r7_i;
|
|
|
+ if (r0_i < r10_i) { // 001745BA
|
|
|
+ // 001745BE
|
|
|
+ r6_i = XMATH_InterpolateClamp(r0_i, r8_i, r10_i, 0, 0x800);
|
|
|
+ } else {
|
|
|
+ // loc_1745CC
|
|
|
+ r6_i = XMATH_InterpolateClamp(r0_i, r10_i, r9_i, 0x800, 0x1000);
|
|
|
+ }
|
|
|
+
|
|
|
+ // loc_1745DA
|
|
|
+ // 001745DE
|
|
|
+ r0_i = (r6_i - s_80) / AttributeInterpolate(EPlayerAttribute_4, 0x2D, 0x44);
|
|
|
+ if (r0_i >= 2) {
|
|
|
+ // 001745FC
|
|
|
+ r7_i = 4096;
|
|
|
+ r1_i = r0_i / 2;
|
|
|
+ // 00174606
|
|
|
+ if (r5_i > r1_i) {
|
|
|
+ // 0017460A
|
|
|
+ r0_i = (r6_i * r5_i) / (r5_i - r1_i);
|
|
|
+ if (r0_i < 4096)
|
|
|
+ r7_i = r0_i;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // loc_17461E
|
|
|
+ r7_i = r6_i;
|
|
|
+ }
|
|
|
+
|
|
|
+ // loc_174620
|
|
|
+ r0_i = (0x493E000 + (field_11C * 4096)) / 56250;
|
|
|
+ if (r7_i > r0_i) {
|
|
|
+ r7_i = r0_i;
|
|
|
+ }
|
|
|
+ s_82 = r7_i;
|
|
|
}
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
// 0017464C ^_- 经过单元测试,功能正常
|