private IE OnStart()
        {
            //初始化
            viewHistory = new LinkedList <MapViewData>();

            //开始加载地图
            yield return(new WaitTaskCompletedCoroutine(LoadMap()));

            //添加视图状态
            this.viewData = new MapViewData()
            {
                MapID  = mapData?.ID ?? -1,
                Portal = "sp"
            };

            if (this.mapData != null)
            {
                yield return(cm.Yield(OnSceneEnter()));
            }
            else
            {
                //添加提示语
                this.ui.ChatBox.AppendTextSystem("MapRender加载失败,没有地图数据。");
                this.opacity = 1;
                yield return(cm.Yield(OnSceneRunning()));
            }
        }
        private IE OnSwitchMap()
        {
            //记录历史
            if (this.viewData.MapID != this.viewData.ToMapID && this.viewData.ToMapID != null)
            {
                viewHistory.AddLast(this.viewData);
                var toViewData = new MapViewData()
                {
                    MapID  = this.viewData.ToMapID.Value,
                    Portal = this.viewData.ToPortal ?? "sp"
                };
                this.viewData = toViewData;
            }
            else
            {
                this.viewData.ToMapID  = null;
                this.viewData.Portal   = this.viewData.ToPortal;
                this.viewData.ToPortal = null;
            }

            yield return(new WaitTaskCompletedCoroutine(LoadMap()));

            if (this.mapData != null)
            {
                yield return(cm.Yield(OnSceneEnter()));
            }
        }
Ejemplo n.º 3
0
    public void SetupVisuals(MapViewData mapViewData, MapCreator mapCreator)
    {
        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {
                mapCreator.CreateCombatMapSprite(transform, x, y);
            }
        }

        visualsParent.transform.position += new Vector3(0, 0, -200);
    }
Ejemplo n.º 4
0
        protected override void InitializeInner()
        {
            _effect = DeviceContextHolder.GetEffect <EffectSpecialTrackOutline>();

            _maps = _mapFilenames.Select((x, i) => {
                var data = new MapViewData(DeviceContextHolder, x, UseAiLanes);
                if (i == 0)
                {
                    Scale *= (data.MapSize.X / data.MapSize.Y).Clamp(1f, 2f);
                }

                return(data);
            }).ToArray();

            if (LoadPreview)
            {
                if (File.Exists(_previewFilename))
                {
                    using (var preview = Texture2D.FromFile(Device, _previewFilename)) {
                        _previewSize = new Vector2(preview.Description.Width, preview.Description.Height);
                        _previewView = new ShaderResourceView(Device, preview);
                    }
                }
                else
                {
                    AcToolsLogging.Write("Not found: " + _previewFilename);
                }
            }

            _f0Buffer     = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm);
            _f1Buffer     = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm);
            _fBlendBuffer = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm);
            _fSummBuffer  = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm);
            _a0Buffer     = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm);
            _a1Buffer     = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm);
            _aSummBuffer  = TargetResourceTexture.Create(Format.R8G8B8A8_UNorm);

            _combineBlendState = Device.CreateBlendState(new RenderTargetBlendDescription {
                BlendEnable           = true,
                SourceBlend           = BlendOption.SourceAlpha,
                DestinationBlend      = BlendOption.InverseSourceAlpha,
                BlendOperation        = BlendOperation.Add,
                SourceBlendAlpha      = BlendOption.One,
                DestinationBlendAlpha = BlendOption.One,
                BlendOperationAlpha   = BlendOperation.Maximum,
                RenderTargetWriteMask = ColorWriteMaskFlags.All
            });
        }
        private IE OnStart()
        {
            //初始化
            viewHistory = new LinkedList <MapViewData>();

            //开始加载地图
            yield return(new WaitTaskCompletedCoroutine(LoadMap()));

            if (this.mapData != null)
            {
                //添加视图状态
                viewData = new MapViewData()
                {
                    MapID  = mapData?.ID ?? -1,
                    Portal = "sp"
                };
                yield return(cm.Yield(OnSceneEnter()));
            }
        }
