private bool InsertReference(ElementReference reference, int referenceType)
        {
            int counter = count(reference);
            ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, reference, referenceType, counter);
            bool hasLayer = reference.getLayer() >= 0;

            insertInOrder(new ElementContainer(erdc, -1, null), (reference.getLayer() >= 0));
            return(hasLayer);
        }
示例#2
0
            private bool MouseOverTexture(ElementReferenceDataControl elemRef, Rect textureRect)
            {
                var   sprite = GetSprite(elemRef);
                float x      = (Event.current.mousePosition.x - textureRect.x) / textureRect.width;
                float y      = (Event.current.mousePosition.y - textureRect.y) / textureRect.height;

                return(sprite != null && sprite.texture != null &&
                       sprite.texture.GetPixel((int)(x * sprite.texture.width), sprite.texture.height - (int)(y * sprite.texture.height)).a > 0);
            }
示例#3
0
 public bool containsDataControl(ElementReferenceDataControl dataControl)
 {
     foreach (ElementContainer container in allReferencesDataControl)
     {
         if (!container.isPlayer() && container.getErdc() == dataControl)
         {
             return(true);
         }
     }
     return(false);
 }
示例#4
0
        /**
         * Constructor.
         *
         * @param sceneDataControl
         *            Link to the parent scene controller
         * @param itemReferencesList
         *            List of item references
         */
        public ReferencesListDataControl(string playerImagePath, SceneDataControl sceneDataControl, List <ElementReference> itemReferencesList, List <ElementReference> atrezzoReferencesList, List <ElementReference> npcReferencesList)
        {
            this.playerImagePath               = playerImagePath;
            this.sceneDataControl              = sceneDataControl;
            this.itemReferencesList            = itemReferencesList;
            this.atrezzoReferencesList         = atrezzoReferencesList;
            this.npcReferencesList             = npcReferencesList;
            this.allReferencesDataControl      = new List <ElementContainer>();
            this.lastElementContainer          = null;
            this.playerPositionInAllReferences = NO_PLAYER;
            this.imagePathHasChanged           = false;
            // Check if one of references has layer -1: if it is true, it means that element references has no layer.
            // Create subcontrollers

            bool hasLayerV = hasLayer();

            foreach (ElementReference itemReference in itemReferencesList)
            {
                int counter = count(itemReference);
                ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, itemReference, Controller.ITEM_REFERENCE, counter);
                insertInOrder(new ElementContainer(erdc, -1, null), hasLayerV);
            }

            foreach (ElementReference atrezzoReference in atrezzoReferencesList)
            {
                int counter = count(atrezzoReference);
                ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, atrezzoReference, Controller.ATREZZO_REFERENCE, counter);
                insertInOrder(new ElementContainer(erdc, -1, null), hasLayerV);
            }

            foreach (ElementReference npcReference in npcReferencesList)
            {
                int counter = count(npcReference);
                ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, npcReference, Controller.NPC_REFERENCE, counter);
                insertInOrder(new ElementContainer(erdc, -1, null), hasLayerV);
            }

            // insert player
            // by default, if player don´t have layer, we give it to him.
            if (playerImagePath != null && (!Controller.getInstance().isPlayTransparent()) && sceneDataControl.isForcedPlayerLayer())
            {
                int layer;
                if (sceneDataControl.getPlayerLayer() == Scene.PLAYER_WITHOUT_LAYER)
                {
                    layer = 0;
                }
                else
                {
                    layer = sceneDataControl.getPlayerLayer();
                }
                reassignLayerAllReferencesDataControl(insertInOrder(new ElementContainer(null, layer, AssetsController.getImage(this.playerImagePath)), true));
            }
        }
