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)); }
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); }
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; } }
public void OnEndDrag(PointerEventData eventData) { enableDraw = false; enableCheckDistance = false; image.raycastTarget = true; EmptyCell newEmptycCell = UIUnit.GetFirstPickUI <EmptyCell>(eventData.position); backpack.SwapBackPackCell(this, newEmptycCell); }
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); } } } }
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); }
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(); } }
public virtual void OnEnable() { source = (UIUnit)target; sourceRef = serializedObject; GetProperties(); }
// 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; } } }
// 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); } } } } } } } } }