예제 #1
0
        async Task IHandle <UseBy> .Handle(UseBy message)
        {
            if (FurnaceWindow == null)
            {
                AttachedObject.SetLocalValue(FurnaceWindowProperty, GrainFactory.GetGrain <IFurnaceWindow>(Guid.NewGuid()));
                await FurnaceWindow.SetEntity(AttachedObject);
            }

            await message.Entity.Tell(new OpenWindow { Window = FurnaceWindow });
        }
예제 #2
0
        async Task IHandle <UseBy> .Handle(UseBy message)
        {
            var masterEntity = await FindMasterEntity(NeighborEntity);

            if (masterEntity.GetPrimaryKey() == AttachedObject.GetPrimaryKey())
            {
                if (ChestWindow == null)
                {
                    AttachedObject.SetLocalValue(ChestWindowProperty, GrainFactory.GetGrain <IChestWindow>(Guid.NewGuid()));
                    await ChestWindow.SetEntities((NeighborEntity == null ?
                                                   new[] { AttachedObject.AsReference <IDependencyObject>() } :
                                                   new[] { AttachedObject.AsReference <IDependencyObject>(), NeighborEntity }).AsImmutable());
                }

                await message.Entity.Tell(new OpenWindow { Window = ChestWindow });
            }
            else
            {
                await masterEntity.Tell(message);
            }
        }