/* * this is also triggered by server and called once a ship lands back to the dock station */ public static void WorkShipBackToIdle(ILSShipData packet) { if (!SimulatedWorld.Initialized || LocalPlayer.IsMasterClient) { return; } if (GameMain.data.galacticTransport.stationCapacity <= packet.planetAStationGID) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID] == null) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID].shipDockPos == Vector3.zero) { RequestgStationDockPos(packet.planetAStationGID); } StationComponent stationComponent = GameMain.data.galacticTransport.stationPool[packet.planetAStationGID]; Array.Copy(stationComponent.workShipDatas, packet.origShipIndex + 1, stationComponent.workShipDatas, packet.origShipIndex, stationComponent.workShipDatas.Length - packet.origShipIndex - 1); stationComponent.workShipCount--; stationComponent.idleShipCount++; if (stationComponent.idleShipCount < 0) { stationComponent.idleShipCount = 0; } if (stationComponent.workShipCount > ILSMaxShipCount) { stationComponent.workShipCount = ILSMaxShipCount; } stationComponent.WorkShipBackToIdle(packet.origShipIndex); }
public static void WorkShipBackToIdle_Postfix(StationComponent __instance, int index) { if (SimulatedWorld.Initialized && LocalPlayer.IsMasterClient) { ILSShipData packet = new ILSShipData(false, __instance.gid, index); LocalPlayer.SendPacket(packet); } }
public static void IdleShipGetToWork_Postfix(StationComponent __instance, int index) { if (SimulatedWorld.Initialized && LocalPlayer.IsMasterClient) { ILSShipData packet = new ILSShipData(true, __instance.workShipDatas[__instance.workShipCount - 1].planetA, __instance.workShipDatas[__instance.workShipCount - 1].planetB, __instance.workShipDatas[__instance.workShipCount - 1].itemId, __instance.workShipDatas[__instance.workShipCount - 1].itemCount, __instance.gid, __instance.workShipDatas[__instance.workShipCount - 1].otherGId, index, __instance.workShipDatas[__instance.workShipCount - 1].warperCnt, __instance.warperCount); LocalPlayer.SendPacket(packet); } }
public static void WorkShipBackToIdle(ILSShipData packet) { if (!SimulatedWorld.Initialized || LocalPlayer.IsMasterClient) { return; } if (GameMain.data.galacticTransport.stationCapacity <= packet.planetAStationGID) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID] == null) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID].shipDockPos == Vector3.zero) { RequestgStationDockPos(packet.planetAStationGID); } StationComponent stationComponent = GameMain.data.galacticTransport.stationPool[packet.planetAStationGID]; //stationComponent.workShipDatas[stationComponent.workShipCount] = new ShipData(); Array.Copy(stationComponent.workShipDatas, packet.origShipIndex + 1, stationComponent.workShipDatas, packet.origShipIndex, stationComponent.workShipDatas.Length - packet.origShipIndex - 1); stationComponent.workShipCount--; stationComponent.idleShipCount++; if (stationComponent.idleShipCount < 0) { stationComponent.idleShipCount = 0; } if (stationComponent.workShipCount > 10) { stationComponent.workShipCount = 10; } stationComponent.WorkShipBackToIdle(packet.origShipIndex); Log.Info($"Received ship message (landing): transporting {packet.itemCount} of {packet.itemId} and shipindex is {packet.origShipIndex} planet: {GameMain.galaxy.PlanetById(stationComponent.planetId).displayName}"); //Log.Info($"Array Length is: {GameMain.data.galacticTransport.stationPool.Length} and there is also: {GameMain.data.galacticTransport.stationCapacity}"); }
/* * When the host notifies the client that a ship started its travel client needs to check if he got both ILS in his gStationPool * if not we create a fake entry (which gets updated to the full one when client arrives that planet) and also request the stations dock position */ public static void IdleShipGetToWork(ILSShipData packet) { PlanetData planetA = GameMain.galaxy.PlanetById(packet.planetA); PlanetData planetB = GameMain.galaxy.PlanetById(packet.planetB); if (planetA != null && planetB != null) { if (GameMain.data.galacticTransport.stationCapacity <= packet.planetAStationGID) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID] == null) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID].shipDockPos == Vector3.zero) { RequestgStationDockPos(packet.planetAStationGID); } if (GameMain.data.galacticTransport.stationCapacity <= packet.planetBStationGID) { CreateFakeStationComponent(packet.planetBStationGID, packet.planetB); } else if (GameMain.data.galacticTransport.stationPool[packet.planetBStationGID] == null) { CreateFakeStationComponent(packet.planetBStationGID, packet.planetB); } else if (GameMain.data.galacticTransport.stationPool[packet.planetBStationGID].shipDockPos == Vector3.zero) { RequestgStationDockPos(packet.planetBStationGID); } StationComponent stationComponent = GameMain.data.galacticTransport.stationPool[packet.planetAStationGID]; stationComponent.workShipDatas[stationComponent.workShipCount].stage = -2; stationComponent.workShipDatas[stationComponent.workShipCount].planetA = packet.planetA; stationComponent.workShipDatas[stationComponent.workShipCount].planetB = packet.planetB; stationComponent.workShipDatas[stationComponent.workShipCount].otherGId = packet.planetBStationGID; stationComponent.workShipDatas[stationComponent.workShipCount].direction = 1; stationComponent.workShipDatas[stationComponent.workShipCount].t = 0f; stationComponent.workShipDatas[stationComponent.workShipCount].itemId = packet.itemId; stationComponent.workShipDatas[stationComponent.workShipCount].itemCount = packet.itemCount; stationComponent.workShipDatas[stationComponent.workShipCount].gene = 0; // WHAT IS THIS? stationComponent.workShipDatas[stationComponent.workShipCount].shipIndex = packet.origShipIndex; stationComponent.workShipDatas[stationComponent.workShipCount].warperCnt = packet.warperCnt; stationComponent.warperCount = packet.stationWarperCnt; stationComponent.workShipCount++; stationComponent.idleShipCount--; if (stationComponent.idleShipCount < 0) { stationComponent.idleShipCount = 0; } if (stationComponent.workShipCount > ILSMaxShipCount) { stationComponent.workShipCount = ILSMaxShipCount; } stationComponent.IdleShipGetToWork(packet.origShipIndex); StationComponent otherStationComponent = GameMain.data.galacticTransport.stationPool[packet.planetBStationGID]; if (otherStationComponent != null && otherStationComponent.storage != null) { for (int i = 0; i < otherStationComponent.storage.Length; i++) { if (otherStationComponent.storage[i].itemId == packet.itemId) { otherStationComponent.storage[i].remoteOrder += packet.itemCount; RefreshValuesUI(otherStationComponent, i); break; } } } } }
public static void IdleShipGetToWork(ILSShipData packet) { PlanetData planetA = GameMain.galaxy.PlanetById(packet.planetA); PlanetData planetB = GameMain.galaxy.PlanetById(packet.planetB); if (planetA != null && planetB != null) { if (GameMain.data.galacticTransport.stationCapacity <= packet.planetAStationGID) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID] == null) { CreateFakeStationComponent(packet.planetAStationGID, packet.planetA); } else if (GameMain.data.galacticTransport.stationPool[packet.planetAStationGID].shipDockPos == Vector3.zero) { RequestgStationDockPos(packet.planetAStationGID); } if (GameMain.data.galacticTransport.stationCapacity <= packet.planetBStationGID) { CreateFakeStationComponent(packet.planetBStationGID, packet.planetB); } else if (GameMain.data.galacticTransport.stationPool[packet.planetBStationGID] == null) { CreateFakeStationComponent(packet.planetBStationGID, packet.planetB); } else if (GameMain.data.galacticTransport.stationPool[packet.planetBStationGID].shipDockPos == Vector3.zero) { RequestgStationDockPos(packet.planetBStationGID); } StationComponent stationComponent = GameMain.data.galacticTransport.stationPool[packet.planetAStationGID]; stationComponent.workShipDatas[stationComponent.workShipCount].stage = -2; stationComponent.workShipDatas[stationComponent.workShipCount].planetA = packet.planetA; stationComponent.workShipDatas[stationComponent.workShipCount].planetB = packet.planetB; stationComponent.workShipDatas[stationComponent.workShipCount].otherGId = packet.planetBStationGID; stationComponent.workShipDatas[stationComponent.workShipCount].direction = 1; stationComponent.workShipDatas[stationComponent.workShipCount].t = 0f; stationComponent.workShipDatas[stationComponent.workShipCount].itemId = packet.itemId; stationComponent.workShipDatas[stationComponent.workShipCount].itemCount = packet.itemCount; stationComponent.workShipDatas[stationComponent.workShipCount].gene = 0; // WHAT IS THIS? stationComponent.workShipDatas[stationComponent.workShipCount].shipIndex = packet.origShipIndex; stationComponent.workShipDatas[stationComponent.workShipCount].warperCnt = packet.warperCnt; stationComponent.warperCount = packet.stationWarperCnt; stationComponent.workShipCount++; stationComponent.idleShipCount--; if (stationComponent.idleShipCount < 0) { stationComponent.idleShipCount = 0; } if (stationComponent.workShipCount > 10) { stationComponent.workShipCount = 10; } stationComponent.IdleShipGetToWork(packet.origShipIndex); Log.Info($"Received ship message (departing): {planetA.displayName} -> {planetB.displayName} transporting {packet.itemCount} of {packet.itemId} and index is {packet.origShipIndex}"); //Log.Info($"Array Length is: {GameMain.data.galacticTransport.stationPool.Length} and there is also: {GameMain.data.galacticTransport.stationCapacity}"); } else { Debug.Log(((planetA == null) ? "null" : "not null") + ((planetB == null) ? "null" : "not null") + packet.planetA + " " + packet.planetB); } }