コード例 #1
0
        public bool IsWithinAllowedLimits(string stringValue, DocumentUnit unitType, bool isValueInPercent, UIUnitConverter uiUnitConverter)
        {
            UIUnit unit     = uiUnitConverter.CreateUIUnit(stringValue, unitType, isValueInPercent);
            int    intValue = uiUnitConverter.ToTwipsUnit(unit, IsValueInPercent);

            return(IsWithinAllowedLimits(intValue));
        }
コード例 #2
0
ファイル: UIFab.cs プロジェクト: exodrifter/orchid
    private GameObject CreateButton(string name, string img, Entity.Type type, Vector2 offset)
    {
        GameObject ret = new GameObject();

        ret.name                    = name;
        ret.transform.parent        = this.transform;
        ret.transform.localPosition = offset;
        ret.SetActive(false);

        tk2dSprite sprite = ret.AddComponent <tk2dSprite>();

        sprite.SetSprite(GetComponent <tk2dSprite>().Collection, m_theme + img);

        BoxCollider2D box = ret.AddComponent <BoxCollider2D>();

        box.size      = sprite.GetBounds().size;
        box.isTrigger = true;

        UIUnit unit = ret.AddComponent <UIUnit>();

        unit.m_buySound = m_buySound;
        unit.type       = type;
        unit.fab        = this;
        return(ret);
    }
コード例 #3
0
    private void endGame(Player p, string title, string description)
    {
        UIUnit ui = p.endScreen.gameObject.GetComponent <UIUnit>();

        if (ui.text != null)
        {
            ui.text.text = title;
        }

        if (ui.description != null)
        {
            ui.description.text = description;
        }

        ButtonSystem_wrapper b = Object.FindObjectOfType <ButtonSystem_wrapper>();

        if (b != null)
        {
            b.showHide(p.endScreen);
        }

        foreach (FSystem system in SystemHolder.pausableSystems)
        {
            system.Pause = true;
        }
    }
コード例 #4
0
    public void OnEndDrag(PointerEventData eventData)
    {
        enableDraw          = false;
        enableCheckDistance = false;
        image.raycastTarget = true;

        EmptyCell newEmptycCell = UIUnit.GetFirstPickUI <EmptyCell>(eventData.position);

        backpack.SwapBackPackCell(this, newEmptycCell);
    }
コード例 #5
0
ファイル: Unit.cs プロジェクト: SeanMcNair/TeamApex
 protected virtual void SpawnUI()
 {
     //spawn ui
     if (ui)
     {
         Destroy(ui.gameObject);
     }
     if (spawnUI != SpawnUIOptions.None)
     {
         if (spawnUI == SpawnUIOptions.FromData)
         {
             if (curData.spawnUI)
             {
                 if (curData.UIToSpawn)
                 {
                     //spawn ui
                     ui = Instantiate(curData.UIToSpawn);
                     if (curData.parentUIToUnit)
                     {
                         ui.transform.position = transform.position;
                         ui.transform.rotation = transform.rotation;
                         ui.transform.SetParent(transform);
                     }
                 }
             }
         }
         else if (spawnUI == SpawnUIOptions.Override)
         {
             if (UIToSpawn)
             {
                 //spawn ui
                 ui = Instantiate(UIToSpawn).GetComponent <UIUnit>();
                 if (parentUIToUnit)
                 {
                     ui.transform.position = transform.position;
                     ui.transform.rotation = transform.rotation;
                     ui.transform.SetParent(transform);
                 }
             }
         }
         if (ui)
         {
             //set ui values to the vitals
             for (int i = 0; i < valueAmountLocals.Length; i++)
             {
                 valueAmountLocals[i].CurUI = ui.GetValueAmountUI(i);
             }
             if (curData.avatarIcon)
             {
                 ui.SetAvatarIcon(curData.avatarIcon);
             }
         }
     }
 }
