public FactoriesController(IFactoryCreateService factoryCreateService, IFactoryManager factoryManager, IHubContext <FactoryHub, IFactoryHub> hubContext,
                            ICraftingService craftingService, ILogger <FactoriesController> logger)
 {
     _logger = logger;
     _factoryCreateService = factoryCreateService;
     _factoryManager       = factoryManager;
     _hubContext           = hubContext;
     _craftingService      = craftingService;
 }
        public override void ProcessPacket(ReformPasteEventPacket packet, INebulaConnection conn)
        {
            PlanetData planet = GameMain.galaxy.PlanetById(packet.PlanetId);

            if (planet.factory == null)
            {
                return;
            }

            PlayerAction_Build       pab       = GameMain.mainPlayer.controller != null ? GameMain.mainPlayer.controller.actionBuild : null;
            BuildTool_BlueprintPaste buildTool = pab.blueprintPasteTool;

            IFactoryManager factoryManager = NebulaModAPI.MultiplayerSession.Factories;

            if (buildTool == null)
            {
                return;
            }

            factoryManager.TargetPlanet = packet.PlanetId;
            factoryManager.PacketAuthor = packet.AuthorId;

            PlanetFactory tmpFactory             = null;
            bool          loadExternalPlanetData = GameMain.localPlanet?.id != planet.id;

            if (loadExternalPlanetData)
            {
                tmpFactory = buildTool.factory;
                factoryManager.AddPlanetTimer(packet.PlanetId);
            }

            factoryManager.EventFactory = planet.factory;

            buildTool.factory = planet.factory;
            pab.factory       = planet.factory;

            using (factoryManager.IsIncomingRequest.On())
            {
                packet.GetData(out List <ReformData> reforms, out Color[] colors);
                BlueprintPasteExtension.CalculatePositions(buildTool, reforms, colors);
            }

            if (loadExternalPlanetData)
            {
                buildTool.factory = tmpFactory;
                pab.factory       = tmpFactory;
            }

            GameMain.mainPlayer.mecha.buildArea = Configs.freeMode.mechaBuildArea;
            factoryManager.EventFactory         = null;

            factoryManager.TargetPlanet = NebulaModAPI.PLANET_NONE;
            factoryManager.PacketAuthor = NebulaModAPI.AUTHOR_NONE;
        }
Exemple #3
0
        private GameObject GetObject(string objectTypeName, IFactoryManager manager, SpriteDefinition spriteDef, XElement xmlNode)
        {
            GameObject obj = null;

            switch (objectTypeName)
            {
            case "Sprite":
            case "AnimatedSprite":
                obj = LoadSprite(spriteDef, xmlNode);
                break;
            }

            return(obj);
        }
Exemple #4
0
        public static PlayerUndo GetCurrentPlayerData()
        {
            if (NebulaModAPI.IsMultiplayerActive)
            {
                IFactoryManager factoryManager = NebulaModAPI.MultiplayerSession.Factories;
                if (factoryManager.IsIncomingRequest.Value)
                {
                    ushort playerId = (ushort)factoryManager.PacketAuthor;
                    return(undos[playerId]);
                }
            }

            return(undos[GetLocalUserId()]);
        }
Exemple #5
0
        public IScene GetScene(string objectTypeName, IFactoryManager manager, Module.Module module, XElement xmlNode)
        {
            IScene scene = null;

            if (manager is OrionEngine)
            {
                OrionEngine engine = (OrionEngine)manager;
                Camera2D    camera = engine.GetComponent <Camera2D>();

                if (camera != null)
                {
                    if (objectTypeName.Equals("Scene"))
                    {
                        scene = new Scene(engine.GraphicsDM.GraphicsDevice, camera);
                    }
                    else if (objectTypeName.Equals("ParallaxScene"))
                    {
                        scene = new ParallaxScene(engine.GraphicsDM.GraphicsDevice, camera);
                    }
                }

                if (scene != null)
                {
                    foreach (XElement sceneNode in xmlNode.Elements())
                    {
                        switch (sceneNode.Name.LocalName)
                        {
                        case "Header":
                            if (scene is Scene)
                            {
                                LoadHeader(module, sceneNode, scene as Scene);
                            }
                            else if (scene is ParallaxScene)
                            {
                                LoadHeader(module, sceneNode, scene as ParallaxScene);
                            }
                            break;

                        case "EntityList":
                            LoadEntityList(module, manager, sceneNode, scene);
                            break;
                        }
                    }
                }
            }

            return(scene);
        }
Exemple #6
0
        public GameObject GetObject(string objectTypeName, IFactoryManager manager, Module.Module module, XElement xmlNode)
        {
            GameObject       obj       = null;
            SpriteDefinition spriteDef = null;
            string           tag       = string.Empty;
            string           name      = string.Empty;
            Guid             id        = Guid.Empty;

            foreach (XAttribute attribNode in xmlNode.Attributes())
            {
                switch (attribNode.Name.LocalName)
                {
                case "Id":
                    try
                    {
                        id = Guid.Parse(attribNode.Value);
                    }
                    catch (Exception) { }
                    break;

                case "Name":
                    name = attribNode.Value;
                    break;

                case "Tag":
                    tag = attribNode.Value;
                    break;

                case "Ref":
                    spriteDef = SpriteDefinition.LoadFromModule(module, attribNode.Value);
                    break;
                }
            }

            obj      = GetObject(objectTypeName, manager, spriteDef, xmlNode);
            obj.Id   = id;
            obj.Name = name;
            obj.Tag  = tag;

            return(obj);
        }
Exemple #7
0
        private void LoadEntityList(Module.Module module, IFactoryManager manager, XElement xmlNode, IScene scene)
        {
            foreach (XElement entityNode in xmlNode.Elements())
            {
                if (entityNode.Name.LocalName == "Entity")
                {
                    string objectTypeName = string.Empty;
                    foreach (XAttribute attrib in entityNode.Attributes())
                    {
                        if (attrib.Name.LocalName.Equals("Type"))
                        {
                            objectTypeName = attrib.Value;
                            break;
                        }
                    }

                    IObjectFactory fac = manager.GetFactoryFor <IObjectFactory>(objectTypeName);
                    scene.Add(fac.GetObject(objectTypeName, manager, module, entityNode));
                }
            }
        }
Exemple #8
0
 public FactoryAppService(IFactoryRepository factoryRepository, ICityRepository cityRepository, IFactoryManager factoryManager)
 {
     _factoryRepository = factoryRepository;
     _cityRepository    = cityRepository;
     _factoryManager    = factoryManager;
 }
Exemple #9
0
 public CraftingService(IFactoryManager factoryManager)
 {
     _factoryManager = factoryManager;
 }
Exemple #10
0
 public FactoryController()
 {
     _aManager = new FactoryManager();
 }
 public CityRepository(IFactoryManager factoryManager, IDbContextProvider <IoTDbContext> dbContextProvider) : base(dbContextProvider)
 {
     _factoryManager = factoryManager;
 }