diff --git a/Assets/GWConquest/Scripts/Planet.cs b/Assets/GWConquest/Scripts/Planet.cs index 1eca676..f35444d 100644 --- a/Assets/GWConquest/Scripts/Planet.cs +++ b/Assets/GWConquest/Scripts/Planet.cs @@ -118,6 +118,32 @@ namespace GWConquest { ConnectedPlanetsList = new EntityList(State, "ConnectedPlanets"); + if(BoltNetwork.IsClient) + { + State.AddCallback("SpaceZoneID", () => { + BoltLog.Info("Space zone id changed to {0} on client planet {1}, static: {2}", State.SpaceZoneID, State.PlanetName, PlanetStatic); + var zone = GetMainZone(ZoneType.Space); + zone.SetZoneId(State.SpaceZoneID); + zone.zoneType = ZoneType.Space; + }); + + State.AddCallback("AttackZoneID", () => { + BoltLog.Info("Attack zone id changed to {0} on client planet {1}, static: {2}", State.AttackZoneID, State.PlanetName, PlanetStatic); + var zone = GetAttackZones(ZoneType.Ground)[0]; + zone.SetZoneId(State.AttackZoneID); + zone.zoneType = ZoneType.Ground; + }); + + State.AddCallback("PlanetName", () => { + BoltLog.Info("planet name changed to {0} on client planet, static: {1}", State.PlanetName, PlanetStatic); + planetName = State.PlanetName; + }); + + State.AddCallback("ConnectedPlanets", () => { + BoltLog.Info("Connected planets changed to {0} on client planet{1}, static: {2}", ConnectedPlanetsList, State.PlanetName, PlanetStatic); + }); + } + if(PlanetStatic) { foreach (Zone zone in groundZones) @@ -134,18 +160,6 @@ namespace GWConquest State.SpaceZoneID = Zone.GetZoneId(GetMainZone(ZoneType.Space)); State.AttackZoneID = Zone.GetZoneId(GetAttackZones(ZoneType.Ground)[0]); State.PlanetName = planetName; - - /*foreach(var conn in connections) - { - if(conn.planet1 == this) - { - ConnectedPlanetsList.Add(conn.planet2.entity); - } - else if(conn.planet2 == this) - { - ConnectedPlanetsList.Add(conn.planet1.entity); - } - }*/ } } @@ -170,8 +184,28 @@ namespace GWConquest } } + public void UpdateConnectionsServer() + { + foreach (var conn in connections) + { + if (conn.planet1 == this) + { + ConnectedPlanetsList.Add(conn.planet2.entity); + } + else if (conn.planet2 == this) + { + ConnectedPlanetsList.Add(conn.planet1.entity); + } + } + } + public void FinishSetup() { + if(entity.IsOwner) + { + UpdateConnectionsServer(); + } + pathfindingGraph = new PathfindingGraph(groundZones); foreach(DistrictConnection conn in GetComponentsInChildren()) { @@ -204,7 +238,7 @@ namespace GWConquest PlanetPathfindingGraph = new PathfindingGraph(spaceZones); - foreach(PlanetConnection conn in FindObjectsOfType()) + foreach(PlanetConnection conn in FindObjectsOfType().Where(c => !c.IsPreConnection)) { float connLength = Vector3.Distance(conn.planet1.transform.position, conn.planet2.transform.position); PlanetPathfindingGraph.AddConnection(conn.planet1.GetMainZone(ZoneType.Space), conn.planet2.GetMainZone(ZoneType.Space), connLength); diff --git a/Assets/GWConquest/Scripts/PlanetConnection.cs b/Assets/GWConquest/Scripts/PlanetConnection.cs index 8194ae4..117c0bf 100644 --- a/Assets/GWConquest/Scripts/PlanetConnection.cs +++ b/Assets/GWConquest/Scripts/PlanetConnection.cs @@ -130,12 +130,16 @@ namespace GWConquest { lineRenderer.enabled = true; lineRenderer.SetPositions(new Vector3[] { planet1.transform.position, planet2.transform.position }); +#if UNITY_EDITOR UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(lineRenderer); +#endif } else { lineRenderer.enabled = false; +#if UNITY_EDITOR UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(lineRenderer); +#endif } diff --git a/Assets/GWConquest/Scripts/PlanetPlacement.cs b/Assets/GWConquest/Scripts/PlanetPlacement.cs index 31d1c73..fbdb0b8 100644 --- a/Assets/GWConquest/Scripts/PlanetPlacement.cs +++ b/Assets/GWConquest/Scripts/PlanetPlacement.cs @@ -72,6 +72,11 @@ namespace GWConquest return planet; } + public void InitPlanetPrefab(Planet planet) + { + + } + public PlanetConnection SpawnPlanetConnection(Planet planet1, Planet planet2) { GameObject pcGO = Instantiate(PlanetConnectionPrefab); diff --git a/Assets/GWConquest/Scripts/ServerCallbacks.cs b/Assets/GWConquest/Scripts/ServerCallbacks.cs index 189522e..7ad9bf2 100644 --- a/Assets/GWConquest/Scripts/ServerCallbacks.cs +++ b/Assets/GWConquest/Scripts/ServerCallbacks.cs @@ -1,5 +1,7 @@ using System.Linq; using UnityEngine; +using UdpKit; +using Bolt; namespace GWConquest { @@ -67,6 +69,26 @@ namespace GWConquest configEvnt.Send(); } + public override void ConnectRequest(UdpEndPoint endpoint, IProtocolToken token) + { + BoltLog.Info("Connect request recieved"); + if(GameManager.EntitiesLoaded) + { + BoltLog.Info("Accepting connect request"); + BoltNetwork.Accept(endpoint); + } + else { + BoltLog.Info("Refusing connect request"); + BoltNetwork.Refuse(endpoint); + } + } + + public override void Connected(BoltConnection connection) + { + BoltLog.Info("Client connected"); + + } + public override void OnEvent(BuildUnitEvent evnt) { Zone zone = Zone.GetFromId(evnt.Zone); diff --git a/Assets/GWConquest/Scripts/Unit.cs b/Assets/GWConquest/Scripts/Unit.cs index e165fd3..be208b0 100644 --- a/Assets/GWConquest/Scripts/Unit.cs +++ b/Assets/GWConquest/Scripts/Unit.cs @@ -192,9 +192,12 @@ namespace GWConquest Inventory.StorageCapacity = Class.InventorySlots; Equipment.StorageCapacity = Class.EquipmentSlots; - Fuel = Class.FuelCapacity; - Food = Class.FoodCapacity; - Supplies = Class.SuppliesCapacity; + if(entity.IsOwner) + { + Fuel = Class.FuelCapacity; + Food = Class.FoodCapacity; + Supplies = Class.SuppliesCapacity; + } }); if(BoltNetwork.IsServer)