示例#1
0
 public FormPutOnStorage(IStorage serviceS, IIngridient serviceC, IMain serviceM)
 {
     InitializeComponent();
     this.serviceS = serviceS;
     this.serviceC = serviceC;
     this.serviceM = serviceM;
 }
 private void AddIngridient(IIngridient ingridient)
 {
     if (ingridient != null && !Ingridients.Contains(ingridient))
     {
         Ingridients.Add(ingridient);
     }
 }
示例#3
0
    private void OnIngridientAdded(IIngridient obj)
    {
        if (obj is ISpawnable spawnable)
        {
            Spawner.Instance.RemoveFromWaiting(spawnable);
        }

        ISelectable select = obj as ISelectable;

        var position  = transform.position;
        var vacantPos = new Vector3(position.x,
                                    position.y + ContainedData._ingridients.Sum(el => el != obj ? el.GetHeight() : 0),
                                    position.z);

        if (select != null)
        {
            if (@select != null)
            {
                StartCoroutine(PlaceAnimation(@select, vacantPos, @select.Move));
            }
        }
        else
        {
            var t = obj as IEditable;
            t.GetTransform().position = vacantPos;
            t.GetTransform().gameObject.layer = 0;
            t.GetTransform().SetParent(transform);
        }

        IngridientAction?.Invoke(obj);
    }
示例#4
0
    private void OnTriggerEnter(Collider other)
    {
        var ingridient = other.GetComponent <IIngridient>();

        if (ingridient != null)
        {
            _ingridientInside = ingridient;
        }
    }
示例#5
0
    public void AddIngridient(IIngridient ingridient)
    {
        if (_ingridients == null)
        {
            _ingridients = new List <IIngridient>();
        }

        _ingridients.Add(ingridient);

        OnIngridientAdded?.Invoke(ingridient);
    }
示例#6
0
    private void OnIngridientAdded(IIngridient obj)
    {
        var position  = Vector3.zero;
        var vacantPos = new Vector3(position.x,
                                    position.y + _data._ingridients.Sum(el => el != obj ? el.GetHeight() * 2 : 0),
                                    position.z);


        var t = obj as IEditable;

        t.GetTransform().SetParent(_requestPosition);

        t.GetTransform().localPosition = vacantPos;
        t.GetTransform().gameObject.layer = 0;

        t.GetTransform().localScale = Vector3.one * 1.5f;
    }
        public PizzaDecorator(Pizza pizza, params IIngridient[] addedIngrids)
        {
            _pizza      = pizza;
            Ingridients = _pizza.Ingridients.GetRange(0, _pizza.Ingridients.Count);
            foreach (var ingrid in addedIngrids)
            {
                _ingridient = ingrid;
                if (_ingridient.GetType() == typeof(CakeLayer))
                {
                    throw new  ArgumentException("Нельзя добавить второй корж");
                }
                Ingridients.Add(_ingridient.GetType());
                if (Ingridients.Count % 7 == 0)
                {
                    discount *= 0.9;
                }

                _addedCost        += _ingridient.GetCost();
                _addedDescription += $" {_ingridient.GetDescription()} + ";
            }
        }
示例#8
0
    public bool InteractWith <T>(T interactionObject, InteractableZoneArgs args)
    {
        var vacantObject = interactionObject as IIngridient;

        if (vacantObject == null)
        {
            return(false);
        }
        if (_ingridientInside != vacantObject)
        {
            return(false);
        }

        if (_burger.GetData()._ingridients.Contains(_ingridientInside))
        {
            return(false);
        }

        _burger.GetData().AddIngridient(_ingridientInside);
        _ingridientInside = null;
        return(true);
    }
示例#9
0
    private Transform PlaceScheduledIngridient(IIngridient obj)
    {
        if (_schedule.Count == 0)
        {
            return(null);
        }

        for (int i = 0; i < _spawnZones.Count; i++)
        {
            if (_spawnZones[i].GetHoldedSpawnable() == obj)
            {
                _spawnZones[i].Remove(null);
            }
            if (_spawnZones[i].IsEmpty() == true)
            {
                _spawnZones[i].Spawn(_schedule[0]);
                _schedule.RemoveAt(0);
            }
        }

        return(null);
    }
示例#10
0
 private void OnTriggerExit(Collider other)
 {
     _ingridientInside = null;
 }
示例#11
0
 public FormIngridients(IIngridient service)
 {
     InitializeComponent();
     this.service = service;
 }