Initial commit: Bcut-style Taiko Editor
This commit is contained in:
81
main.py
Normal file
81
main.py
Normal file
@@ -0,0 +1,81 @@
|
||||
import pygame
|
||||
import sys
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
from editor_core import EditorState
|
||||
from ui import UI
|
||||
|
||||
def main():
|
||||
# Initialize Tkinter for file dialog
|
||||
try:
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
# Ensure dialog comes to front
|
||||
root.attributes('-topmost', True)
|
||||
|
||||
print("Please select an OGG file to start editing...")
|
||||
file_path = filedialog.askopenfilename(
|
||||
title="Select Audio File",
|
||||
filetypes=[("Audio Files", "*.ogg"), ("TJA Files", "*.tja"), ("All Files", "*.*")]
|
||||
)
|
||||
root.destroy()
|
||||
except KeyboardInterrupt:
|
||||
print("\nOperation cancelled by user.")
|
||||
return
|
||||
except Exception as e:
|
||||
print(f"Error opening file dialog: {e}")
|
||||
return
|
||||
|
||||
if not file_path:
|
||||
print("No file selected. Exiting.")
|
||||
return
|
||||
|
||||
# Initialize Pygame
|
||||
pygame.init()
|
||||
pygame.mixer.init()
|
||||
|
||||
SCREEN_WIDTH = 1024
|
||||
SCREEN_HEIGHT = 600
|
||||
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
|
||||
pygame.display.set_caption("Taiko Editor (Python)")
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
# Initialize Editor
|
||||
editor = EditorState()
|
||||
editor.load_file(file_path)
|
||||
|
||||
ui = UI(editor, SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||
|
||||
running = True
|
||||
while running:
|
||||
dt = clock.tick(60) # ms since last frame
|
||||
|
||||
# Event Handling
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
elif event.type == pygame.KEYDOWN:
|
||||
if event.key == pygame.K_SPACE:
|
||||
editor.toggle_play()
|
||||
elif event.key == pygame.K_s and (pygame.key.get_mods() & pygame.KMOD_CTRL):
|
||||
editor.save()
|
||||
print("Saved!")
|
||||
elif event.key == pygame.K_DELETE:
|
||||
editor.remove_selected()
|
||||
|
||||
ui.handle_event(event)
|
||||
|
||||
# Update
|
||||
editor.update(dt)
|
||||
|
||||
# Draw
|
||||
ui.draw(screen)
|
||||
|
||||
pygame.display.flip()
|
||||
|
||||
pygame.quit()
|
||||
sys.exit()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user