/// <summary> /// Внести всю нежную информацию о юните в массивы, /// и самого юнита внести в массив юнитов /// </summary> /// <param name="_objectForRegister">регистрируемый юнит</param> public void RegisterInGlobalMap(Unit_SC _objectForRegister) { Vector2Int _key = _objectForRegister.gridPosition; if (!landBigUnits.ContainsKey(_key)) { landBigUnits.Add(_key, _objectForRegister); ++landsUnitsQuantity; } else { Debug.LogError("Ключ " + _key + " уже используется"); } }
/// <summary> /// Проверить возможность передвижения /// </summary> /// <param name="_posForCheck">Куда идет?</param> /// <param name="_moveUnit">Кто идет?</param> /// <returns></returns> public bool CheckMoveLegal(Vector2Int _posForCheck, Unit_SC _moveUnit) { if (landObjects.ContainsKey(_moveUnit.gridPosition + _posForCheck)) { if (!landObjects[_moveUnit.gridPosition + _posForCheck].isOpen) { return(false); } } if (landBigUnits.ContainsKey(_moveUnit.gridPosition + _posForCheck)) { if (!landBigUnits[_moveUnit.gridPosition + _posForCheck].TryMove(_posForCheck)) { return(false); } } MoveElementInDictionary(_posForCheck, _moveUnit); return(true); }
void MoveElementInDictionary(Vector2Int _posForCheck, Unit_SC _moveUnit) { landBigUnits.Add(_moveUnit.gridPosition + _posForCheck, _moveUnit); landBigUnits.Remove(_moveUnit.gridPosition); }