protected override void OnEnergyEnter(EnergyBehavior energyBehavior) { var row = ParentBoard.GetNotNodes(Behavior.transform.position.x, Behavior.transform.position.y); BoardNode closest = null; if (row.Count == 1) { closest = row[0]; } else { float closestDist = float.MaxValue; foreach (var n in row) { float dist = Vector3.Distance(Behavior.transform.position, n.Behavior.transform.position); if (closest == null || dist < closestDist) { closestDist = dist; closest = n; } } } if (closest != null) { DeferEnergyEnterTo(closest, energyBehavior); } }
protected override void OnEnergyEnter(EnergyBehavior energyBehavior) { base.OnEnergyEnter(energyBehavior); if (Energy == GameData.Constants.FillNodeFillRequirement) { ParentBoard.RemoveNode(this); Behavior.gameObject.SetActive(false); } }
protected override void OnEnergyEnter(EnergyBehavior energyBehavior) { base.OnEnergyEnter(energyBehavior); if (Energy == MaxEnergy) { // Create Basic Node var data = new BoardNodeData(); data.Affiliation = Affiliation; data.Type = BoardNodeType.Basic; data.Position = Position; data.StartingEnergy = MaxEnergy; ParentBoard.ReplaceNode(this, data); Behavior.gameObject.SetActive(false); } }
protected virtual void OnEnergyEnter(EnergyBehavior energyBehavior) { if (energyBehavior.EnergyObj.Affiliation == Affiliation.Value || Affiliation.Value == BoardNodeAffiliation.Neutral) { Affiliation.Value = energyBehavior.EnergyObj.Affiliation; float newValue = Energy + 1; if (newValue <= GameData.Constants.NodeMaxEnergy) { Energy.Value = newValue; } } else { float newValue = Energy - 1; if (newValue >= 0) { Energy.Value = newValue; if (newValue == 0) { Affiliation.Value = BoardNodeAffiliation.Neutral; } } } }
public Energy(EnergyBehavior behavior) { Behavior = behavior; }
protected static void DeferEnergyEnterTo(BoardNode node, EnergyBehavior energy) { node.OnEnergyEnter(energy); }