mirror of
				https://github.com/genxium/DelayNoMore
				synced 2025-10-30 19:06:52 +00:00 
			
		
		
		
	Added TurnAroundFramesToRecover.
This commit is contained in:
		
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -9,10 +9,10 @@ | ||||
|   </data> | ||||
|  </layer> | ||||
|  <objectgroup id="1" name="PlayerStartingPos"> | ||||
|   <object id="135" x="840" y="530"> | ||||
|   <object id="135" x="1400" y="580"> | ||||
|    <point/> | ||||
|   </object> | ||||
|   <object id="137" x="959" y="532"> | ||||
|   <object id="137" x="1500" y="580"> | ||||
|    <point/> | ||||
|   </object> | ||||
|  </objectgroup> | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -362,7 +362,7 @@ | ||||
|       "array": [ | ||||
|         0, | ||||
|         0, | ||||
|         209.57814771583418, | ||||
|         216.46608171234504, | ||||
|         0, | ||||
|         0, | ||||
|         0, | ||||
|   | ||||
| @@ -537,7 +537,7 @@ | ||||
|       "array": [ | ||||
|         0, | ||||
|         0, | ||||
|         209.57814771583418, | ||||
|         216.46608171234504, | ||||
|         0, | ||||
|         0, | ||||
|         0, | ||||
|   | ||||
| @@ -96,7 +96,7 @@ cc.Class({ | ||||
|       const p2Vpos = gopkgs.WorldToVirtualGridPos(boundaryObjs.playerStartingPositions[1].x, boundaryObjs.playerStartingPositions[1].y); | ||||
|       const colliderRadiusV = gopkgs.WorldToVirtualGridPos(12.0, 0); | ||||
|  | ||||
|       const speciesIdList = [4096, 1]; | ||||
|       const speciesIdList = [1, 4096]; | ||||
|       const chConfigsOrderedByJoinIndex = gopkgs.GetCharacterConfigsOrderedByJoinIndex(speciesIdList); | ||||
|  | ||||
|       const startRdf = window.pb.protos.RoomDownsyncFrame.create({ | ||||
|   | ||||
| @@ -169,30 +169,24 @@ cc.Class({ | ||||
|     if (self.btnA) { | ||||
|       self.btnA.on(cc.Node.EventType.TOUCH_START, function(evt) { | ||||
|         self._triggerEdgeBtnA(true); | ||||
|         evt.target.runAction(cc.scaleTo(0.1, 0.3)); | ||||
|       }); | ||||
|       self.btnA.on(cc.Node.EventType.TOUCH_END, function(evt) { | ||||
|         self._triggerEdgeBtnA(false); | ||||
|         evt.target.runAction(cc.scaleTo(0.1, 0.5)); | ||||
|       }); | ||||
|       self.btnA.on(cc.Node.EventType.TOUCH_CANCEL, function(evt) { | ||||
|         self._triggerEdgeBtnA(false); | ||||
|         evt.target.runAction(cc.scaleTo(0.1, 0.5)); | ||||
|       }); | ||||
|     } | ||||
|  | ||||
|     if (self.btnB) { | ||||
|       self.btnB.on(cc.Node.EventType.TOUCH_START, function(evt) { | ||||
|         self._triggerEdgeBtnB(true); | ||||
|         evt.target.runAction(cc.scaleTo(0.1, 0.3)); | ||||
|       }); | ||||
|       self.btnB.on(cc.Node.EventType.TOUCH_END, function(evt) { | ||||
|         self._triggerEdgeBtnB(false); | ||||
|         evt.target.runAction(cc.scaleTo(0.1, 0.5)); | ||||
|       }); | ||||
|       self.btnB.on(cc.Node.EventType.TOUCH_CANCEL, function(evt) { | ||||
|         self._triggerEdgeBtnB(false); | ||||
|         evt.target.runAction(cc.scaleTo(0.1, 0.5)); | ||||
|       }); | ||||
|     } | ||||
|  | ||||
| @@ -500,13 +494,23 @@ cc.Class({ | ||||
|       this.cachedBtnALevel = this.realtimeBtnALevel; | ||||
|       this.btnAEdgeTriggerLock = true; | ||||
|     } | ||||
|     if (rising) { | ||||
|       this.btnA.runAction(cc.scaleTo(0.1, 0.3)); | ||||
|     } else { | ||||
|       this.btnA.runAction(cc.scaleTo(0.1, 0.5)); | ||||
|     } | ||||
|   }, | ||||
|  | ||||
|   _triggerEdgeBtnB(rising) { | ||||
|   _triggerEdgeBtnB(rising, evt) { | ||||
|     this.realtimeBtnBLevel = (rising ? 1 : 0); | ||||
|     if (!this.btnBEdgeTriggerLock && (1 - this.realtimeBtnBLevel) == this.cachedBtnBLevel) { | ||||
|       this.cachedBtnBLevel = this.realtimeBtnBLevel; | ||||
|       this.btnBEdgeTriggerLock = true; | ||||
|     } | ||||
|     if (rising) { | ||||
|       this.btnB.runAction(cc.scaleTo(0.1, 0.3)); | ||||
|     } else { | ||||
|       this.btnB.runAction(cc.scaleTo(0.1, 0.5)); | ||||
|     } | ||||
|   }, | ||||
| }); | ||||
|   | ||||
| @@ -631,20 +631,34 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer | ||||
| 		} | ||||
|  | ||||
| 		if 0 == currPlayerDownsync.FramesToRecover { | ||||
| 			isWallJumping := (currPlayerDownsync.Speed < intAbs(currPlayerDownsync.VelX)) | ||||
| 			/* | ||||
| 			   if isWallJumping { | ||||
| 			       fmt.Printf("joinIndex=%d is wall jumping\n{renderFrame.id: %d, currPlayerDownsync.Speed: %d, currPlayerDownsync.VelX: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, currPlayerDownsync.Speed, currPlayerDownsync.VelX) | ||||
| 			   } | ||||
| 			*/ | ||||
| 			if 0 != effDx { | ||||
| 				xfac := int32(1) | ||||
| 				if 0 > effDx { | ||||
| 					xfac = -xfac | ||||
| 				} | ||||
| 				thatPlayerInNextFrame.DirX = effDx | ||||
| 				thatPlayerInNextFrame.DirY = effDy | ||||
| 				if !isWallJumping && 0 > effDx*thatPlayerInNextFrame.DirX { | ||||
| 					// [WARNING] A "turn-around", or in more generic direction schema a "change in direction" is a hurdle for our current "prediction+rollback" approach, yet applying a "FramesToRecover" for "turn-around" can alleviate the graphical inconsistence to a huge extent! For better operational experience, this is intentionally NOT APPLIED TO WALL JUMPING! | ||||
| 					thatPlayerInNextFrame.DirX = effDx | ||||
| 					thatPlayerInNextFrame.VelX = 0 | ||||
| 					thatPlayerInNextFrame.FramesToRecover = chConfig.TurnAroundFramesToRecover | ||||
| 				} else { | ||||
| 					xfac := int32(1) | ||||
| 					if 0 > effDx { | ||||
| 						xfac = -xfac | ||||
| 					} | ||||
| 					thatPlayerInNextFrame.DirX = effDx | ||||
| 					thatPlayerInNextFrame.DirY = effDy | ||||
|  | ||||
| 				thatPlayerInNextFrame.VelX = xfac * currPlayerDownsync.Speed | ||||
| 				if intAbs(thatPlayerInNextFrame.VelX) < intAbs(currPlayerDownsync.VelX) { | ||||
| 					// Wall jumping | ||||
| 					thatPlayerInNextFrame.VelX = xfac * intAbs(currPlayerDownsync.VelX) | ||||
| 					if isWallJumping { | ||||
| 						//fmt.Printf("joinIndex=%d is controlling while wall jumping\n{renderFrame.id: %d, currPlayerDownsync.Speed: %d, currPlayerDownsync.VelX: %d, effDx: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, currPlayerDownsync.Speed, currPlayerDownsync.VelX, effDx) | ||||
| 						thatPlayerInNextFrame.VelX = xfac * intAbs(currPlayerDownsync.VelX) | ||||
| 					} else { | ||||
| 						thatPlayerInNextFrame.VelX = xfac * currPlayerDownsync.Speed | ||||
| 					} | ||||
| 					thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_WALKING | ||||
| 				} | ||||
| 				thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_WALKING | ||||
| 			} else { | ||||
| 				thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1 | ||||
| 				thatPlayerInNextFrame.VelX = 0 | ||||
|   | ||||
| @@ -15,8 +15,9 @@ type CharacterConfig struct { | ||||
| 	GetUpInvinsibleFrames int32 | ||||
| 	GetUpFramesToRecover  int32 | ||||
|  | ||||
| 	Speed           int32 | ||||
| 	JumpingInitVelY int32 | ||||
| 	Speed                  int32 | ||||
| 	JumpingInitVelY        int32 | ||||
| 	JumpingFramesToRecover int32 // Not used yet | ||||
|  | ||||
| 	DashingEnabled             bool | ||||
| 	OnWallEnabled              bool | ||||
| @@ -25,6 +26,8 @@ type CharacterConfig struct { | ||||
| 	WallJumpingInitVelY        int32 | ||||
| 	WallSlidingVelY            int32 | ||||
|  | ||||
| 	TurnAroundFramesToRecover int32 | ||||
|  | ||||
| 	SkillMapper SkillMapperType | ||||
| } | ||||
|  | ||||
| @@ -42,8 +45,11 @@ var Characters = map[int]*CharacterConfig{ | ||||
| 		GetUpInvinsibleFrames: int32(10), | ||||
| 		GetUpFramesToRecover:  int32(27), | ||||
|  | ||||
| 		Speed:           int32(float64(2.0) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		Speed:                  int32(float64(2.5) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingInitVelY:        int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingFramesToRecover: int32(2), | ||||
|  | ||||
| 		TurnAroundFramesToRecover: int32(4), | ||||
|  | ||||
| 		DashingEnabled: false, | ||||
| 		OnWallEnabled:  false, | ||||
| @@ -88,13 +94,16 @@ var Characters = map[int]*CharacterConfig{ | ||||
| 		GetUpInvinsibleFrames: int32(10), | ||||
| 		GetUpFramesToRecover:  int32(27), | ||||
|  | ||||
| 		Speed:           int32(float64(2.0) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		Speed:                  int32(float64(2.6) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingInitVelY:        int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingFramesToRecover: int32(2), | ||||
|  | ||||
| 		TurnAroundFramesToRecover: int32(4), | ||||
|  | ||||
| 		DashingEnabled:             true, | ||||
| 		OnWallEnabled:              true, | ||||
| 		WallJumpingFramesToRecover: int32(9),                                          // 8 would be the minimum for an avg human | ||||
| 		WallJumpingInitVelX:        int32(float64(2.5) * WORLD_TO_VIRTUAL_GRID_RATIO), // Default is "appeared facing right", but actually holding ctrl against left | ||||
| 		WallJumpingFramesToRecover: int32(8),                                          // 8 would be the minimum for an avg human | ||||
| 		WallJumpingInitVelX:        int32(float64(2.8) * WORLD_TO_VIRTUAL_GRID_RATIO), // Default is "appeared facing right", but actually holding ctrl against left | ||||
| 		WallJumpingInitVelY:        int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		WallSlidingVelY:            int32(float64(-1) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
|  | ||||
| @@ -138,8 +147,11 @@ var Characters = map[int]*CharacterConfig{ | ||||
| 		GetUpInvinsibleFrames: int32(8), | ||||
| 		GetUpFramesToRecover:  int32(30), | ||||
|  | ||||
| 		Speed:           int32(float64(1.9) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		Speed:                  int32(float64(2.0) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingInitVelY:        int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO), | ||||
| 		JumpingFramesToRecover: int32(2), | ||||
|  | ||||
| 		TurnAroundFramesToRecover: int32(4), | ||||
|  | ||||
| 		DashingEnabled: false, | ||||
| 		OnWallEnabled:  false, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user