How oiwexo/poolpredictor works
PoolPredictor is an Android overlay mod for 8 Ball Pool 5.8.0 that configures the table area and displays shot predictions and a floating settings menu. The documented entry point launches an activity, which checks overlay permission and starts a service; the service either sets up table selection or creates the prediction and menu overlays. Settings and table coordinates are persisted, while native code reads game state and computes shot results. Several Kotlin use-case and native bridge implementations were not sampled, so those connections are limited to relationships supported by the tree, names, and documented workflow.
Main entry points: PredictorService.kt Predictor service · MemoryManager.cpp Game memory access · RepositoryFactory.kt Repository factory · LauncherActivity.kt Launcher activity
Components 20
Launch and overlays
- Launcher activity
app/src/main/java/com/iwex/poolpredictor/presentation/activity/LauncherActivity.kt - Predictor service
app/src/main/java/com/iwex/poolpredictor/presentation/service/PredictorService.kt - Prediction and menu overlays
app/src/main/java/com/iwex/poolpredictor/presentation/view/PredictionView.kt
Setup and settings
- Table setup overlay
app/src/main/java/com/iwex/poolpredictor/presentation/view/tablePosition/TablePositionSetupView.kt - Table setup view models
app/src/main/java/com/iwex/poolpredictor/presentation/viewmodel/tablePosition/TablePositionSetupViewModel.kt - Aim and ESP tabs
app/src/main/java/com/iwex/poolpredictor/presentation/view/menu/tabs/AimTab.kt - Aim and ESP view models
app/src/main/java/com/iwex/poolpredictor/presentation/viewmodel/AimTabViewModel.kt
Application domain
- Settings and table use cases
app/src/main/java/com/iwex/poolpredictor/domain/usecase - Repository factory
app/src/main/java/com/iwex/poolpredictor/di/factory/RepositoryFactory.kt - Menu settings repository
app/src/main/java/com/iwex/poolpredictor/data/repository/MenuSettingsRepositoryImpl.kt - Table position repository
app/src/main/java/com/iwex/poolpredictor/data/repository/TablePositionRepositoryImpl.kt - Shared preferences
- Native repository
app/src/main/java/com/iwex/poolpredictor/data/repository/NativeRepositoryImpl.kt
Native prediction
- Kotlin native bridge
app/src/main/java/com/iwex/poolpredictor/data/NativeBridge.kt - JNI bridge
app/src/main/cpp/bridge/NativeBridge.cpp - Game memory access
app/src/main/cpp/mod/memory/MemoryManager.cpp - Game state readers
app/src/main/cpp/mod/memory/inner/GameManager.cpp - Shot prediction
app/src/main/cpp/mod/predictor/Prediction.cpp
Other components
- 8 Ball Pool host
- 8 Ball Pool process
Connections 18
- 8 Ball Pool host → Launcher activity: launches
- Launcher activity → Predictor service: starts
- Predictor service → Table setup overlay: shows setup
- Predictor service → Prediction and menu overlays: creates overlays
- Predictor service → Settings and table use cases: sets table position
- Table setup overlay → Table setup view models: updates selection
- Aim and ESP tabs → Aim and ESP view models: sends settings
- Repository factory → Menu settings repository: creates
- Repository factory → Table position repository: creates
- Menu settings repository → Shared preferences: reads and writes
- Table position repository → Shared preferences: reads and writes
- Repository factory → Native repository: creates
- Native repository → Kotlin native bridge: uses bridge
- Kotlin native bridge → JNI bridge: invokes JNI
- JNI bridge → Game memory access: accesses game state
- Game memory access → Game state readers: initializes readers
- Shot prediction → Game memory access: reads game data
- 8 Ball Pool process → Game memory access: provides process memory