Ejemplo n.º 6
0
    public Task <BotDetailedViewModel> method_3(int int_0, bool bool_0)
    {
        MapViewData          spacemap             = GClass891.smethod_24(this.Context, bool_0 | this.Context.Map.MapId != int_0);
        BotSummaryViewModel  summary              = new BotSummaryViewModel(this.Context.Hero, this.Context.Stats, this.Context.Stats.RunTime);
        BotDetailedViewModel botDetailedViewModel = new BotDetailedViewModel();

        botDetailedViewModel.Spacemap = spacemap;
        GClass890 context = this.Context;
        string    botId;

        if (context == null)
        {
            botId = null;
        }
        else
        {
            AccountSettings account = context.Account;
            botId = ((account != null) ? account.BotId : null);
        }
        botDetailedViewModel.BotId   = botId;
        botDetailedViewModel.Summary = summary;
        return(Task.FromResult <BotDetailedViewModel>(botDetailedViewModel));
    }
Ejemplo n.º 7
0
        private void DrawMap(MapViewData map, MapViewData max, Matrix global)
        {
            // is the main map?
            var isMain = FileUtils.ArePathsEqual(map.Filename, CurrentMapFilename);

            // reset states
            DeviceContext.OutputMerger.BlendState = null;
            DeviceContext.Rasterizer.SetViewports(Viewport);

            // clear buffers just in case
            DeviceContext.ClearRenderTargetView(_f0Buffer.TargetView, new Color4(0f, 0f, 0f, 0f));
            DeviceContext.ClearRenderTargetView(_f1Buffer.TargetView, new Color4(0f, 0f, 0f, 0f));
            DeviceContext.ClearRenderTargetView(_a0Buffer.TargetView, new Color4(0f, 0f, 0f, 0f));
            DeviceContext.ClearRenderTargetView(_a1Buffer.TargetView, new Color4(0f, 0f, 0f, 0f));

            // set width to ai lanes
            if (UseAiLanes)
            {
                map.AiLaneWidth = 25f * ((isMain ? ExtraWidth : ExtraWidth * DimmedWidthMultipler) * 0.7f + 0.15f);
            }

            // draw map
            DeviceContext.OutputMerger.SetTargets(_f0Buffer.TargetView);
            map.Draw(DeviceContextHolder, _effect, global, max);

            // pp
            var current = _f0Buffer;

            // expand its width if needed
            if (!UseAiLanes)
            {
                var extraWidth = isMain ? ExtraWidth : ExtraWidth * DimmedWidthMultipler;
                for (var i = 0; i < extraWidth; i++)
                {
                    var next = current == _f0Buffer ? _f1Buffer : _f0Buffer;
                    DeviceContext.OutputMerger.SetTargets(next.TargetView);
                    _effect.FxInputMap.SetResource(current.View);

                    if (i < extraWidth - 1)
                    {
                        _effect.FxExtraWidth.Set(3f);
                    }
                    else
                    {
                        var last = extraWidth % 1f;
                        _effect.FxExtraWidth.Set(last < 0.0001f ? 3f : last * 3f);
                    }

                    _effect.TechExtraWidth.DrawAllPasses(DeviceContext, 6);
                    current = next;
                }
            }

            // fxaa if needed
            if (UseFxaa)
            {
                var next = current == _f0Buffer ? _f1Buffer : _f0Buffer;
                DeviceContextHolder.GetHelper <FxaaHelper>().Draw(DeviceContextHolder, current.View, next.TargetView);
                current = next;
            }

            // shadow if needed
            if (ShadowDistance > 0f && ShadowOpacity > 0f)
            {
                var next = current == _f0Buffer ? _f1Buffer : _f0Buffer;
                DeviceContext.OutputMerger.SetTargets(next.TargetView);
                _effect.FxInputMap.SetResource(current.View);
                _effect.TechShadow.DrawAllPasses(DeviceContext, 6);
                CustomBlending(_aSummBuffer, next, _a1Buffer, new Color4((isMain ? 1f : DimmedOpacity) * ShadowOpacity, 0f, 0f, 0f));
            }

            CustomBlending(_aSummBuffer, current, _a1Buffer, new Color4(isMain ? 1f : DimmedOpacity, 1f, 1f, 1f));
        }