コード例 #6
0
        public override bool SpinDown()
        {
            UIUnit value = UIUnit.Create(CurrentState.EditText, DefaultMeasurementUnit, UnitPrecisionDictionary.DefaultPrecisions, IsValueInPercent);

            value--;
            if (Properties.IsWithinAllowedLimits(unitConverter.ToTwipsUnit(value, IsValueInPercent)))
            {
                Apply(value.ToString(), 0, 0, StateChangeType.Insert);
                return(false);
            }
            return(true);
        }
コード例 #7
0
        protected internal virtual void OnValidating(object sender, CancelEventArgs e)
        {
            e.Cancel       = false;
            this.ErrorText = String.Empty;
            UIUnit result = null;

            string stringEditValue = EditValue as String;

            if (Properties.AllowNullInput == DefaultBoolean.True && String.IsNullOrEmpty(stringEditValue))
            {
                return;
            }
            if (Properties.AllowNullInput == DefaultBoolean.False && String.IsNullOrEmpty(stringEditValue))
            {
                e.Cancel  = true;
                ErrorText = GetInvalidValueRangeErrorMessage();
                return;
            }
            bool isValid = UIUnit.TryParse(stringEditValue, Properties.DefaultUnitType, out result, IsValueInPercent);

            if (!isValid)
            {
                e.Cancel  = true;
                ErrorText = XtraRichEditLocalizer.GetString(XtraRichEditStringId.Msg_UsedWrongUnit);
                return;
            }
            if (!result.IsValidValue)
            {
                e.Cancel  = true;
                ErrorText = XtraRichEditLocalizer.GetString(XtraRichEditStringId.Msg_InvalidNumber);
                return;
            }
            if (!Properties.IsWithinAllowedLimits(stringEditValue, result.UnitType, result.IsValueInPercent, UIUnitConverter))
            {
                e.Cancel  = true;
                ErrorText = GetInvalidValueRangeErrorMessage();
            }
        }
コード例 #8
0
ファイル: UIUnitEditor.cs プロジェクト: SeanMcNair/TeamApex
 public virtual void OnEnable()
 {
     source    = (UIUnit)target;
     sourceRef = serializedObject;
     GetProperties();
 }