示例#5
0
 /**
  * Constructor. When erdc has value, takes the element reference data
  * control for references to atrezzo, items or non-player characters,
  * putting player layer with its non-valid value. Takes playerLayer for
  * player, when erdc is null.
  *
  * @param erdc
  *            the element reference data control
  * @param playerLayer
  *            the layer to show the player in the correct position
  * @param image
  *            the image of the player
  */
 public ElementContainer(ElementReferenceDataControl erdc, int playerLayer, Sprite image)
 {
     if (erdc != null)
     {
         this.erdc        = erdc;
         this.playerLayer = -1;
         this.image       = null;
     }
     else
     {
         this.playerLayer = playerLayer;
         this.image       = image;
     }
 }
        private void performAddElement(int type, string id)
        {
            var elementType = controller.IdentifierSummary.getType(id);

            if (elementType != null)
            {
                ElementReference newElementReference = new ElementReference(id, 50, 50);
                int counter = count(newElementReference);
                getReferencesList(elementType).Add(newElementReference);
                ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, newElementReference, type, counter);
                var defaultPos = sceneDataControl.getDefaultInitialPosition();
                newElementReference.setPosition((int)defaultPos.x, (int)defaultPos.y);
                newElementReference.setScale(sceneDataControl.getElementAppropiateScale(erdc.getReferencedElementDataControl() as DataControlWithResources));
                ElementContainer ec = new ElementContainer(erdc, -1, null);
                lastElementContainer = ec;
                reassignLayerAllReferencesDataControl(insertInOrder(ec, false));
            }
        }
 public bool containsDataControl(ElementReferenceDataControl dataControl)
 {
     return(allReferencesDataControl.Any(e => !e.isPlayer() && e.getErdc() == dataControl));
 }
示例#8
0
        public override bool addElement(int type, string id)
        {
            bool   elementAdded = false;
            string selectedItem = id;

            if (type == Controller.ITEM_REFERENCE)
            {
                // Take the list of the items
                string[] items = controller.getIdentifierSummary().getItemIds();
                // If the list has elements, show the dialog with the options
                if (items.Length > 0)
                {
                    // If some value was selected
                    if (selectedItem != null)
                    {
                        ElementReference newElementReference = new ElementReference(selectedItem, 50, 50);
                        int counter = count(newElementReference);
                        ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, newElementReference, type, counter);
                        itemReferencesList.Add(newElementReference);
                        ElementContainer ec = new ElementContainer(erdc, -1, null);
                        lastElementContainer = ec;
                        reassignLayerAllReferencesDataControl(insertInOrder(ec, false));
                        elementAdded = true;
                    }
                }
                else
                {
                    controller.showErrorDialog(TC.get("Operation.AddItemReferenceTitle"), TC.get("Operation.AddItemReferenceErrorNoItems"));
                }
            }

            if (type == Controller.ATREZZO_REFERENCE)
            {
                string[] items = controller.getIdentifierSummary().getAtrezzoIds();

                // If the list has elements, show the dialog with the options
                if (items.Length > 0)
                {
                    if (selectedItem != null)
                    {
                        ElementReference newElementReference = new ElementReference(selectedItem, 50, 50);
                        int counter = count(newElementReference);
                        ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, newElementReference, type, counter);
                        atrezzoReferencesList.Add(newElementReference);
                        ElementContainer ec = new ElementContainer(erdc, -1, null);
                        lastElementContainer = ec;
                        reassignLayerAllReferencesDataControl(insertInOrder(ec, false));
                        elementAdded = true;
                    }
                }
                else
                {
                    controller.showErrorDialog(TC.get("Operation.AddAtrezzoReferenceTitle"), TC.get("Operation.AddReferenceErrorNoAtrezzo"));
                }
            }

            if (type == Controller.NPC_REFERENCE)
            {
                string[] items = controller.getIdentifierSummary().getNPCIds();
                if (items.Length > 0)
                {
                    if (selectedItem != null)
                    {
                        ElementReference newElementReference = new ElementReference(selectedItem, 50, 50);
                        int counter = count(newElementReference);
                        ElementReferenceDataControl erdc = new ElementReferenceDataControl(sceneDataControl, newElementReference, type, counter);
                        npcReferencesList.Add(newElementReference);
                        ElementContainer ec = new ElementContainer(erdc, -1, null);
                        lastElementContainer = ec;
                        reassignLayerAllReferencesDataControl(insertInOrder(ec, false));
                        elementAdded = true;
                    }
                }
                else
                {
                    controller.showErrorDialog(TC.get("Operation.AddNPCReferenceTitle"), TC.get("Operation.AddReferenceErrorNoNPC"));
                }
            }

            return(elementAdded);
        }