Esempio n. 1
0
 public void SetNewPath(List <Vector3Int> tradePath)
 {
     transform.position = FirstTown.Position;
     currentPathIndex   = 0;
     path             = new List <Vector3Int>(tradePath);
     nextTownToIncome = SecondTown;
 }
Esempio n. 2
0
    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();
            }
        }
    }
Esempio n. 3
0
        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");
        }
Esempio n. 4
0
 private void Awake()
 {
     _villagerModel      = GetComponent <VillagerModel>();
     _villagerNeeds      = GetComponent <VillagerNeedsController>();
     _villagerView       = GetComponent <VillagerView>();
     _villagerController = GetComponent <VillagerController>();
     _townController     = TownController.Instance;
     _spawnController    = SpawnController.Instance;
 }
Esempio n. 5
0
    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");
    }
Esempio n. 6
0
 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>();
 }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
    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. "));
    }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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();
        }
Esempio n. 12
0
 private void Awake()
 {
     townController = gameObject.GetComponent <TownController>();
     rows           = new Dictionary <Transform, ResourceUtil.ResourceType>();
     priceMenuGrid  = townMenu.transform.Find("PriceGrid");
 }
Esempio n. 13
0
 public void Start()
 {
     controller = GameController.townControl;
     StartCoroutine(Grow());
     TownController.AddTown(this);
 }