Esempio n. 1
0
    // Use this for initialization
    void Start()
    {
        Arg tArg = MySceneManager.getArg("map");

        mMap = LocalMapCreater.create(tArg.get <string>("mapName"));
        //ユーザ
        MapCharacter tPlayer = MapCharacterCreater.create("player", "player/player", new Direction(tArg.get <string>("direction")), "player");

        tPlayer.setPosition(new Vector2(tArg.get <int>("positionX"), tArg.get <int>("positionY")));
        mMap.addCharacter(tPlayer);

        GameObject tCamera = GameObject.Find("MapCamera");

        tCamera.transform.parent        = tPlayer.transform;
        tCamera.transform.localPosition = new Vector3(0, 0, -100);

        //ui
        MySceneManager.openScene("mapUi", new Arg());
        Subject.addObserver(new Observer("mapUi", (message) => {
            if (message.name == "menuButton")
            {
                Debug.Log("open menu");
            }
        }, "map"));
    }
Esempio n. 2
0
        /// <summary>
        /// Release a local slot by its symbol.
        /// Slot is not associated with symbol after this.
        /// </summary>
        internal void FreeLocal(ILocalSymbol symbol)
        {
            LocalDefinition slot = GetLocal(symbol);

            LocalMap.Remove(symbol);
            FreeSlot(slot);
        }
Esempio n. 3
0
    public void CreateLocalMap(GameObject panel)
    {
        InputMapSize();

        if(X >= MinMapSize && Y >= MinMapSize && X <= MaxMapSize && Y <= MaxMapSize)
        {
            //Очищаем карту перед созданием новой
            DestroyMap();

            LocalMap map = new LocalMap(X, Y);

            for(ushort i = 0; i < map.Width; ++i)
            {
                for(ushort j = 0; j < map.Height; ++j)
                {
                    //map.HeightMatrix[j, i] = TerrainHeight;
                }
            }
            GameObject.FindWithTag("WorldVisualizer").GetComponent<WorldVisualizer>().RenderWholeMap(map);

            panel.gameObject.SetActive(false);
        }

        if(X < MinMapSize || Y < MinMapSize)
        {
            Debug.Log("Меньше " + MinMapSize);
        }

        if(X > MaxMapSize || Y > MaxMapSize)
        {
            Debug.Log("Больше " + MaxMapSize);
        }
    }
