public void SetNewPath(List <Vector3Int> tradePath) { transform.position = FirstTown.Position; currentPathIndex = 0; path = new List <Vector3Int>(tradePath); nextTownToIncome = SecondTown; }
private void Move() { var nextPoint = TilemapsDataContainer.Instance.CellToWorld(path[currentPathIndex + 1]); //TODO добавить метод GetNextIndex если будет обновляться существующая дорога //TODO нужно чтобы мы не хранили путь а брали его каждый раз заново чтобы дорогу можно было обновлять "на горячую" if (currentPathIndex + 2 < path.Count) { transform.DOMove(nextPoint, MoveTime); currentPathIndex++; } else { if (IsTrading) { transform.DOMove(nextPoint, MoveTime); currentPathIndex = 0; nextTownToIncome.SatisfactionBar.TradeWasDone(SatisfactionIncome * defaultSatisfactionIncome); goldController.Gold += CurrentRoadGoldIncome * defaultRoadGoldIncome; path.Reverse(0, path.Count); nextTownToIncome = nextTownToIncome == SecondTown ? FirstTown : SecondTown; } else if (movedResource != null) { var seq = DOTween.Sequence(); seq.Append(transform.DOMove(nextPoint, MoveTime)); seq.AppendCallback(() => movedResource.FollowedMerchant = null); seq.AppendCallback(() => GridDataContainer.Instance.RemoveMerchant(this)); seq.Play(); } } }
protected override void OnEnter() { var character = CharacterManager.Instance.Character; if (!character.IsStartScenarioCompleted) { Game.Instance.SwitchState( new ScenarioGameState( Container.Instance.Resolve <IScenarioRepository>().Starting(), Container.Instance.Resolve <CharacterManager>().Character ) ); return; } if (character.Data.IsHardcore && character.Data.IsDead) { Game.Instance.ToCharacterSelection(); return; } // Note: this stuff is required to recalculate levels, useful when changing exp formulas // TODO: exp recalculation do not trigger achievements character.Entity.GetComponent <ExperienceComponent>().Experience.Add(0); character.Entity.GetComponent <ReliquaryComponent>().Available.ForEach(r => r.Experience.Add(0)); this.controller = Container.Instance.Instantiate <TownController>(); this.controller.Initialize(); MusicManager.Instance.Play("event:/Music/Town"); }
private void Awake() { _villagerModel = GetComponent <VillagerModel>(); _villagerNeeds = GetComponent <VillagerNeedsController>(); _villagerView = GetComponent <VillagerView>(); _villagerController = GetComponent <VillagerController>(); _townController = TownController.Instance; _spawnController = SpawnController.Instance; }
private void Awake() { _spawnController = SpawnController.Instance; _townController = TownController.Instance; _commands = new Queue <string>(); _inputField.onEndEdit.AddListener(OnEndEdit); CheckShowConsole(); _initPath = Path.Combine(Application.streamingAssetsPath, "init.rwc"); }
private void Awake() { _villagerModel = GetComponent <VillagerModel>(); _cellMapController = CellMapController.Instance; _villagerModel.Rigidbody2D = GetComponent <Rigidbody2D>(); _villagerModel.Orders = new Queue <OrderType>(); _townModel = TownModel.Instance; _townController = TownController.Instance; _villagerNeeds = GetComponent <VillagerNeedsController>(); _villagerStateController = GetComponent <VillagerStateController>(); }
public MerchantController CreateMerchant(TownController startTown, TownController endTown, Guid roadGuid) { var merchant = Instantiate(MerchantPrefab); var merchantController = merchant.GetComponent <MerchantController>(); merchantController.RoadGuid = roadGuid; merchantController.FirstTown = startTown; merchantController.SecondTown = endTown; GridDataContainer.Instance.Merchants.Add(merchantController); return(merchantController); }
public GameObject CreateRoad(Guid newRoadGuid, Vector3 middlePosition, TownController firstTown, TownController secondTown) { var road = Instantiate(RoadPrefab, middlePosition, Quaternion.identity); var controller = road.GetComponent <RoadController>(); controller.firstTown = firstTown; controller.secondTown = secondTown; controller.RoadGuid = newRoadGuid; GridDataContainer.Instance.Roads.Add(newRoadGuid, controller); road.transform.SetParent(transform); return(road); }
void Start() { gameControl = this; playerControl = player.GetComponent <PlayerController>(); townControl = gameObject.GetComponent <TownController>(); meteorControl = gameObject.GetComponent <MeteorController>(); textControl = gameObject.GetComponent <TextController>(); textControl.ProgressOutput(""); currentLevel = Instantiate((GameObject)Resources.Load("Levels/Level" + GetString(level))); StartCoroutine(textControl.PrintOutput(" Boogle. ")); }
public bool TryGetRoadBetweenTowns(TownController currentTown, TownController endTownController, //TODO move to helper out List <Vector3Int> tradePath, out Guid roadGuid) { RoadController road = Roads.FirstOrDefault(r => r.Value.firstTown == currentTown && r.Value.secondTown == endTownController || r.Value.firstTown == endTownController && r.Value.secondTown == currentTown).Value; if (road == null) { tradePath = null; return(false); } roadGuid = road.RoadGuid; tradePath = GetRoadByGuid(road.RoadGuid); return(true); }
private void EstablishPath() { TownController firstTown = null; if (GridDataContainer.Instance.Towns.TryGetValue(lastPath.First(), out var town)) { firstTown = town; } TownController secondTown = null; if (GridDataContainer.Instance.Towns.TryGetValue(lastPath.Last(), out town)) { secondTown = town; } if (firstTown != null && secondTown != null) { var newRoadGuid = Guid.NewGuid(); Vector3 middlePosition = lastPath[(lastPath.Count - 1) / 2]; GameObject road = RoadFabric.Instance.CreateRoad(newRoadGuid, middlePosition, firstTown, secondTown); var merchantController = MerchantFabric.Instance.CreateMerchant(firstTown, secondTown, newRoadGuid); merchantController.StartTrade(lastPath); var firstTile = GridDataContainer.Instance.RoadTilesData[lastPath[0]]; firstTile.RoadGuid = GridDataContainer.RoadInTownGuid; var lastTile = GridDataContainer.Instance.RoadTilesData[lastPath[lastPath.Count - 1]]; lastTile.RoadGuid = GridDataContainer.RoadInTownGuid; lastPath.RemoveAt(0); lastPath.RemoveAt(lastPath.Count - 1); foreach (RoadTileData roadTileData in lastPath.Select(r => GridDataContainer.Instance.RoadTilesData[r])) { var index = lastPath.IndexOf(roadTileData.Position); if (index == 0) { roadTileData.prevCell = firstTile; } if (index == lastPath.Count - 1) { roadTileData.nextCell = lastTile; } if (index + 1 < lastPath.Count) { roadTileData.nextCell = GridDataContainer.Instance.RoadTilesData[lastPath[index + 1]]; } if (index - 1 >= 0) { roadTileData.prevCell = GridDataContainer.Instance.RoadTilesData[lastPath[index - 1]]; } roadTileData.RoadGuid = newRoadGuid; roadTileData.CurrentObj.transform.SetParent(road.transform); } } lastPath = new List <Vector3Int>(); pathDrawer.RefreshRoadMap(); }
private void Awake() { townController = gameObject.GetComponent <TownController>(); rows = new Dictionary <Transform, ResourceUtil.ResourceType>(); priceMenuGrid = townMenu.transform.Find("PriceGrid"); }
public void Start() { controller = GameController.townControl; StartCoroutine(Grow()); TownController.AddTown(this); }