@@ -5,6 +5,9 @@ import { getWeaponAttackDetails, hasCollision, getGameObjDamage } from "../items
5
5
import GameState from "./GameState" ;
6
6
import { ItemType } from "../items/UpgradeItems" ;
7
7
import { getHat } from "./Hats" ;
8
+ import { PacketType } from "../packets/PacketType" ;
9
+ import { Packet } from "../packets/Packet" ;
10
+ import { PacketFactory } from "../packets/PacketFactory" ;
8
11
9
12
function collideCircles ( pos1 : Vec2 , r1 : number , pos2 : Vec2 , r2 : number ) {
10
13
return pos1 . distance ( pos2 ) <= r1 + r2 ;
@@ -33,14 +36,25 @@ function collidePlayerGameObject(player: Player, gameObj: GameObject) {
33
36
34
37
function tryMovePlayer ( player : Player , delta : number , xVel : number , yVel : number , state : GameState ) {
35
38
let inTrap = false ;
39
+ let packetFactory = PacketFactory . getInstance ( ) ;
36
40
37
41
let newLocation = new Vec2 (
38
42
player . location . x ,
39
43
player . location . y
40
44
) ;
41
45
42
- for ( let gameObj of player . getNearbyGameObjects ( state ) ) {
46
+ for ( let gameObj of player . getNearbyGameObjects ( state , true ) ) {
43
47
if ( gameObj . isPlayerGameObject ( ) && collidePlayerGameObject ( player , gameObj ) ) {
48
+ if ( ! player . client ?. seenGameObjects . includes ( gameObj . id ) ) {
49
+ player . client ?. socket . send (
50
+ packetFactory . serializePacket (
51
+ new Packet ( PacketType . LOAD_GAME_OBJ , [ gameObj . getData ( ) ] )
52
+ )
53
+ ) ;
54
+
55
+ player . client ?. seenGameObjects . push ( gameObj . id ) ;
56
+ }
57
+
44
58
if (
45
59
gameObj . data === ItemType . PitTrap &&
46
60
gameObj . isEnemy ( player , state . tribes )
0 commit comments