Ejemplo n.º 8
0
            public void Draw(DeviceContextHolder holder, EffectSpecialTrackOutline effect, Matrix mapMatrix, MapViewData max)
            {
                if (_dirty)
                {
                    Initialize(holder);
                }

                if (AiLaneMode)
                {
                    Kn5MaterialTrackOutline.Matrix = mapMatrix;

                    if (!_materialsSet)
                    {
                        _materialsSet = true;
                        if (holder.TryToGet <IMaterialsFactory>() == null)
                        {
                            holder.Set <IMaterialsFactory>(new TrackOutlineMaterialsFactory());
                        }
                    }

                    _obj.Draw(holder, max?.GetCamera(holder) ?? GetCamera(holder), SpecialRenderMode.Simple);

                    // revert quad
                    holder.PrepareQuad(effect.LayoutPT);
                }
                else
                {
                    // local transformation matrix: global×local offset (calculated from map.ini)×local scale
                    var localScale = Matrix.Transformation2D(Vector2.Zero, 0f,
                                                             new Vector2(max.DataSize.X / DataSize.X, max.DataSize.Y / DataSize.Y) / DataScale,
                                                             Vector2.Zero, 0f, Vector2.Zero);
                    var localOffset = Matrix.AffineTransformation2D(1f, Vector2.Zero, 0f, new Vector2(
                                                                        (DataOffset.X - max.DataOffset.X) / max.DataSize.X,
                                                                        (DataOffset.Y - max.DataOffset.Y) / max.DataSize.Y));
                    effect.FxMatrix.SetMatrix(mapMatrix * localOffset * localScale);
                    effect.FxInputMap.SetResource(_view);
                    effect.TechFirstStep.DrawAllPasses(holder.DeviceContext, 6);
                }
            }
Ejemplo n.º 9
0
    public static MapViewData smethod_24(GClass839 gclass839_0, bool bool_0)
    {
        Map         map         = gclass839_0.Map;
        MapViewData mapViewData = new MapViewData();

        mapViewData.Background = GClass840.smethod_0(Color.Black);
        mapViewData.MapId      = map.MapId;
        List <EntityDataRoot> entities = mapViewData.Entities;

        entities.Add(GClass840.smethod_17(map));
        if (bool_0)
        {
            List <EntityDataRoot> list = mapViewData.CachableEntities = new List <EntityDataRoot>();
            mapViewData.IncludesCache = true;
            foreach (KeyValuePair <string, ICollidable> keyValuePair in map.Collidables)
            {
                CollidableRect collidableRect = keyValuePair.Value as CollidableRect;
                if (collidableRect != null && collidableRect.imethod_0(map) != CollidableType.None)
                {
                    list.Add(GClass840.smethod_22(map, collidableRect));
                }
            }
            foreach (KeyValuePair <int, Asset> keyValuePair2 in map.Assets)
            {
                list.Add(GClass840.smethod_23(map, keyValuePair2.Value));
            }
        }
        foreach (KeyValuePair <int, Gate> keyValuePair3 in map.Gates)
        {
            entities.Add(GClass840.smethod_14(map, keyValuePair3.Value));
        }
        foreach (KeyValuePair <string, Collectible> keyValuePair4 in map.Collectibles)
        {
            entities.Add(GClass840.smethod_13(map, keyValuePair4.Value));
        }
        Ship selectedShip = map.SelectedShip;

        foreach (KeyValuePair <int, Ship> keyValuePair5 in map.Ships)
        {
            if (keyValuePair5.Value != selectedShip)
            {
                entities.Add(GClass840.smethod_12(gclass839_0, map, keyValuePair5.Value));
            }
        }
        if (selectedShip != null)
        {
            entities.Add(GClass840.smethod_12(gclass839_0, map, selectedShip));
        }
        entities.Add(GClass840.smethod_21(map));
        EntityDataRoot entityDataRoot = GClass840.smethod_18(gclass839_0, map);

        if (entityDataRoot != null)
        {
            entities.Add(entityDataRoot);
        }
        entities.Add(GClass840.smethod_20(map, map.Hero));
        if (selectedShip != null)
        {
            entities.Add(GClass840.smethod_20(map, selectedShip));
        }
        entities.Add(GClass840.smethod_19(gclass839_0));
        return(mapViewData);
    }