1
Fork 0
mirror of https://github.com/Steffo99/better-tee.git synced 2024-11-27 17:14:18 +00:00

Commit changes

This commit is contained in:
Steffo 2019-09-16 17:34:22 +02:00
parent 40dbe98652
commit ad95c93b3a
11 changed files with 205 additions and 72 deletions

View file

@ -36,6 +36,9 @@ public abstract class ActController : MonoBehaviour
public virtual void ActInit() { public virtual void ActInit() {
phase = ActPhase.INIT; phase = ActPhase.INIT;
canvas = GameObject.FindGameObjectWithTag("Canvas")?.GetComponent<Canvas>();
eventSystem = GameObject.FindGameObjectWithTag("EventSystem")?.GetComponent<EventSystem>();
if(settings == null) { if(settings == null) {
throw new MissingSettingsException(); throw new MissingSettingsException();
} }
@ -72,9 +75,7 @@ public abstract class ActController : MonoBehaviour
} }
protected virtual void Start() { protected virtual void Start() {
canvas = GameObject.FindGameObjectWithTag("Canvas")?.GetComponent<Canvas>();
eventSystem = GameObject.FindGameObjectWithTag("EventSystem")?.GetComponent<EventSystem>();
ActInit();
} }
protected virtual void Update() { protected virtual void Update() {

7
Assets/Code/GamePhase.cs Normal file
View file

@ -0,0 +1,7 @@
public enum GamePhase {
UNINTIALIZED,
LOBBY,
ACTS,
RESULTS,
ENDED
}

View file

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
[Serializable]
public class GameSettings
{
public string gameName;
public List<ActSettings> acts;
public int minimumPlayers = 0;
public int maximumPlayers = 8;
}

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 26964efd4b147744fb4bb183d75abaa6 guid: 26d9ed1fc6252ef45bc911937e14f5ff
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2

78
Assets/Code/NetMessage.cs Normal file
View file

@ -0,0 +1,78 @@
using Mirror;
namespace NetMessage
{
namespace Error
{
public class InvalidPassword : MessageBase {}
}
namespace Connect
{
public class PlayerJoin : MessageBase
{
public string playerName;
public string gamePassword;
}
public class PlayerJoinSuccessful : MessageBase
{
public Player player;
public PlayerJoinSuccessful(Player player) {
this.player = player;
}
}
public class ViewerLink : MessageBase
{
public string gamePassword;
}
public class ViewerLinkSuccessful : MessageBase
{
public Viewer viewer;
public ViewerLinkSuccessful(Viewer viewer) {
this.viewer = viewer;
}
}
}
namespace Game
{
public class Settings : MessageBase
{
public GameSettings settings;
}
public class Start : MessageBase
{
public Player[] players;
}
public class End : MessageBase
{
public Player[] leaderboard;
}
}
namespace Act
{
public class Init : MessageBase
{
public ActSettings settings;
}
public class Start : MessageBase {}
public class Results : MessageBase
{
public ActResults results;
}
public class End : MessageBase {}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 772d776767c9da042a636c466296b9e7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,48 +0,0 @@
using System;
using Mirror;
namespace NetMessages {
public class ErrorMessage : MessageBase
{
public string errorName;
public string errorDescription = "";
}
public class PlayerConnectionMessage : MessageBase
{
public string playerName;
public string gamePassword;
}
public class ViewerConnectionMessage : MessageBase
{
public string gamePassword;
}
public class ConnectionSuccessfulResponse : MessageBase
{
}
public class GameStartMessage : MessageBase
{
}
public class ActSettingsMessage : MessageBase
{
public ActSettings settings;
}
public class ActResultsMessage : MessageBase
{
public ActResults results;
}
public class ActEndNotification : MessageBase
{
}
}

12
Assets/Code/Player.cs Normal file
View file

@ -0,0 +1,12 @@
using System;
[Serializable]
public struct Player {
public string name;
public Guid guid;
public Player(string name, Guid guid) {
this.name = name;
this.guid = guid;
}
}

View file

@ -5,8 +5,14 @@ using Mirror;
public class PlayerMainController : MonoBehaviour public class PlayerMainController : MonoBehaviour
{ {
[Header("WIP")]
public string address = "127.0.0.1:44444";
void Start() {
ConnectToServer(address);
}
[Header("Objects")] [Header("Objects")]
public ActController currentAct; public ActController currentAct = null;
[Header("Prefabs")] [Header("Prefabs")]
public GameObject drawingControllerPrefab; public GameObject drawingControllerPrefab;
@ -34,18 +40,38 @@ public class PlayerMainController : MonoBehaviour
public void ConnectToServer(string address) { public void ConnectToServer(string address) {
NetworkClient.Connect(address); NetworkClient.Connect(address);
NetworkClient.RegisterHandler<NetMessages.ConnectionSuccessfulResponse>(OnConnectionSuccessful); NetworkClient.RegisterHandler<NetMessage.Connect.PlayerJoinSuccessful>(OnPlayerJoinSuccessful);
NetworkClient.RegisterHandler<NetMessages.GameStartMessage>(OnGameStart); NetworkClient.RegisterHandler<NetMessage.Game.Settings>(OnGameSettings);
NetworkClient.RegisterHandler<NetMessages.ActSettingsMessage>(OnActSettings); NetworkClient.RegisterHandler<NetMessage.Game.Start>(OnGameStart);
NetworkClient.RegisterHandler<NetMessages.ActEndNotification>(OnActEnd); NetworkClient.RegisterHandler<NetMessage.Game.End>(OnGameEnd);
NetworkClient.RegisterHandler<NetMessage.Act.Init>(OnActInit);
NetworkClient.RegisterHandler<NetMessage.Act.Start>(OnActStart);
NetworkClient.RegisterHandler<NetMessage.Act.End>(OnActEnd);
} }
public void OnConnectionSuccessful(NetworkConnection connection, NetMessages.ConnectionSuccessfulResponse message) {} protected void OnPlayerJoinSuccessful(NetworkConnection connection, NetMessage.Connect.PlayerJoinSuccessful message) {}
public void OnGameStart(NetworkConnection connection, NetMessages.GameStartMessage message) {}
public void OnActEnd(NetworkConnection connection, NetMessages.ActEndNotification message) {}
public void OnActSettings(NetworkConnection connection, NetMessages.ActSettingsMessage message) { protected void OnGameSettings(NetworkConnection connection, NetMessage.Game.Settings message) {}
protected void OnGameStart(NetworkConnection connection, NetMessage.Game.Start message) {}
protected void OnGameEnd(NetworkConnection connection, NetMessage.Game.End message) {}
protected void OnActInit(NetworkConnection connection, NetMessage.Act.Init message) {
LoadAct(message.settings); LoadAct(message.settings);
currentAct.ActInit();
}
protected void OnActStart(NetworkConnection connection, NetMessage.Act.Start message) {
currentAct.ActStart();
}
protected void OnActEnd(NetworkConnection connection, NetMessage.Act.End message) {
currentAct.ActEnd();
//SEND RESULTS HERE
//test this
Destroy(currentAct);
} }
} }

View file

@ -1,24 +1,48 @@
using UnityEngine; using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine;
using Mirror; using Mirror;
public class ServerMainController : MonoBehaviour public class ServerMainController : MonoBehaviour
{ {
[Header("Status")] [Header("Status")]
public bool isListening = false; public string password = null;
public List<Player> players;
public List<Viewer> viewers;
public GamePhase phase = GamePhase.UNINTIALIZED;
[Header("Constants")] [Header("Constants")]
public const int MAX_CONNECTIONS = 32; public const int MAX_CONNECTIONS = 32;
public void ServerStart() { public void ServerStart() {
phase = GamePhase.LOBBY;
NetworkServer.Listen(MAX_CONNECTIONS); NetworkServer.Listen(MAX_CONNECTIONS);
NetworkServer.RegisterHandler<NetMessages.PlayerConnectionMessage>(OnPlayerConnect); NetworkServer.RegisterHandler<NetMessage.Connect.PlayerJoin>(OnPlayerJoin);
NetworkServer.RegisterHandler<NetMessages.ViewerConnectionMessage>(OnViewerConnect); NetworkServer.RegisterHandler<NetMessage.Connect.ViewerLink>(OnViewerLink);
NetworkServer.RegisterHandler<NetMessages.ActResultsMessage>(OnActResults); NetworkServer.RegisterHandler<NetMessage.Game.Settings>(OnGameSettings);
isListening = true; NetworkServer.RegisterHandler<NetMessage.Act.Results>(OnActResults);
} }
public void OnPlayerConnect(NetworkConnection connection, NetMessages.PlayerConnectionMessage message) {} public void OnPlayerJoin(NetworkConnection connection, NetMessage.Connect.PlayerJoin message) {
public void OnViewerConnect(NetworkConnection connection, NetMessages.ViewerConnectionMessage message) {} if(message.gamePassword != password) {
public void OnActResults(NetworkConnection connection, NetMessages.ActResultsMessage message) {} connection.Send<NetMessage.Error.InvalidPassword>(new NetMessage.Error.InvalidPassword());
return;
}
Player newPlayer = new Player(message.playerName, new Guid());
players.Add(newPlayer);
connection.Send<NetMessage.Connect.PlayerJoinSuccessful>(new NetMessage.Connect.PlayerJoinSuccessful(newPlayer));
}
public void OnViewerLink(NetworkConnection connection, NetMessage.Connect.ViewerLink message) {
if(message.gamePassword != password) {
connection.Send<NetMessage.Error.InvalidPassword>(new NetMessage.Error.InvalidPassword());
return;
}
Viewer newViewer = new Viewer(new Guid());
viewers.Add(newViewer);
connection.Send<NetMessage.Connect.ViewerLinkSuccessful>(new NetMessage.Connect.ViewerLinkSuccessful(newViewer));
}
public void OnGameSettings(NetworkConnection connection, NetMessage.Game.Settings message) {}
public void OnActResults(NetworkConnection connection, NetMessage.Act.Results message) {}
} }

10
Assets/Code/Viewer.cs Normal file
View file

@ -0,0 +1,10 @@
using System;
public class Viewer {
public Guid guid;
public Viewer(Guid guid) {
this.guid = guid;
}
}