示例#1
0
    private void instanceElement <T>(ElementReference context) where T : Element
    {
        if (!ConditionChecker.check(context.getConditions()))
        {
            return;
        }

        if (!contexts.ContainsKey(context))
        {
            ElementReference new_context = new ElementReference(context.getTargetId(), context.getX(), context.getY());
            new_context.setScale(context.getScale());
            contexts.Add(context, new_context);
        }

        context = contexts [context];

        GameObject base_prefab;
        Transform  parent;
        Element    element;

        switch (typeof(T).ToString())
        {
        case "Atrezzo":
            base_prefab = Atrezzo_Prefab;
            parent      = Atrezzos;
            element     = Game.Instance.GameState.getAtrezzo(context.getTargetId());
            break;

        case "NPC":
            base_prefab = Character_Prefab;
            parent      = Characters;
            element     = Game.Instance.GameState.getCharacter(context.getTargetId());
            break;

        case "Item":
            base_prefab = Object_Prefab;
            parent      = Objects;
            element     = Game.Instance.GameState.getObject(context.getTargetId());
            break;

        default:
            return;
        }

        GameObject ret   = GameObject.Instantiate(base_prefab);
        Transform  trans = ret.GetComponent <Transform> ();

        ret.GetComponent <Representable> ().Context = context;
        ret.GetComponent <Representable> ().Element = element;
        trans.SetParent(parent);
    }
        private GameObject InstanceElement(ElementReference context)
        {
            Element element = Game.Instance.GameState.FindElement <Element>(context.getTargetId());

            if (element == null)
            {
                Debug.LogError("Unable to find target element: " + context.getTargetId());
                return(null);
            }

            GameObject basePrefab;
            Transform  parent;

            if (element.GetType() == typeof(Atrezzo))
            {
                basePrefab = atrezzoPrefab;
                parent     = referencesHolder;
            }
            else if (element.GetType() == typeof(NPC))
            {
                basePrefab = characterPrefab;
                parent     = referencesHolder;
            }
            else if (element.GetType() == typeof(Item))
            {
                basePrefab = objectPrefab;
                parent     = referencesHolder;
            }
            else
            {
                return(null);
            }

            GameObject ret           = Instantiate(basePrefab, parent);
            var        representable = ret.GetComponent <Representable>();

            representable.Context = context;
            representable.Element = element;

            var scenePositioner = ret.AddComponent <ScenePositioner>();

            scenePositioner.Scene         = this;
            scenePositioner.Context       = context;
            scenePositioner.Representable = representable;

            return(ret);
        }
    private int count(ElementReference er)
    {
        int count = 0;

        foreach (ElementContainer e in allReferencesDataControl)
        {
            if (!e.isPlayer())
            {
                if (e.getErdc().getElementId().Equals(er.getTargetId()))
                {
                    count++;
                }
            }
        }
        return(count);
    }
        /**
         * Contructor.
         *
         * @param sceneDataControl
         *            Parent scene controller
         * @param elementReference
         *            Element reference of the data control structure
         */
        public ElementReferenceDataControl(SceneDataControl sceneDataControl, ElementReference elementReference, int type, int referenceNumber)
        {
            this.sceneDataControl = sceneDataControl;
            this.elementReference = elementReference;
            this.type             = type;
            this.visible          = true;
            if (type == Controller.ITEM_REFERENCE || type == Controller.NPC_REFERENCE)
            {
                this.influenceAreaDataControl = new InfluenceAreaDataControl(sceneDataControl, elementReference.getInfluenceArea(), this);
            }

            // Create subcontrollers
            Dictionary <string, ConditionsController.ConditionContextProperty> context1 = new Dictionary <string, ConditionsController.ConditionContextProperty>();

            ConditionsController.ConditionOwner parent = new ConditionsController.ConditionOwner(Controller.SCENE, sceneDataControl.getId());
            ConditionsController.ConditionOwner owner  = new ConditionsController.ConditionOwner(type, elementReference.getTargetId(), parent);
            context1.Add(ConditionsController.CONDITION_OWNER, owner);

            conditionsController = new ConditionsController(elementReference.getConditions(), context1);
        }
 /**
  * Returns the id of the referenced element.
  *
  * @return Id of the referenced element
  */
 public string getElementId()
 {
     return(elementReference.getTargetId());
 }
 private int count(ElementReference er)
 {
     return(allReferencesDataControl.Count(e => !e.isPlayer() && e.getErdc().getElementId().Equals(er.getTargetId())));
 }