/**
         * Constructor.
         *
         * @param scene
         *            Contained scene data
         */
        public SceneDataControl(Scene scene, string playerImagePath)
        {
            this.scene         = scene;
            this.resourcesList = scene.getResources();

            selectedResources = 0;

            // Add a new resource if the list is empty
            if (resourcesList.Count == 0)
            {
                resourcesList.Add(new ResourcesUni());
            }

            // Create the subcontrollers
            resourcesDataControlList = new List <ResourcesDataControl>();
            foreach (ResourcesUni resources in resourcesList)
            {
                resourcesDataControlList.Add(new ResourcesDataControl(resources, Controller.SCENE));
            }

            exitsListDataControl       = new ExitsListDataControl(this, scene.getExits());
            referencesListDataControl  = new ReferencesListDataControl(playerImagePath, this, scene.getItemReferences(), scene.getAtrezzoReferences(), scene.getCharacterReferences());
            activeAreasListDataControl = new ActiveAreasListDataControl(this, scene.getActiveAreas());
            barriersListDataControl    = new BarriersListDataControl(this, scene.getBarriers());
            trajectoryDataControl      = new TrajectoryDataControl(this, scene.getTrajectory());
        }
        /**
         * Constructor.
         *
         * @param scene
         *            Contained scene data
         */
        public SceneDataControl(Scene scene, string playerImagePath)
        {
            this.scene         = scene;
            this.resourcesList = scene.getResources();

            selectedResources = 0;

            // Add a new resource if the list is empty
            if (resourcesList.Count == 0)
            {
                resourcesList.Add(new ResourcesUni());
            }

            // Create the subcontrollers
            resourcesDataControlList = new List <ResourcesDataControl>();
            foreach (ResourcesUni resources in resourcesList)
            {
                resourcesDataControlList.Add(new ResourcesDataControl(resources, Controller.SCENE));
            }

            exitsListDataControl       = new ExitsListDataControl(this, scene.getExits());
            referencesListDataControl  = new ReferencesListDataControl(playerImagePath, this);
            activeAreasListDataControl = new ActiveAreasListDataControl(this, scene.getActiveAreas());
            barriersListDataControl    = new BarriersListDataControl(this, scene.getBarriers());
            trajectoryDataControl      = new TrajectoryDataControl(this, scene.getTrajectory());

            xApiOptions = new Dictionary <string, List <string> >();

            var accessibleOptions = Enum.GetValues(typeof(AccessibleTracker.Accessible))
                                    .Cast <AccessibleTracker.Accessible>()
                                    .Select(v => v.ToString().ToLower())
                                    .ToList();

            xApiOptions.Add("accesible", accessibleOptions);

            var alternativeOptions = Enum.GetValues(typeof(AlternativeTracker.Alternative))
                                     .Cast <AlternativeTracker.Alternative>()
                                     .Select(v => v.ToString().ToLower())
                                     .ToList();

            xApiOptions.Add("alternative", alternativeOptions);
        }