コード例 #9
0
    // Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        if (!levelInit)
        {
            // Pause all game system during initialisation
            foreach (FSystem system in SystemHolder.pausableSystems)
            {
                if (system == this)
                {
                    continue;
                }
                system.Pause = true;
            }

            foreach (GameObject go in _mapSpawnerGO)
            {
                Factory factory = go.GetComponent <Factory>();
                Tilemap tilemap = go.GetComponent <Tilemap>();

                //factory.reloadProgress += Time.deltaTime;
                if (factory.reloadProgress >= factory.reloadTime)
                {
                    foreach (var pos in tilemap.cellBounds.allPositionsWithin)
                    {
                        Vector3Int localPos = new Vector3Int(pos.x, pos.y, pos.z);

                        if (tilemap.HasTile(localPos))
                        {
                            Vector3 worldPos = tilemap.CellToWorld(localPos);

                            //Instantiate and bind to FYFY a new instance of antibodies drift (factory prefab)
                            GameObject mySpawn = Object.Instantiate <GameObject>(factory.prefab, worldPos, Quaternion.Euler(0f, 0f, Random.Range(0f, 360f)));
                            GameObjectManager.bind(mySpawn);
                        }
                    }

                    factory.reloadProgress = 0f;
                }
            }

            foreach (GameObject go in _playerGO)
            {
                Player player = go.GetComponent <Player>();

                foreach (GameObject buyableGO in player.levelBuyablePrefabs)
                {
                    Buyable buyable = buyableGO.GetComponent <Buyable>();

                    //Create a new visual
                    GameObject myUI = Object.Instantiate <GameObject>(player.unitUIVisual, player.unitContainer.transform);
                    GameObjectManager.bind(myUI);

                    //Add height to container (each new element is 100px height here)
                    RectTransform rt = player.unitContainer.GetComponent <RectTransform>();
                    rt.sizeDelta = new Vector2(rt.sizeDelta.x, rt.sizeDelta.y + 100);

                    SpriteRenderer sr   = buyableGO.GetComponentInChildren <SpriteRenderer>();
                    Info           info = buyableGO.GetComponent <Info>();

                    //Update UI image and text
                    UIUnit ui = myUI.GetComponent <UIUnit>();
                    ui.image.sprite = sr.sprite;
                    ui.image.color  = sr.color;

                    ui.text.text = info.myName.Replace("\\n", "\n");;
                    if (buyable != null)
                    {
                        ui.text.text += "\nCost : " + buyable.energyPrice.ToString("F0") + " energy";
                    }

                    ui.prefab = buyableGO;
                }
            }

            levelInit = true;

            // Resume systems
            foreach (FSystem system in SystemHolder.pausableSystems)
            {
                system.Pause = false;
            }
        }
        else
        {
            foreach (GameObject go in _playerGO)
            {
                Health playerHealth = go.GetComponent <Health>();
                Energy playerEnergy = go.GetComponent <Energy>();

                //Update health
                if (playerHealth != null && !gamePaused)
                {
                    bool init = false;

                    if (playerHealth.maxHealthPoints == 0)
                    {
                        init = true;
                    }
                    playerHealth.healthPoints = 0;

                    foreach (GameObject cellGO in _cellsGO)
                    {
                        Health cellHealth = cellGO.GetComponent <Health>();

                        if (init)
                        {
                            playerHealth.maxHealthPoints += cellHealth.maxHealthPoints;
                        }

                        playerHealth.healthPoints += cellHealth.healthPoints;
                    }
                }

                //Update energy
                if (playerEnergy != null && !gamePaused)
                {
                    foreach (GameObject energizerGO in _energizerGO)
                    {
                        Energizer energizer = energizerGO.GetComponent <Energizer>();

                        energizer.reloadProgress += Time.deltaTime;

                        if (energizer.reloadProgress >= energizer.reloadTime)
                        {
                            playerEnergy.energyPoints += energizer.recoverPoints;

                            energizer.reloadProgress = 0f;
                        }
                    }

                    //Cap at max
                    if (playerEnergy.energyPoints > playerEnergy.maxEnergyPoints)
                    {
                        playerEnergy.energyPoints = playerEnergy.maxEnergyPoints;
                    }

                    if (playerEnergy.energyPoints < 0)
                    {
                        playerEnergy.energyPoints = 0f;
                    }
                }
            }

            //Check cell spawn position of cell is dead
            foreach (GameObject go in _mapSpawnerGO)
            {
                Tilemap tilemap = go.GetComponent <Tilemap>();

                //Remove cell tile position when cell is dead
                foreach (var pos in tilemap.cellBounds.allPositionsWithin)
                {
                    Vector3Int localPos = new Vector3Int(pos.x, pos.y, pos.z);

                    if (tilemap.HasTile(localPos))
                    {
                        bool    cellFound = false;
                        Vector3 worldPos  = tilemap.CellToWorld(localPos);

                        Collider2D[] colliders = Physics2D.OverlapCircleAll(worldPos, 1f, LayerMask.GetMask("Ignore Raycast"));

                        foreach (Collider2D collider in colliders)
                        {
                            GameObject collidedGO = collider.gameObject;

                            if (_cellsGO.contains(collidedGO.GetInstanceID()))
                            {
                                //There is a cell at position
                                cellFound = true;
                                break;
                            }
                        }

                        if (!cellFound)
                        {
                            tilemap.SetTile(localPos, null);
                        }
                    }
                }
            }

            //Spawn waves
            if (!gamePaused)
            {
                foreach (GameObject go in _levelSpawnerGO)
                {
                    FactoryLevel factory = go.GetComponent <FactoryLevel>();

                    factory.reloadProgress += Time.deltaTime;

                    if (factory.reloadProgress >= factory.reloadTime)
                    {
                        if (factory.currentWave < factory.waves.Count)
                        {
                            Wave wave = factory.waves[factory.currentWave];

                            List <Vector3> spawnArea  = TilemapUtils.getAllWorldPosition(factory.spawnArea);
                            List <Vector3> targetArea = TilemapUtils.getAllWorldPosition(factory.spawnTargetArea);

                            //Spawn each group of entity
                            foreach (Group g in wave.groups)
                            {
                                int i = 0;

                                while (i < g.nbSpawn)
                                {
                                    Vector3 position = Vector3.zero;
                                    if (spawnArea.Count > 0)
                                    {
                                        position = spawnArea[Random.Range(0, spawnArea.Count)];
                                    }

                                    GameObject mySpawn = Object.Instantiate <GameObject>(g.prefab, position, Quaternion.Euler(0f, 0f, Random.Range(0f, 360f)));
                                    GameObjectManager.bind(mySpawn);

                                    //Init first target move
                                    Vector3 target = Vector3.zero;
                                    if (targetArea.Count > 0)
                                    {
                                        target = targetArea[Random.Range(0, targetArea.Count)];
                                    }

                                    Move mv = mySpawn.GetComponent <Move>();
                                    if (mv != null)
                                    {
                                        mv.targetPosition    = target;
                                        mv.targetObject      = null;
                                        mv.newTargetPosition = true;
                                        mv.forcedTarget      = true;
                                    }

                                    i++;
                                }
                            }

                            factory.reloadTime     = wave.timeBeforeNext;
                            factory.reloadProgress = 0f;

                            factory.currentWave += 1;
                        }
                    }



                    //Destroy level wave factory if last wave was released (for victory condition)
                    if (factory.currentWave >= factory.waves.Count)
                    {
                        if (factory.waveIndicator != null)
                        {
                            StringBuilder sb = new StringBuilder();

                            sb.AppendLine("Wave : " + factory.currentWave + " / " + factory.waves.Count);
                            sb.AppendLine("Final Wave");

                            factory.waveIndicator.text = sb.ToString();
                        }

                        GameObjectManager.removeComponent <FactoryLevel>(go);
                        //GameObjectManager.unbind(go);
                        //Object.Destroy(go);
                    }
                    else
                    {
                        if (factory.waveIndicator != null)
                        {
                            StringBuilder sb = new StringBuilder();

                            sb.AppendLine("Wave : " + factory.currentWave + " / " + factory.waves.Count);
                            float time = factory.reloadTime - factory.reloadProgress;
                            sb.AppendLine("Time remain : " + time.ToString("F0"));

                            factory.waveIndicator.text = sb.ToString();
                        }
                    }
                }
            }

            //Check level status
            if (_attackersGO.Count == 0)
            {
                levelStatus = "Victory";
            }
            else
            {
                int nbHealth     = 0;
                int nbHealthZero = 0;

                foreach (GameObject go in _playerGO)
                {
                    Health playerHealth = go.GetComponent <Health>();

                    if (playerHealth != null)
                    {
                        nbHealth += 1;

                        if (playerHealth.healthPoints == 0)
                        {
                            nbHealthZero += 1;
                        }
                    }
                }

                if (nbHealthZero == nbHealth)
                {
                    levelStatus = "Defeat";
                }
            }
        }

        GameObject playerGO = _playerGO.First();

        if (playerGO != null)
        {
            Player player = playerGO.GetComponent <Player>();

            string title, descr;
            switch (levelStatus)
            {
            case "Victory":
                title = "Victoire !";
                descr = "Vous avez réussi à vous protéger de la menace pathogène.";
                endGame(player, title, descr);
                break;

            case "Defeat":
                title = "Défaite.";
                descr = "La menace pathogène s'est trop répandue et est maintenant hors de contrôle.";
                endGame(player, title, descr);
                break;

            case "Pending":
            default:
                break;
            }
        }
    }
