コード例 #1
0
        internal static void Init()
        {
            GsSerializer.OnNewEventHandler     += OnNewEventHandler;
            GsSerializer.OnNewSnapShotReceived += OnNewSnapShotReceived;
            GsSerializer.CurrentPlayerLeftRoom += CurrentPlayerLeftRoom;
            GsSerializer.CurrentPlayerJoinRoom += CurrentPlayerJoinRoom;


            RealTimeEventHandlers.JoinedRoom += JoinedRoom;
            RealTimeEventHandlers.LeftRoom   += LeftRoom;
            RealTimeEventHandlers.RoomMembersDetailReceived += RoomMembersDetailReceived;


            _monoBehaviourHandler = new MonoBehaviourHandler();
            _prefabHandler        = new PrefabHandler();
            _functionHandler      = new FunctionHandler();
            _propertyHandler      = new PropertyHandler();
            _memberHandler        = new MemberHandler();


            _monoBehaviourHandler.Init();
            _memberHandler.Init();
            _propertyHandler.Init(_memberHandler);

            TypeUtil.Init();
            ObjectUtil.Init();
            IsAvailable = true;
        }
コード例 #2
0
        public void SetupForTests()
        {
            _recordedEvents      = new List <string>();
            _mockPrefabHandler   = Substitute.For <IPrefabHandler>();
            _mockSpriteHandler   = Substitute.For <ISpriteHandler>();
            _mockTechTypeHandler = Substitute.For <ITechTypeHandlerInternal>();
            _craftDataHandler    = Substitute.For <ICraftDataHandler>();

            _spawnable = new TestSpawnable(_recordedEvents)
            {
                PrefabHandler    = _mockPrefabHandler,
                SpriteHandler    = _mockSpriteHandler,
                TechTypeHandler  = _mockTechTypeHandler,
                CraftDataHandler = _craftDataHandler
            };
        }
コード例 #3
0
        internal static void ApplySnapShot(IEnumerable <SnapShotData> datas, IPrefabHandler handler = null, IMonoBehaviourHandler monoBehaviourHandler = null, IPropertyHandler propertyHandler = null)
        {
            foreach (var shotData in datas)
            {
                switch (shotData.Type)
                {
                case SnapShotType.Function: ApplyFunction(shotData.Buffer, monoBehaviourHandler: monoBehaviourHandler); break;

                case SnapShotType.Object:   ApplyObject((byte)ObjectActions.Instantiate, shotData.Buffer, shotData.OwnerId, handler); break;

                case SnapShotType.Property: ApplyProperty((byte)PropertyAction.Apply, shotData.Buffer, shotData.OwnerId, propertyHandler); break;

                default: throw new GameServiceException("Invalid SnapShot Type!");
                }
            }
        }
コード例 #4
0
        public void Patch_EventsInvoked()
        {
            // ARRANGE
            const TechType createdTechType = TechType.Accumulator;

            IPrefabHandler           mockPrefabHandler    = Substitute.For <IPrefabHandler>();
            ISpriteHandler           mockSpriteHandler    = Substitute.For <ISpriteHandler>();
            ITechTypeHandlerInternal mockTechTypeHandler  = Substitute.For <ITechTypeHandlerInternal>();
            ICraftDataHandler        mockCraftDataHandler = Substitute.For <ICraftDataHandler>();
            IKnownTechHandler        mockKnownTechHandler = Substitute.For <IKnownTechHandler>();

            mockTechTypeHandler
            .AddTechType(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <bool>())
            .Returns(createdTechType);

            var techData = new TechData();

            var pdaItem = new SimpleTestPdaItem
            {
                PrefabHandler    = mockPrefabHandler,
                SpriteHandler    = mockSpriteHandler,
                TechTypeHandler  = mockTechTypeHandler,
                CraftDataHandler = mockCraftDataHandler,
                KnownTechHandler = mockKnownTechHandler,
                TechDataToReturn = techData,
            };

            // ACT
            pdaItem.Patch();

            // ASSERT
            mockCraftDataHandler.Received(1).SetTechData(createdTechType, techData);
            mockCraftDataHandler.Received(1).AddToGroup(TechGroup.Cyclops, TechCategory.Cyclops, createdTechType);
            mockKnownTechHandler.DidNotReceiveWithAnyArgs();
            mockTechTypeHandler.Received(1).AddTechType(Arg.Any <string>(), "classId", "friendlyName", "description", true);
        }
コード例 #5
0
ファイル: ActionUtil.cs プロジェクト: Dr-developer/DoooZ
        private static void ApplyObject(byte objectAction, byte[] data, string ownerId, IPrefabHandler handler)
        {
            var action = (ObjectActions)objectAction;

            switch (action)
            {
            case ObjectActions.Instantiate:
                var instantiateData = new InstantiateData();
                GsSerializer.Object.CallReadStream(instantiateData, data);

                // Call Callback
                GsLiveRealtime.Callbacks.OnBeforeInstantiateHandler?.Invoke(null,
                                                                            new OnBeforeInstantiate(instantiateData.PrefabName, ownerId, instantiateData.Position, instantiateData.Rotation));

                var obj = handler.Instantiate(instantiateData.PrefabName, instantiateData.Position, instantiateData.Rotation, ownerId, ownerId == GsLiveRealtime.CurrentPlayerMemberId);

                // Call Callback
                GsLiveRealtime.Callbacks.OnAfterInstantiateHandler?.Invoke(null,
                                                                           new OnAfterInstantiate(obj, instantiateData.PrefabName, ownerId, instantiateData.Position, instantiateData.Rotation));
                break;

            case ObjectActions.Destroy:
                var objectHandler = new GameObjectData();
                GsSerializer.Object.CallReadStream(objectHandler, data);

                // Call Callback
                GsLiveRealtime.Callbacks.OnDestroyObjectHandler?.Invoke(null,
                                                                        new OnDestroyObject(objectHandler.ObjectNameOrTag, objectHandler.IsTag));

                if (objectHandler.IsTag)
                {
                    handler.DestroyWithTag(objectHandler.ObjectNameOrTag);
                }
                else
                {
                    handler.DestroyWithName(objectHandler.ObjectNameOrTag);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #6
0
ファイル: ActionUtil.cs プロジェクト: Dr-developer/DoooZ
        internal static void ApplyData(Types types, string ownerId, byte[] subCaller, byte[] extra, IPrefabHandler handler = null, IMonoBehaviourHandler monoBehaviourHandler = null, IPropertyHandler propertyHandler = null)
        {
            switch (types)
            {
            case Types.ObserverActions:
                ApplyTransform(subCaller[1], ownerId, extra);
                break;

            case Types.ObjectsActions:
                ApplyObject(subCaller[1], extra, ownerId, handler);
                break;

            case Types.RunFunction:
                ApplyFunction(extra, monoBehaviourHandler: monoBehaviourHandler);
                break;

            case Types.Property:
                ApplyProperty(subCaller[1], extra, ownerId, propertyHandler);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(types), types, null);
            }
        }