예제 #1
0
            private static void AskTransformStructure(byte x, byte y, uint instanceID)
            {
                ThreadUtil.assertIsGameThread();

                if (!StructureManager.tryGetRegion(x, y, out var region))
                {
                    return;
                }

                var index = region.structures.FindIndex(k => k.instanceID == instanceID);
                var data  = region.structures[index];
                var drop  = region.drops[index];

                OnStructureTransformed?.Invoke(data, drop);
            }
예제 #2
0
            private static void TellTransformStructure(StructureManager __instance, CSteamID steamID, byte x, byte y, uint instanceID)
            {
                ThreadUtil.assertIsGameThread();

                if (!__instance.channel.checkServer(steamID) ||
                    !StructureManager.tryGetRegion(x, y, out var region))
                {
                    return;
                }

                var index = region.structures.FindIndex(k => k.instanceID == instanceID);

                if (index < 0)
                {
                    return;
                }

                var data = region.structures[index];
                var drop = region.drops[index];

                OnStructureTransformed?.Invoke(data, drop, CurrentTransformingPlayerId);
            }