コード例 #10
0
    // Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        GameObject go = _selectorGO.First();

        if (go != null)
        {
            SelectorEntity selector = go.GetComponent <SelectorEntity>();

            bool isOnBuyable = false;
            foreach (GameObject buyable in _buyableSelectableGO)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    unSelectAll(selector);

                    SelectableEntity selectable = buyable.GetComponent <SelectableEntity>();

                    selectable.isSelected = true;
                    GameObjectManager.setGameObjectTag(buyable, "Selected");

                    isOnBuyable = true;
                    break;
                }
            }

            if (!isOnBuyable)
            {
                // If we press the right mouse button, move selected units or buy unit
                if (Input.GetMouseButtonDown(1) && !selector.isSelecting && _selectedGO.Count > 0)
                {
                    foreach (GameObject selectedObject in _selectedGO)
                    {
                        Move move = null;

                        if (selector.hasSelected)
                        {
                            //Case : unit selected -> move the unit
                            move = selectedObject.GetComponent <Move>();
                        }
                        else
                        {
                            //Case : buyable object selected -> buy
                            UIUnit     ui       = selectedObject.GetComponent <UIUnit>();
                            GameObject playerGO = _playerGO.First();

                            if (ui != null && ui.prefab != null && playerGO != null)
                            {
                                Player player = playerGO.GetComponent <Player>();

                                Energy  playerEnergy = playerGO.GetComponent <Energy>();
                                Buyable buyable      = ui.prefab.GetComponent <Buyable>();

                                //Check if we have enough "money"
                                if (buyable != null && buyable.energyPrice <= playerEnergy.energyPoints)
                                {
                                    playerEnergy.energyPoints -= buyable.energyPrice;

                                    //Spawn
                                    List <Vector3> spawnArea = TilemapUtils.getAllWorldPosition(player.spawnArea);
                                    Vector3        position  = Vector3.zero;
                                    if (spawnArea.Count > 0)
                                    {
                                        position = spawnArea[Random.Range(0, spawnArea.Count)];
                                    }

                                    GameObject myNewUnit = Object.Instantiate <GameObject>(ui.prefab, position, Quaternion.Euler(0f, 0f, Random.Range(0f, 360f)));
                                    GameObjectManager.bind(myNewUnit);

                                    move = myNewUnit.GetComponent <Move>();
                                }

                                //unSelectAll();
                            }
                        }

                        //Move the unit
                        if (move != null)
                        {
                            move.targetPosition    = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                            move.newTargetPosition = true;
                            move.forcedTarget      = true;
                        }
                    }
                }

                // If we press the left mouse button, begin selection and remember the location of the mouse
                if (Input.GetMouseButtonDown(0))
                {
                    selector.isSelecting    = true;
                    selector.mousePosition1 = Input.mousePosition;

                    unSelectAll(selector);
                }

                // If we let go of the left mouse button, end selection
                if (Input.GetMouseButtonUp(0))
                {
                    List <GameObject> selectedObjects = new List <GameObject>();

                    foreach (GameObject selectableObject in _selectableGO)
                    {
                        if (IsWithinSelectionBounds(selectableObject, selector))
                        {
                            SelectableEntity selectable = selectableObject.GetComponent <SelectableEntity>();
                            selectable.isSelected = false;
                            GameObjectManager.setGameObjectTag(selectableObject, "Selected");

                            selectedObjects.Add(selectableObject);
                        }
                    }

                    var sb = new StringBuilder();
                    sb.AppendLine(string.Format("Selecting [{0}] Units", selectedObjects.Count));
                    foreach (GameObject selectedObject in selectedObjects)
                    {
                        sb.AppendLine("-> " + selectedObject.name);
                    }
                    Debug.Log(sb.ToString());

                    selector.isSelecting = false;
                    if (selectedObjects.Count > 0)
                    {
                        selector.hasSelected = true;
                    }
                }

                // Highlight all objects within the selection box
                foreach (GameObject selectableObject in _selectableGO)
                {
                    Renderer r = selectableObject.GetComponentInChildren <Renderer>();
                    if (IsWithinSelectionBounds(selectableObject, selector))
                    {
                        if (r != null)
                        {
                            r.material.color = Color.green;
                        }
                    }
                    else
                    {
                        if (r != null)
                        {
                            r.material.color = Color.white;
                        }
                    }
                }
            }

            if (Input.GetMouseButtonDown(0))
            {
                //Update infos
                Ray          ray   = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit2D hit2d = Physics2D.GetRayIntersection(ray, Mathf.Infinity, LayerMask.GetMask("Ignore Raycast"));

                if (hit2d.collider != null)
                {
                    GameObject collideGO = hit2d.collider.gameObject;

                    if (collideGO != null)
                    {
                        Info infos = collideGO.GetComponent <Info>();

                        if (infos != null)
                        {
                            foreach (GameObject infoPanelGo in _infoPanelGO)
                            {
                                UIUnit ui = infoPanelGo.GetComponent <UIUnit>();

                                if (ui.image != null)
                                {
                                    SpriteRenderer sr = collideGO.GetComponentInChildren <SpriteRenderer>();

                                    if (sr != null)
                                    {
                                        ui.image.sprite = sr.sprite;
                                        ui.image.color  = sr.color;
                                    }
                                    else
                                    {
                                        ui.image.sprite = Resources.Load <Sprite>("Icons/placeholder");
                                        ui.image.color  = Color.white;
                                    }
                                }

                                if (ui.text != null)
                                {
                                    ui.text.text = infos.myName.Replace("\\n", "\n");;
                                }

                                if (ui.description != null)
                                {
                                    StringBuilder sb = new StringBuilder();

                                    Prey prey = collideGO.GetComponent <Prey>();
                                    if (prey != null)
                                    {
                                        sb.AppendLine("Type : " + prey.myType);
                                    }

                                    Predator predator = collideGO.GetComponent <Predator>();
                                    if (predator != null)
                                    {
                                        sb.AppendLine("Targets : " + string.Join(" / ", predator.myPreys) + "\n");
                                    }

                                    sb.AppendLine(infos.myDescription);

                                    ui.description.text = sb.ToString().Replace("\\n", "\n");;

                                    RectTransform rtInfoPanel       = (RectTransform)ui.gameObject.transform;
                                    RectTransform rtDescriptionText = (RectTransform)ui.description.GetComponent <ContentSizeFitter>().transform;
                                    LayoutRebuilder.ForceRebuildLayoutImmediate(rtDescriptionText);

                                    float posy = -10 - rtDescriptionText.rect.height / 2;

                                    rtDescriptionText.anchoredPosition = new Vector2(rtDescriptionText.anchoredPosition.x, posy);
                                    rtInfoPanel.sizeDelta = new Vector2(rtInfoPanel.sizeDelta.x, rtDescriptionText.rect.height);
                                }

                                if (ui.button != null)
                                {
                                    ui.button.onClick.RemoveAllListeners();
                                    ButtonSystem_wrapper b = Object.FindObjectOfType <ButtonSystem_wrapper>();

                                    if (infos.moreInfoUrl != null && infos.moreInfoUrl != "" && b != null)
                                    {
                                        ui.button.onClick.AddListener(delegate { b.openURL(infos.moreInfoUrl); });
                                        GameObjectManager.setGameObjectState(ui.button.gameObject, true);
                                    }
                                    else
                                    {
                                        GameObjectManager.setGameObjectState(ui.button.gameObject, false);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }