RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
CameraViewPacket.java
1package com.osroyale.net.packet.out;
2
3import com.osroyale.game.world.entity.mob.player.Player;
4import com.osroyale.game.world.position.Position;
5import com.osroyale.net.codec.ByteOrder;
6import com.osroyale.net.packet.OutgoingPacket;
7import com.osroyale.net.packet.PacketType;
8import com.osroyale.net.packet.context.CameraContext;
9import com.osroyale.net.packet.context.CameraContext.CameraType;
10
36
37public final class CameraViewPacket extends OutgoingPacket {
38
39 private final CameraContext context;
40
41 public CameraViewPacket(CameraContext context) {
42 super(context.getType().opcode(), PacketType.FIXED);
43 this.context = context;
44 }
45
46 @Override
47 protected boolean encode(Player player) {
48 CameraType type = context.getType();
49 Position playerPos = context.getPlayer().getPosition();
50
51 switch (type) {
52 case ROTATION:
53 case POSITION:
54 // Convert world coordinates to scene coordinates (local to player's loaded region)
55 int localX = context.getX() - (playerPos.getX() - (playerPos.getX() % 8));
56 int localY = context.getY() - (playerPos.getY() - (playerPos.getY() % 8));
57
58 builder.writeShort(0); // packet count - simplified for now
59 builder.writeByte(localX);
60 builder.writeByte(localY);
61 builder.writeShort(context.getHeight());
62 builder.writeByte(context.getSpeed());
63 builder.writeByte(context.getZoomSpeed());
64 break;
65
66 case SET:
67 builder.writeShort(context.getX(), ByteOrder.LE);
68 builder.writeShort(context.getY(), ByteOrder.LE);
69 break;
70
71 case SHAKE:
72 builder.writeShort(0); // packet count
73 builder.writeByte(context.getX());
74 builder.writeByte(context.getY());
75 builder.writeByte(context.getSpeed());
76 builder.writeByte(context.getZoomSpeed());
77 builder.writeShort(context.getHeight());
78 break;
79
80 case RESET:
81 builder.writeShort(0); // packet count
82 break;
83 }
84 return true;
85 }
86}