private Order ReadOrder(NetDataReader reader) { int playerIndex = reader.GetInt(); OrderType orderType = (OrderType)reader.GetInt(); var order = new Order(playerIndex, orderType); byte argumentCount = reader.GetByte(); for (int i = 0; i < argumentCount; i++) { OrderArgumentType argumentType = (OrderArgumentType)reader.GetInt(); switch (argumentType) { case OrderArgumentType.Integer: order.AddIntegerArgument(reader.GetInt()); break; case OrderArgumentType.Float: order.AddFloatArgument(reader.GetFloat()); break; case OrderArgumentType.Boolean: order.AddBooleanArgument(reader.GetBool()); break; case OrderArgumentType.ObjectId: order.AddObjectIdArgument(reader.GetUInt()); break; case OrderArgumentType.Position: order.AddPositionArgument(new Vector3(reader.GetFloat(), reader.GetFloat(), reader.GetFloat())); break; case OrderArgumentType.ScreenPosition: order.AddScreenPositionArgument(new Point2D(reader.GetInt(), reader.GetInt())); break; case OrderArgumentType.ScreenRectangle: order.AddScreenRectangleArgument(new Rectangle(reader.GetInt(), reader.GetInt(), reader.GetInt(), reader.GetInt())); break; default: throw new NotImplementedException("We don't know the other argument types"); } } return(order); }
internal OrderArgument( OrderArgumentType argumentType, in OrderArgumentValue value)