Skip to content

Commit

Permalink
Merge pull request #188 from Freaku17/main
Browse files Browse the repository at this point in the history
Add Manual Camera mod
  • Loading branch information
Loup-Garou911XD authored Aug 5, 2023
2 parents 620a9af + e3cf069 commit 15cc3cf
Show file tree
Hide file tree
Showing 2 changed files with 261 additions and 0 deletions.
19 changes: 19 additions & 0 deletions plugins/utilities.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,25 @@
}
}
},
"manual_camera": {
"description": "Adjust the games camera angle/position. Open pause menu and press 'Manual Camera' button. Useable in OFFLINE/ONLINE/REPLAYS",
"external_url": "",
"authors": [
{
"name": "Droopy",
"email": "",
"discord": "Droopy#3730"
}
],
"versions": {
"1.0.0": {
"api_version": 8,
"commit_sha": "c26342d",
"released_on": "05-08-2023",
"md5sum": "8d6716d2fca5848a39909ef6bb87ce35"
}
}
},
"share_replay": {
"description": "Export replays to mods folder and share them with friends or have a backup",
"external_url": "",
Expand Down
242 changes: 242 additions & 0 deletions plugins/utilities/manual_camera.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
# ba_meta require api 8

###################
# Credits - Droopy#3730. #
###################

# Don't edit .


from __future__ import annotations
import _babase
import babase
import bascenev1 as bs
import bauiv1 as bui
from bauiv1lib.mainmenu import MainMenuWindow


class Manual_camera_window:
def __init__(self):
self._root_widget = bui.containerwidget(
on_outside_click_call=None,
size=(0, 0))
button_size = (50, 50)
self._text = bui.textwidget(parent=self._root_widget,
scale=0.65,
color=(0.75, 0.75, 0.75),
text='Cam Position',
size=(0, 0),
position=(500, 185),
h_align='center',
v_align='center')
self._xminus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.LEFT_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(429, 60),
on_activate_call=babase.Call(self._change_camera_position, 'x-'))
self._xplus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.RIGHT_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(538, 60),
on_activate_call=babase.Call(self._change_camera_position, 'x'))
self._yplus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.UP_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(482, 120),
on_activate_call=babase.Call(self._change_camera_position, 'y'))
self._yminus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.DOWN_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(482, 2),
on_activate_call=babase.Call(self._change_camera_position, 'y-'))
self.inwards = bui.buttonwidget(parent=self._root_widget,
size=(100, 30),
label='Zoom +',
repeat=True,
button_type='square',
autoselect=True,
position=(-550, -60),
on_activate_call=babase.Call(self._change_camera_position, 'z-'))
self._outwards = bui.buttonwidget(parent=self._root_widget,
size=(100, 30),
label='Zoom -',
repeat=True,
button_type='square',
autoselect=True,
position=(-550, -100),
on_activate_call=babase.Call(self._change_camera_position, 'z'))
self.target_text = bui.textwidget(parent=self._root_widget,
scale=0.65,
color=(0.75, 0.75, 0.75),
text='Cam Angle',
size=(0, 0),
position=(-462, 185),
h_align='center',
v_align='center')
self.target_xminus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.LEFT_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(-538, 60),
on_activate_call=babase.Call(self._change_camera_target, 'x-'))
self.target_xplus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.RIGHT_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(-429, 60),
on_activate_call=babase.Call(self._change_camera_target, 'x'))
self.target_yplus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.UP_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(-482, 120),
on_activate_call=babase.Call(self._change_camera_target, 'y'))
self.target_yminus = bui.buttonwidget(parent=self._root_widget,
size=button_size,
label=babase.charstr(babase.SpecialChar.DOWN_ARROW),
repeat=True,
button_type='square',
autoselect=True,
position=(-482, 2),
on_activate_call=babase.Call(self._change_camera_target, 'y-'))
self._step_text = bui.textwidget(parent=self._root_widget,
scale=0.85,
color=(1, 1, 1),
text='Step:',
size=(0, 0),
position=(450, -38),
h_align='center',
v_align='center')
self._text_field = bui.textwidget(
parent=self._root_widget,
editable=True,
size=(100, 40),
position=(480, -55),
text='',
maxwidth=120,
flatness=1.0,
autoselect=True,
v_align='center',
corner_scale=0.7)
self._reset = bui.buttonwidget(parent=self._root_widget,
size=(50, 30),
label='Reset',
button_type='square',
autoselect=True,
position=(450, -100),
on_activate_call=babase.Call(self._change_camera_position, 'reset'))
self._done = bui.buttonwidget(parent=self._root_widget,
size=(50, 30),
label='Done',
button_type='square',
autoselect=True,
position=(520, -100),
on_activate_call=self._close)
bui.containerwidget(edit=self._root_widget,
cancel_button=self._done)

def _close(self):
bui.containerwidget(edit=self._root_widget,
transition=('out_scale'))
MainMenuWindow()

def _change_camera_position(self, direction):
camera = _babase.get_camera_position()
x = camera[0]
y = camera[1]
z = camera[2]

try:
increment = float(bui.textwidget(query=self._text_field))
except:
increment = 1

if direction == 'x':
x += increment
elif direction == 'x-':
x -= increment
elif direction == 'y':
y += increment
elif direction == 'y-':
y -= increment
elif direction == 'z':
z += increment
elif direction == 'z-':
z -= increment
elif direction == 'reset':
_babase.set_camera_manual(False)
return

_babase.set_camera_manual(True)
_babase.set_camera_position(x, y, z)

def _change_camera_target(self, direction):
camera = _babase.get_camera_target()
x = camera[0]
y = camera[1]
z = camera[2]

try:
increment = float(bui.textwidget(query=self._text_field))
except:
increment = 1

if direction == 'x':
x += increment
elif direction == 'x-':
x -= increment
elif direction == 'y':
y += increment
elif direction == 'y-':
y -= increment

_babase.set_camera_manual(True)
_babase.set_camera_target(x, y, z)


old_refresh_in_game = MainMenuWindow._refresh_in_game


def my_refresh_in_game(self, *args, **kwargs):
value = old_refresh_in_game.__get__(self)(*args, **kwargs)
camera_button = bui.buttonwidget(
parent=self._root_widget,
autoselect=True,
position=(-65, 100),
size=(70, 50),
button_type='square',
label='Manual\nCamera',
text_scale=1.5,
on_activate_call=self._manual_camera)
return value


def _manual_camera(self):
bui.containerwidget(edit=self._root_widget, transition='out_scale')
Manual_camera_window()

# ba_meta export plugin


class ByDroopy(babase.Plugin):
def __init__(self):
MainMenuWindow._refresh_in_game = my_refresh_in_game
MainMenuWindow._manual_camera = _manual_camera

0 comments on commit 15cc3cf

Please sign in to comment.