|
|
|
"""
|
|
Debug script to test keyboard controls and private chat functionality with detailed logging.
|
|
"""
|
|
|
|
import time
|
|
import requests
|
|
from src.facades.game_facade import GameFacade
|
|
from src.services.chat_service import ChatService
|
|
|
|
def test_keyboard_functionality():
|
|
"""Test keyboard controls with detailed logging."""
|
|
print("🎮 Testing Keyboard Controls Functionality")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
|
|
facade = GameFacade()
|
|
|
|
|
|
player_id = facade.join_game("KeyboardDebugger")
|
|
print(f"✅ Test player created: {player_id}")
|
|
|
|
|
|
initial_state = facade.get_player_state(player_id)
|
|
print(f"📍 Initial position: ({initial_state['x']}, {initial_state['y']})")
|
|
|
|
|
|
movements = [
|
|
("up", "🔼", "w"),
|
|
("down", "🔽", "s"),
|
|
("left", "◀️", "a"),
|
|
("right", "▶️", "d")
|
|
]
|
|
|
|
print("\n🎯 Testing movement commands (backend):")
|
|
for direction, icon, key in movements:
|
|
try:
|
|
print(f" {icon} Testing {direction} movement (key: {key})...")
|
|
result = facade.move_player(player_id, direction)
|
|
|
|
if result:
|
|
new_state = facade.get_player_state(player_id)
|
|
print(f" ✅ Success - New position: ({new_state['x']}, {new_state['y']})")
|
|
else:
|
|
print(f" ❌ Failed - Movement blocked or invalid")
|
|
|
|
time.sleep(0.5)
|
|
|
|
except Exception as e:
|
|
print(f" ❌ Error: {str(e)}")
|
|
|
|
|
|
print(f"\n⚡ Testing special action (spacebar)...")
|
|
try:
|
|
result = facade.action_command(player_id, "special")
|
|
print(f" {'✅ Success' if result else '❌ Failed'}")
|
|
except Exception as e:
|
|
print(f" ❌ Error: {str(e)}")
|
|
|
|
|
|
facade.leave_game(player_id)
|
|
print(f"\n🧹 Cleanup: Player {player_id} removed")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"❌ Keyboard test failed: {str(e)}")
|
|
return False
|
|
|
|
def test_private_chat_functionality():
|
|
"""Test private chat with detailed logging."""
|
|
print("\n💬 Testing Private Chat Functionality")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
|
|
facade = GameFacade()
|
|
chat_service = ChatService()
|
|
|
|
|
|
player1_id = facade.join_game("ChatTester1")
|
|
player2_id = facade.join_game("ChatTester2")
|
|
print(f"✅ Test players created: {player1_id}, {player2_id}")
|
|
|
|
|
|
print(f"\n📤 Testing private message sending...")
|
|
try:
|
|
result = chat_service.send_private_message(
|
|
sender_id=player1_id,
|
|
recipient_id=player2_id,
|
|
message="Hello from keyboard debug test!"
|
|
)
|
|
print(f" {'✅ Message sent successfully' if result else '❌ Message failed to send'}")
|
|
except Exception as e:
|
|
print(f" ❌ Send error: {str(e)}")
|
|
|
|
|
|
print(f"\n📥 Testing private message retrieval...")
|
|
try:
|
|
messages = chat_service.get_private_messages(player1_id, player2_id)
|
|
print(f" ✅ Retrieved {len(messages)} messages")
|
|
for i, msg in enumerate(messages[-3:], 1):
|
|
print(f" {i}. [{msg['timestamp']}] {msg['sender_id']}: {msg['message']}")
|
|
except Exception as e:
|
|
print(f" ❌ Retrieval error: {str(e)}")
|
|
|
|
|
|
print(f"\n👥 Testing nearby entities detection...")
|
|
try:
|
|
nearby = facade.get_nearby_entities(player1_id)
|
|
print(f" ✅ Found {len(nearby)} nearby entities")
|
|
for entity in nearby:
|
|
print(f" - {entity['id']} ({entity['type']}) at distance {entity.get('distance', 'unknown')}")
|
|
except Exception as e:
|
|
print(f" ❌ Nearby detection error: {str(e)}")
|
|
|
|
|
|
print(f"\n📚 Testing chat history...")
|
|
try:
|
|
history = chat_service.get_chat_history(player1_id, limit=5)
|
|
print(f" ✅ Retrieved {len(history)} chat records")
|
|
except Exception as e:
|
|
print(f" ❌ History error: {str(e)}")
|
|
|
|
|
|
facade.leave_game(player1_id)
|
|
facade.leave_game(player2_id)
|
|
print(f"\n🧹 Cleanup: Test players removed")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"❌ Private chat test failed: {str(e)}")
|
|
return False
|
|
|
|
def test_server_connectivity():
|
|
"""Test server connectivity and UI availability."""
|
|
print("\n🌐 Testing Server Connectivity")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
|
|
print("📡 Testing main application...")
|
|
response = requests.get("http://localhost:7865", timeout=10)
|
|
print(f" Status: {'✅ Online' if response.status_code == 200 else '❌ Error'}")
|
|
print(f" Response time: {response.elapsed.total_seconds():.2f}s")
|
|
print(f" Content length: {len(response.content)} bytes")
|
|
|
|
|
|
print("\n🖥️ Testing Gradio interface...")
|
|
if "gradio" in response.text.lower() or "interface" in response.text.lower():
|
|
print(" ✅ Gradio interface detected")
|
|
else:
|
|
print(" ⚠️ Gradio interface not clearly detected")
|
|
|
|
|
|
print("\n⌨️ Checking keyboard script integration...")
|
|
if "gamekeyboard" in response.text.lower() or "wasd" in response.text.lower():
|
|
print(" ✅ Keyboard controls detected in page")
|
|
else:
|
|
print(" ❌ Keyboard controls not found in page")
|
|
|
|
|
|
print("\n💬 Checking private chat integration...")
|
|
if "private" in response.text.lower() and "chat" in response.text.lower():
|
|
print(" ✅ Private chat elements detected")
|
|
else:
|
|
print(" ❌ Private chat elements not clearly detected")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"❌ Server connectivity test failed: {str(e)}")
|
|
return False
|
|
|
|
def main():
|
|
"""Run comprehensive debug tests."""
|
|
print("🔍 MMORPG Features Debug Test")
|
|
print("=" * 60)
|
|
print("Testing keyboard controls and private chat functionality...")
|
|
|
|
|
|
keyboard_ok = test_keyboard_functionality()
|
|
chat_ok = test_private_chat_functionality()
|
|
server_ok = test_server_connectivity()
|
|
|
|
|
|
print("\n" + "=" * 60)
|
|
print("📊 TEST SUMMARY")
|
|
print("=" * 60)
|
|
print(f"🎮 Keyboard Controls: {'✅ PASS' if keyboard_ok else '❌ FAIL'}")
|
|
print(f"💬 Private Chat: {'✅ PASS' if chat_ok else '❌ FAIL'}")
|
|
print(f"🌐 Server Connectivity: {'✅ PASS' if server_ok else '❌ FAIL'}")
|
|
|
|
if all([keyboard_ok, chat_ok, server_ok]):
|
|
print("\n🎉 All features working! Issues may be in frontend integration.")
|
|
print("\n💡 Next steps to fix UI issues:")
|
|
print(" 1. Check JavaScript console for errors")
|
|
print(" 2. Verify keyboard script is properly loaded")
|
|
print(" 3. Ensure private chat UI is properly connected")
|
|
print(" 4. Test in browser at: http://localhost:7865")
|
|
else:
|
|
print("\n⚠️ Some features have issues - backend problems detected.")
|
|
|
|
print("=" * 60)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|