Esempio n. 4
0
 public PathFinishCondition(Vector3Int target, ActionTargetTypeEnum targetType)
 {
     if (targetType == EXACT || targetType == ANY)
     {
         acceptable.Add(target);
     }
     if (targetType == NEAR || targetType == ANY)   // add near tiles
     {
         LocalMap map = GameModel.localMap;
         PositionUtil.allNeighbour
         .Select(delta => target + delta)
         .Where(pos => map.inMap(pos))
         .Where(pos => map.passageMap.passage.get(pos) == PASSABLE.VALUE)
         .Apply(pos => acceptable.Add(pos));
         PositionUtil.allNeighbour
         .Select(delta => target + delta)
         .Select(pos => pos.add(0, 0, -1))
         .Where(pos => map.inMap(pos))
         .Where(pos => map.blockType.get(pos) == RAMP.CODE)
         .Apply(pos => acceptable.Add(pos));
     }
     if (targetType != NEAR && targetType != ANY)
     {
         return;
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Release a local slot by its identity.
        /// Slot is not associated with identity after this.
        /// </summary>
        internal void FreeLocal(object identity)
        {
            var slot = GetLocal(identity);

            LocalMap.Remove(identity);
            FreeSlot(slot);
        }
Esempio n. 6
0
 public void run(LocalMap aMap, VoidFunction aCallback)
 {
     mJackedAi = new Dictionary <string, MapCharacter.MapCharaJackedAi>();
     //AI Jack
     //jackできるか確認
     foreach (string tName in mEvent.get <List <String> >("jack"))
     {
         if (!aMap.getCharacter(tName).canJackAi())//jack不可(イベント発火中止)
         {
             aCallback();
             return;
         }
     }
     //jackする
     foreach (string tName in mEvent.get <List <String> >("jack"))
     {
         mJackedAi[tName] = aMap.getCharacter(tName).jackAi();
     }
     //イベント発火
     runEventList(() => {
         //jackしたAIを解放
         foreach (KeyValuePair <string, MapCharacter.MapCharaJackedAi> tAi in mJackedAi)
         {
             tAi.Value.endJack();
         }
         mJackedAi = new Dictionary <string, MapCharacter.MapCharaJackedAi>();
         //会話ウィンドウを閉じる
         ConversationWindow.close(() => {
             aCallback();
         });
     });
 }
Esempio n. 7
0
        private Vector3 speed; // keeps sprite speed between ticks

        public MouseMovementSystem(LocalGameRunner initializer)
        {
            text   = initializer.text;
            sprite = initializer.selector;
            map    = GameModel.localMap;
            bounds = new IntBounds3(0, 0, 0, map.xSize, map.ySize, map.zSize);
        }
Esempio n. 8
0
        /// <summary>
        /// Release a local slot by its symbol.
        /// Slot is not associated with symbol after this.
        /// </summary>
        internal void FreeLocal(ILocalSymbolInternal symbol)
        {
            var slot = GetLocal(symbol);

            LocalMap.Remove(symbol);
            FreeSlot(slot);
        }
 public override void generate()
 {
     Debug.Log("placing ramps");
     localMap = GenerationState.get().localGenContainer.localMap;
     fillRamps();
     fillFloors();
 }
Esempio n. 10
0
 public LocalMapTileUpdater(RectTransform mapHolder)
 {
     this.mapHolder = mapHolder;
     layerPrefab    = Resources.Load <GameObject>("prefabs/LocalMapLayer");
     map            = GameModel.localMap;
     tileSetHolder.loadAll();
 }
Esempio n. 11
0
        internal static void CreateMarker(LocalMap map, PointerEventData eventData)
        {
            ModMapMarker marker = NewMarker(map, eventData);

            LocalMap.Markers.Add(marker);
            LocalMap_Set(map);  // Force a refresh to display the new mark
            Game.Instance.UI.Common.UISound.Play(UISoundType.ButtonClick);
        }
        // updates camera bounds to make 3 tiles around map visible
        private void updateCameraBounds()
        {
            LocalMap map = GameModel.localMap;

            cameraBounds.set(0, 0, map.xSize, map.ySize);
            cameraBounds.extendX((int)(overlookTiles - cameraWidth()));
            cameraBounds.extendY((int)(overlookTiles - camera.orthographicSize));
            cameraBounds.move(0, GameModel.get().selector.position.z / 2f);
        }
Esempio n. 13
0
        // updates camera bounds to make 3 tiles around map visible
        private void updateCameraBounds()
        {
            LocalMap map = GameModel.localMap;

            cameraBounds.set(0, 0, map.xSize, map.ySize);
            cameraBounds.extendX((int)(overlookTiles - cameraWidth()));
            cameraBounds.extendY((int)(overlookTiles - camera.orthographicSize));
            cameraBounds.move(0, -target.z / 4f);
        }
Esempio n. 14
0
 public PassageMap(LocalMap localMap)
 {
     this.localMap = localMap;
     blockTypeMap  = localMap.blockType;
     cachePosition = new Vector3Int();
     area          = new UtilByteArrayWithCounter(localMap.xSize, localMap.ySize, localMap.zSize);
     passage       = new UtilByteArray(localMap.xSize, localMap.ySize, localMap.zSize);
     updater       = new PassageUpdater(localMap, this);
     util          = new PassageUtil(localMap, this);
 }
Esempio n. 15
0
        private void createLayers(LocalMap map)
        {
            Transform transform = mapHolder.transform;

            for (int i = 0; i < map.zSize; i++)
            {
                GameObject layer = GameObject.Instantiate(layerPrefab, new Vector3(0, i / 2f, -i * 2) + transform.position, Quaternion.identity, transform);
                layers.Add(layer.transform.GetComponentInChildren <Tilemap>());
            }
        }
Esempio n. 16
0
        public LocalGenContainer()
        {
            LocalGenConfig config = GenerationState.get().localGenConfig;

            this.world            = GenerationState.get().world;
            heightsMap            = new float[config.areaSize, config.areaSize];
            config.localElevation = (int)(world.worldMap.elevation[config.location.x, config.location.y] * config.localElevation);
            Debug.Log("localGenContainer: area size" + config.areaSize);
            localMap = new LocalMap(config.areaSize, config.areaSize, config.localElevation + config.airLayersAboveGround);
        }
Esempio n. 17
0
 public RowRecogDescForge(
     EventType parentEventType,
     EventType rowEventType,
     EventType compositeEventType,
     EventType multimatchEventType,
     int[] multimatchStreamNumToVariable,
     int[] multimatchVariableToStreamNum,
     ExprNode[] partitionBy,
     MultiKeyClassRef partitionByMultiKey,
     LocalMap variableStreams,
     bool hasInterval,
     bool iterateOnly,
     bool unbound,
     bool orTerminated,
     bool collectMultimatches,
     bool defineAsksMultimatches,
     int numEventsEventsPerStreamDefine,
     string[] multimatchVariablesArray,
     RowRecogNFAStateForge[] startStates,
     RowRecogNFAStateForge[] allStates,
     bool allMatches,
     MatchRecognizeSkipEnum skip,
     ExprNode[] columnEvaluators,
     string[] columnNames,
     TimePeriodComputeForge intervalCompute,
     int[] previousRandomAccessIndexes,
     AggregationServiceForgeDesc[] aggregationServices)
 {
     this._parentEventType = parentEventType;
     RowEventType = rowEventType;
     this._compositeEventType = compositeEventType;
     this._multimatchEventType = multimatchEventType;
     this._multimatchStreamNumToVariable = multimatchStreamNumToVariable;
     this._multimatchVariableToStreamNum = multimatchVariableToStreamNum;
     this._partitionBy = partitionBy;
     this._partitionByMultiKey = partitionByMultiKey;
     this._variableStreams = variableStreams;
     this._hasInterval = hasInterval;
     this._iterateOnly = iterateOnly;
     this._unbound = unbound;
     this._orTerminated = orTerminated;
     this._collectMultimatches = collectMultimatches;
     this._defineAsksMultimatches = defineAsksMultimatches;
     this._numEventsEventsPerStreamDefine = numEventsEventsPerStreamDefine;
     this._multimatchVariablesArray = multimatchVariablesArray;
     this._startStates = startStates;
     this._allStates = allStates;
     this._allMatches = allMatches;
     this._skip = skip;
     this._columnEvaluators = columnEvaluators;
     this._columnNames = columnNames;
     this._intervalCompute = intervalCompute;
     this._previousRandomAccessIndexes = previousRandomAccessIndexes;
     this._aggregationServices = aggregationServices;
 }
        // private Text text;

        public EntitySelectorInputSystem(LocalGameRunner initializer, CameraWithEsMovementSystem cameraWithEsMovementSystem)
        {
            this.camera = initializer.mainCamera;
            mapHolder   = initializer.mapHolder;
            localMap    = GameModel.localMap;
            // this.text = initializer.text;
            screenBounds.extendX((int)(-Screen.width * 0.01f));
            screenBounds.extendY((int)(-Screen.height * 0.01f));
            // visualSystem = new EntitySelectorVisualMovementSystem(camera, initializer.selector, initializer.mapHolder);
            initControllers();
        }
Esempio n. 19
0
        private static Vector3 GetPositionFromEvent(LocalMap map, PointerEventData eventData)
        {
            Vector2 vector2;

            RectTransformUtility.ScreenPointToLocalPointInRectangle(map.Image.rectTransform, eventData.position, Game.Instance.UI.UICamera, out vector2);
            vector2 += Vector2.Scale(map.Image.rectTransform.sizeDelta, map.Image.rectTransform.pivot);
            LocalMapRenderer.DrawResult drawResult = Helpers.GetField <LocalMapRenderer.DrawResult>(map, "m_DrawResult");
            Vector2 vector21   = new Vector2(vector2.x / (float)drawResult.ColorRT.width, vector2.y / (float)drawResult.ColorRT.height);
            Vector3 worldPoint = LocalMapRenderer.Instance.ViewportToWorldPoint(vector21);

            return(worldPoint);
        }
Esempio n. 20
0
    /// <summary>
    /// Initializes the map.
    /// </summary>
    public static bool InitializeMap()
    {
        _map = new LocalMap();
        for (int i = 0; i < Resource.Data.mapNum.Count; ++i)
        {
            string tileName = Resource.Data.groundName[Resource.Data.mapNum[i]];
            var    obj      = CreateTile(tileName);

            _map.AddGround(obj.AddComponent <Ground>());
        }

        return(_map.GetSize() > 0);
    }
Esempio n. 21
0
        public EcsEntity?findFreeReachableItemBySelector(ItemSelector selector, Vector3Int position)
        {
            LocalMap map = GameModel.localMap;

            // get items and positions
            // TODO add items in containers
            return(GameModel.get().itemContainer.onMapItems.all
                   .Where(selector.checkItem)
                   .Where(item => map.passageMap.inSameArea(position, item.pos())) // filter reachability
                   .Aggregate((current, item) => current == null || (distanceToItem(item, position) < distanceToItem(current, position))
                    ? item
                    : current)); // select nearest
        }
Esempio n. 22
0
            private static bool Prefix(LocalMap __instance, PointerEventData eventData)
            {
                if (eventData.button == PointerEventData.InputButton.Left)
                {
                    if (IsShiftPressed)
                    {
                        CustomMapMarkers.CreateMarker(__instance, eventData);
                    }
                }

                // Don't pass the click through to the map if control or shift are pressed
                return(!(IsControlPressed || IsShiftPressed));
            }
        protected new bool validate()
        {
            LocalMap map = GameModel.localMap;

            if (item.hasPos())
            {
                Vector3Int itemPosition = item.pos();
                return(base.validate() &&
                       container.itemMap.ContainsKey(itemPosition) &&
                       container.itemMap[itemPosition].Contains(item) &&
                       map.passageMap.inSameArea(itemPosition, performer().pos()));
            }
            return(false);
        }
Esempio n. 24
0
        //get full world state from GenerationState or savefile
        public void setWorld(World world, EcsWorld ecsWorld)
        {
            this.world = world;
            _localMap  = world.localMap;
            _ecsWorld  = ecsWorld;
            // add units to container
            // TODO add generated wild animals
            EcsFilter filter = ecsWorld.GetFilter(typeof(EcsFilter <UnitJobsComponent>));

            foreach (var i in filter)
            {
                unitContainer.addNewPlayerUnit(filter.GetEntity(i));
            }
        }
Esempio n. 25
0
        private static ModMapMarker NewMarker(LocalMap map, PointerEventData eventData)
        {
            string areaName = Game.Instance.CurrentlyLoadedArea.AreaDisplayName;
            List <ModMapMarker> markersForArea;

            if (!AreaMarkers.TryGetValue(areaName, out markersForArea))
            {
                AreaMarkers[areaName] = new List <ModMapMarker>();
            }
            Vector3      position = GetPositionFromEvent(map, eventData);
            ModMapMarker marker   = new ModMapMarker(position);

            AreaMarkers[areaName].Add(marker);
            return(marker);
        }
Esempio n. 26
0
 public MapRenderer()
 {
     Console.Title         = "Wilderness";
     Console.CursorVisible = false;
     currentMap            = new LocalMap(10, 10,
                                          "####  ####" +
                                          "#  ####  #" +
                                          "#        #" +
                                          "##      ##" +
                                          " #      # " +
                                          " #      # " +
                                          "##      ##" +
                                          "#        #" +
                                          "#  ####  #" +
                                          "####  ####");
 }
        public void placeSelectorAtMapCenter()
        {
            LocalMap localMap = GameModel.localMap;

            selector.position.x = localMap.xSize / 2;
            selector.position.y = localMap.ySize / 2;
            Debug.Log("placing selector at " + selector.position.x + " " + selector.position.y);
            for (int z = localMap.zSize - 1; z >= 0; z--)
            {
                if (localMap.blockType.get(selector.position.x, selector.position.y, z) != BlockTypeEnum.SPACE.CODE)
                {
                    selector.position.z = z;
                    break;
                }
            }
        }
Esempio n. 28
0
        private void createTestLocalMap()
        {
            LocalMap localmap = GameModel.localMap;

            if (localmap != null)
            {
                return;
            }
            GenerationState state = GenerationState.get();

            state.worldGenConfig.size = 10;
            state.generateWorld();
            createTestSettler();
            createTestItem();
            state.localGenConfig.location = new IntVector2(5, 5);
            state.generateLocalMap();
        }
Esempio n. 29
0
        internal LocalDefinition DeclareLocal(
            ITypeReference type,
            object identity,
            string name,
            bool isCompilerGenerated,
            LocalSlotConstraints constraints,
            bool isDynamic,
            ImmutableArray <TypedConstant> dynamicTransformFlags)
        {
            LocalDefinition local;

            if ((name != null) || !FreeSlots.TryPop(new LocalSignature(type, constraints), out local))
            {
                local = this.DeclareLocalInternal(type, identity, name, isCompilerGenerated, constraints, isDynamic, dynamicTransformFlags);
            }

            LocalMap.Add(identity, local);
            return(local);
        }
Esempio n. 30
0
        public CILEmulator(MethodDef method, DynamicContext dynamicContext = null, IEnumerable <Value> parameterValues = null)
        {
            Method = method;

            if (!Method.HasBody)
            {
                throw new EmulationException($"Cannot create Emulator instance for method without body.");
            }

            if (!Method.IsIL)
            {
                throw new NotSupportedException();
            }

            _context       = new Context(this);
            DynamicContext = dynamicContext;

            ParameterMap = new ParameterMap(method.Parameters, parameterValues);
            LocalMap     = new LocalMap(method.Body.Variables);
        }
Esempio n. 31
0
        internal LocalDefinition DeclareLocal(
            Cci.ITypeReference type,
            ILocalSymbol symbol,
            string name,
            CommonSynthesizedLocalKind synthesizedKind,
            uint pdbAttributes,
            LocalSlotConstraints constraints,
            bool isDynamic,
            ImmutableArray <TypedConstant> dynamicTransformFlags)
        {
            LocalDefinition local;

            if ((name != null) || !FreeSlots.TryPop(new LocalSignature(type, constraints), out local))
            {
                local = this.DeclareLocalImpl(type, symbol, name, synthesizedKind, pdbAttributes, constraints, isDynamic, dynamicTransformFlags);
            }

            LocalMap.Add(symbol, local);
            return(local);
        }
Esempio n. 32
0
 /// <summary>
 /// Пытается загрузить локальные карты чанка из файла.
 /// </summary>
 /// <returns><c>true</c>, если карты загружены, иначе <c>false</c>.</returns>
 /// <param name="chunkY">Координата по y.</param>
 /// <param name="chunkX">Координата по pos.X.</param>
 bool TryLoadFiledChunkLocalMaps(int chunkY, int chunkX)
 {
     string filePath = Path.Combine(ChunksDirectoryPath, chunkY + "_" + chunkX + "lm");
     if (File.Exists(filePath))
     {
         using (SymBinaryReader reader = new SymBinaryReader(File.Open(filePath, FileMode.Open)))
         {
             for (ushort y = 0; y < ChunkSize; ++y)
                 for (ushort x = 0; x < ChunkSize; ++x)
                     if (reader.ReadString() == "null")
                         LocalMaps[y, x] = null;
                     else
                     {
                         LocalMaps[y, x] = new LocalMap(LocalMapSize.X, LocalMapSize.Y);
                         LocalMaps[y, x].Read(reader);
                     }
         }
         return true;
     }
     return false;
 }
Esempio n. 33
0
 void Awake()
 {
     Map = GameObject.FindWithTag("World/World").GetComponent<World>().CurrentMap as LocalMap;
     Animator = GetComponent<Animator>();
 }
Esempio n. 34
0
    public void RenderBluesHexes(LocalPos pos, byte distance, LocalMap map)
    {
        Debug.Assert(distance != 0);
        RenderedBlues.ForEach(hex => hex.InSign = false);

        for (byte i = 0; i < 6; ++i)
        {
            GlobalPos buf = HexNavigHelper.GetNeighborMapCoords(pos, (TurnedHexDirection)i);
            if (buf.X >= 0 && buf.Y >= 0 && buf.X < map.Width && buf.Y < map.Height && !map.IsBlocked((LocalPos)buf))
                BluesSignQueue.Enqueue(new QueueType { Pos = buf, Distance = (byte)(distance - 1) });
        }

        while (BluesSignQueue.Count != 0)
        {
            QueueType buf = BluesSignQueue.Dequeue();
            SpreadBlues((LocalPos)buf.Pos, buf.Distance, map);
        }

        for (ushort i = 0; i < RenderedBlues.Count; ++i)
            if (!RenderedBlues[i].InSign)
            {
                Destroy(RenderedBlues[i].Hex);
                RenderedBlues.RemoveAt(i);
                if (i != 0)
                    i--;
            }
    }
Esempio n. 35
0
    /// <summary>
    /// Выводит хексы карты на сцену.
    /// </summary>
    /// <param name="map">Карта.</param>
    public void RenderWholeMap(LocalMap map)
    {
        RenderedHexes.Capacity = map.Height * map.Width;

        for (ushort y = 0; y < map.Height; ++y)
            for (ushort x = 0; x < map.Width; ++x)
            {
                // TODO Возможно стоит заменить ListType на Hex?
                ListType hex = new ListType { Hex = new GameObject("hex"), InSign = true };
                hex.Hex.transform.position = GetTransformPosFromMapPos(new LocalPos(x, y));
                hex.Hex.transform.parent = transform;
                hex.Pos = new GlobalPos(x, y);
                hex.Hex.AddComponent<SpriteRenderer>();
                hex.Hex.AddComponent<Fader>();

                MakeHexGraphics(hex, new LocalPos(x, y), map);
                RenderedHexes.Add(hex);
            }
    }
Esempio n. 36
0
 public static void CreateVegetation(ref LocalMap map, LocalTerrainSettings terrainParam, float vegetationValue)
 {
     float?[,] forestMatrix = new float?[map.Height, map.Width];
     HeighmapNeighboring hmNb;
     hmNb.Left = new float[map.Height];
     hmNb.Top = new float[map.Width];
     hmNb.Right = new float[map.Height];
     hmNb.Bottom = new float[map.Width];
     for (ushort i = 0; i < map.Height; ++i)
         hmNb.Right[i] = hmNb.Left[i] = vegetationValue;
     for (ushort i = 0; i < map.Width; ++i)
         hmNb.Bottom[i] = hmNb.Top[i] = vegetationValue;
     CreateHeightmap(ref forestMatrix, 1, hmNb);//TODO
     for (ushort y = 0; y < map.Height; ++y)
         for (ushort x = 0; x < map.Width; ++x)
         {
             LocalTerrainSettings.Terrain terrain = terrainParam.GetTerrain(map.TerrainMatrix[y, x]);
             if (terrain.PlantProbability > 0 && forestMatrix[y, x] > 0 && Random.value < terrain.PlantProbability * forestMatrix[y, x])
             {
                 Entity plant = GameObject.Instantiate(terrain.Trees[Random.Range(0, terrain.Trees.Length)]);
                 plant.Pos = new U16Vec2(x, y);
                 map.AddObject(plant);
                 /*if (map.ForestMatrix[pos.Y, pos.X] < LocalMapParam.BushesForestValue)
                     plant.GetComponent<SpriteRenderer>().sprite = LocalMapParam.BushSprites[Random.Range(0, LocalMapParam.BushSprites.Length)];
                 else
                     plant.GetComponent<SpriteRenderer>().sprite = LocalMapParam.TreeSprites[Random.Range(0, LocalMapParam.TreeSprites.Length)];*/
             }
         }
 }
Esempio n. 37
0
    //TODO Временно
    public static void CreateLocalMap(ref LocalMap map, LocalTerrainSettings settings, HeighmapNeighboring hmNb, float landscapeRoughness, float forest)
    {
        float?[,] buf = new float?[map.Height, map.Width];

        WorldGenerator.CreateHeightmap(ref buf, landscapeRoughness, hmNb);

        float[,] buf2 = new float[map.Height, map.Width];
        for (ushort y = 0; y < map.Height; ++y)
            for (ushort x = 0; x < map.Width; ++x)
            {
                buf2[y, x] = buf[y, x].Value;
                buf[y, x] = null;
            }
        WorldGenerator.CreateTerrainmap(ref map.TerrainMatrix, buf2, settings);
        WorldGenerator.CreateVegetation(ref map, settings, forest);
    }
Esempio n. 38
0
    public void RenderWholeMapForEditor(LocalMap map)
    {
        RenderedHexes.Capacity = map.Height * map.Width;

        for (ushort y = 0; y < map.Height; ++y)
            for (ushort x = 0; x < map.Width; ++x)
            {
                // TODO Возможно стоит заменить ListType на Hex?
                ListType hex = new ListType { Hex = Instantiate(EditorHex.gameObject), InSign = true };
                hex.Hex.transform.position = GetTransformPosFromMapPos(new LocalPos(x, y));
                hex.Hex.transform.parent = transform;
                hex.Pos = hex.Hex.GetComponent<EditorHex>().Pos = new LocalPos(x, y);

                MakeHexGraphics(hex, new LocalPos(x, y), map);
                RenderedHexes.Add(hex);
            }
    }
Esempio n. 39
0
    /// <summary>
    /// Создаёт локальную карту.
    /// </summary>
    /// <param name="coords">Координаты новой карты на глобальной.</param>
    LocalMap CreateLocalMap(float height, float forest, bool river)
    {
        //if (river)
        //{
        //LocalPos[] riverPath = new LocalPos[] { new LocalPos(0, (ushort)(LocalMapSize.Y >> 1)), new LocalPos((ushort)(LocalMapSize.X - 1), (ushort)(LocalMapSize.Y >> 1)) }; //UNDONE
        //WorldGenerator.MakeEqualHeightLine(map.HeightMatrix, riverPath, Visualiser.LocalMapParam.Terrains[0].StartingHeight - 0.0001f); TODO
        // }

        WorldGenerator.HeighmapNeighboring hmNb;
        hmNb.Left = new float[LocalMapSize.Y];
        hmNb.Top = new float[LocalMapSize.X];
        hmNb.Right = new float[LocalMapSize.Y];
        hmNb.Bottom = new float[LocalMapSize.X];
        for (ushort i = 0; i < LocalMapSize.Y; ++i)
            hmNb.Right[i] = hmNb.Left[i] = height;
        for (ushort i = 0; i < LocalMapSize.X; ++i)
            hmNb.Bottom[i] = hmNb.Top[i] = height;

        LocalMap map = new LocalMap(LocalMapSize.X, LocalMapSize.Y);

        WorldGenerator.CreateLocalMap(ref map, LocalMapTerrainParam, hmNb, LandscapeRoughness, forest);

        return map;
    }
Esempio n. 40
0
    //UNDONE
    Sprite ChooseHexSprite(LocalPos pos, LocalMap map)
    {
        byte id = 0;
        for (byte i = 0; i < LocalMapParam.Terrains.Length; ++i)
            if ((map.TerrainMatrix[pos.Y, pos.X] & LocalMapParam.Terrains[i].TerrainType) != TerrainType.NONE)
            {
                for (byte j = 0; j < i; ++j, id += (byte)LocalMapParam.Terrains[j].Sprites.Length) ;
                id += (byte)Random.Range(0, LocalMapParam.Terrains[i].Sprites.Length);
            }

        map.HexSpriteID_Matrix[pos.Y, pos.X] = id;
        return AllLocalHexSprites[id];
    }
Esempio n. 41
0
    void SpreadBlues(LocalPos pos, byte distance, LocalMap map)
    {
        short index = (short)RenderedBlues.FindIndex(x => x.Hex.GetComponent<HexInteraction>().Pos == pos);
        if (index == -1)
            HighlightHex(pos);
        else
        {
            if (RenderedBlues[index].InSign)
                return;
            else
                RenderedBlues[index].InSign = true;
        }

        if (distance != 0)
        {
            for (byte i = 0; i < 6; ++i)
            {
                GlobalPos buf = HexNavigHelper.GetNeighborMapCoords(pos, (TurnedHexDirection)i);
                if (buf.X >= 0 && buf.Y >= 0 && buf.X < map.Width && buf.Y < map.Height && !map.IsBlocked((LocalPos)buf))
                    BluesSignQueue.Enqueue(new QueueType { Pos = buf, Distance = (byte)(distance - 1) });
            }
        }
    }
Esempio n. 42
0
    void MakeHexGraphics(ListType hex, LocalPos pos, LocalMap map)
    {
        if (map.HexSpriteID_Matrix[pos.Y, pos.X].HasValue /*?*/&& map.HexSpriteID_Matrix[pos.Y, pos.X] < AllLocalHexSprites.Count)
            hex.Hex.GetComponent<SpriteRenderer>().sprite = AllLocalHexSprites[map.HexSpriteID_Matrix[pos.Y, pos.X].Value];
        else
            hex.Hex.GetComponent<SpriteRenderer>().sprite = ChooseHexSprite(pos, map);
        hex.Hex.GetComponent<SpriteRenderer>().sortingLayerName = "Landscape";//
        if ((map.TerrainMatrix[pos.Y, pos.X] & TerrainType.WATER) != TerrainType.NONE)
            //float offsetbuf=(LocalHexSpriteSize.pos.X-LocalHexSpriteSize.y)/2;
            for (byte i = 0; i < 6; ++i) //TODO К оптимизации.
                if (map.Contains(HexNavigHelper.GetNeighborMapCoords(pos, (TurnedHexDirection)i)) && (map.TerrainMatrix[HexNavigHelper.GetNeighborMapCoords(pos, (TurnedHexDirection)i).Y, HexNavigHelper.GetNeighborMapCoords(pos, (TurnedHexDirection)i).X] & TerrainType.WATER) == TerrainType.NONE)
                {
                    GameObject bank = new GameObject("bankSprite");
                    bank.transform.position = hex.Hex.transform.position;
                    bank.transform.parent = hex.Hex.transform;
                    bank.AddComponent<SpriteRenderer>().sortingLayerName = "LandscapeObjects";
                    if ((TurnedHexDirection)i == TurnedHexDirection.LEFT || (TurnedHexDirection)i == TurnedHexDirection.RIGHT)
                    {
                        bank.GetComponent<SpriteRenderer>().sprite = LocalMapParam.BankSprites[Random.Range(0, LocalMapParam.BankSprites.Length)];
                        if ((TurnedHexDirection)i == TurnedHexDirection.RIGHT)
                            bank.transform.Rotate(0, 0, 180);
                    }
                    else
                    {
                        bank.GetComponent<SpriteRenderer>().sprite = LocalMapParam.DiagBankSprites[Random.Range(0, LocalMapParam.DiagBankSprites.Length)];
                        switch ((TurnedHexDirection)i)
                        {
                            case TurnedHexDirection.RIGHT_TOP: bank.transform.Rotate(0, 180, 0);
                                break;
                            case TurnedHexDirection.RIGHT_BOTTOM: bank.transform.Rotate(180, 180, 0);
                                break;
                            case TurnedHexDirection.LEFT_BOTTOM: bank.transform.Rotate(180, 0, 0);
                                break;
                        }

                    }
                    //float offset=((TurnedHexDirection)i==TurnedHexDirection.LEFT_TOP||(TurnedHexDirection)i==TurnedHexDirection.LEFT_BOTTOM)? -offsetbuf:offsetbuf;
                    //bank.transform.position = new Vector3(hex.Hex.transform.position.pos.X+offset,hex.Hex.transform.position.y,hex.Hex.transform.position.z);
                    //bank.transform.Rotate(0, 0, (short)(Mathf.Sign(mapCoords.y - HexNavigHelper.GetNeighborMapCoords(mapCoords, (TurnedHexDirection)i).y) * Vector2.Angle(Vector2.left,new Vector2(GetTransformPosFromMapPos(HexNavigHelper.GetNeighborMapCoords(mapCoords, (TurnedHexDirection)i), true).pos.X-offset,GetTransformPosFromMapPos(HexNavigHelper.GetNeighborMapCoords(mapCoords, (TurnedHexDirection)i), true).y) - (Vector2)bank.transform.position)));
                    bank.GetComponent<SpriteRenderer>().material = DiffuseMaterial;
                    bank.AddComponent<Fader>();
                }

        hex.Hex.GetComponent<Fader>().FadeIn(FadeInTime);
        for (ushort j = 0; j < hex.Hex.transform.childCount; ++j)
            hex.Hex.transform.GetChild(j).gameObject.GetComponent<Fader>().FadeIn(FadeInTime);
    }