void OnPlacingNewSpirit(SpiritData spiritData) { if (Owner.CellControlSystem.IsGridBuilded) { var newSpiritLimit = spiritData.Get(Enums.Spirit.SpiritLimit).Value; var newGoldCost = spiritData.Get(Numeral.ResourceCost).Value; var newMagicCrystalCost = spiritData.Get(Enums.Spirit.MagicCrystalReq).Value; if (Owner.ResourceSystem.CheckHaveResources(newSpiritLimit, newGoldCost, newMagicCrystalCost)) { if (GameManager.Instance.GameState == GameState.InGameMultiplayer) { var choosedCell = Owner.CellControlSystem.ChoosedCell; var position = new Coordinates3D( (int)choosedCell.transform.position.x, (int)choosedCell.transform.position.y, (int)choosedCell.transform.position.z); SpiritCreationRequested?.Invoke(new SpiritCreationRequest() { Index = spiritData.Index, Rarity = (int)spiritData.Base.Rarity, Element = (int)spiritData.Base.Element, Position = position, CellIndex = Owner.CellControlSystem.Cells.IndexOf(choosedCell) }); } else { var newSpirit = Create.Spirit(spiritData, Owner.CellControlSystem.ChoosedCell, true); SpiritPlaced?.Invoke(newSpirit); } } } }
public void NetworkCreateSpirit(SpiritSystem spirit) { SpiritPlaced?.Invoke(spirit); }