Пример #1
0
        private void treeView1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (treeView1.SelectedNode == treeView1.GetNodeAt(e.Location))
                {
                    if (treeView1.SelectedNode.Nodes.Count == 0)
                    {
                        treeView1.LabelEdit = true;
                        treeView1.SelectedNode.BeginEdit();
                    }
                }
            }
            else if (e.Button == MouseButtons.Right)
            {
                if (treeView1.SelectedNode == treeView1.GetNodeAt(e.Location))
                {
                    contextMenuNode          = treeView1.GetNodeAt(e.Location);
                    lastClickedNodeMapEntity = null;
                    if (contextMenuNode == null)
                    {
                        return;
                    }
                    //   if (contextMenuNode.Text.CompareTo("Variables") == 0)
                    //   {

                    //   }
                    //   else
                    //  {
                    findClickedNodeMapEntity_r(contextMenuNode);
                    contextMenuStrip1.Show(PointToScreen(e.Location));
                    //  }
                }
            }
        }
        public async Task <ActionResult> Create(MapEntity model)
        {
            if (!ModelState.IsValid)
            {
                return(this.View(model));
            }

            model.PartitionKey = MapEntity.MainKey;
            model.RowKey       = ShortGuid.NewGuid().Value;

            try
            {
                // upload image to blob storage.
                model.ImageAddress = await UploadImageToStorage(model.RowKey, model.ImageAddress);

                await TableStorage.Insert(model);
            }
            catch (StorageException error)
            {
                Task.Run(() => RavenClient.CaptureException(error));

                ViewBag.Alerts = new List <AlertModel> {
                    new AlertModel(AlertType.Danger, error.Message)
                };

                return(this.View(model));
            }

            this.TempData["Alerts"] = AlertModel.CreateSingle(AlertType.Success, string.Format("{0} by {1} was created.", model.Title, model.Author));

            this.TempData["Highlight"] = new HighlightModel(AlertType.Success, model.PartitionKey, model.RowKey);

            return(this.RedirectToAction("Index"));
        }
Пример #3
0
        public void ClientRead(ServerNetObject type, NetBuffer msg, float sendingTime)
        {
            foreach (Connection connection in Connections)
            {
                connection.ClearConnections();
                int wireCount = msg.ReadRangedInteger(0, Connection.MaxLinked);
                for (int i = 0; i < wireCount; i++)
                {
                    ushort wireId = msg.ReadUInt16();

                    Item wireItem = MapEntity.FindEntityByID(wireId) as Item;
                    if (wireItem == null)
                    {
                        continue;
                    }

                    Wire wireComponent = wireItem.GetComponent <Wire>();
                    if (wireComponent == null)
                    {
                        continue;
                    }

                    connection.Wires[i] = wireComponent;
                    wireComponent.Connect(connection, false);
                }
            }
        }
Пример #4
0
        public async Task <ActionResult> Edit(string row, MapEntity model)
        {
            if (string.IsNullOrEmpty(model.FeaturedDate))
            {
                ModelState.AddModelError("FeaturedDate", "A featured date is required.");
            }

            if (!ModelState.IsValid)
            {
                return(this.View(model));
            }

            try
            {
                await TableStorage.Replace(model);
            }
            catch (StorageException error)
            {
                Task.Run(() => RavenClient.CaptureException(error));

                return(this.AzureStorageErrorResponse(row, MapEntity.FeaturedKey, error));
            }

            string alertMessage = string.Format("The featured map for {0} was updated.", model.FeaturedDate);

            this.TempData["Alerts"] = AlertModel.CreateSingle(AlertType.Success, alertMessage);

            this.TempData["Highlight"] = new HighlightModel(AlertType.Info, model.PartitionKey, model.RowKey);

            return(this.RedirectToAction("Index"));
        }
Пример #5
0
        private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            if (e.Label == null)
            {
                return;
            }
            KeyValuesList kvList = (KeyValuesList)e.Node.Tag;

            // changing key-value of the entity
            if (kvList != null)
            {
                string keyName = e.Node.Parent.Text;
                kvList.setKeyValue(keyName, e.Label);
                // fix the classname display at entity node
                if (keyName.CompareTo("classname") == 0)
                {
                    TreeNode  nodeKeyValues = e.Node.Parent.Parent;
                    TreeNode  nodeEntity    = nodeKeyValues.Parent;
                    MapEntity mapEntity     = (MapEntity)nodeEntity.Tag;
                    if (mapEntity != null)
                    {
                        nodeEntity.Text = ("Entity " + mapEntity.getIndex() + " (" + mapEntity.getClassName() + ")");
                    }
                }
            }
            MapBrushBase brushBase = (MapBrushBase)e.Node.Tag;

            // changing the material name of brushside
            if (brushBase != null)
            {
                // TODO
            }
        }
Пример #6
0
 internal void RegisterEntity(MapEntity mapEntity)
 {
     if (EntityHash.Add(mapEntity))
     {
         ActiveEntity.Add(mapEntity);
     }
 }
    [SerializeField] private int level = 0;     // Manually set in inspector

    public void ChooseEntity(MapEntity entity)
    {
        this.entity?.DeslotEntity();
        this.entity = entity;
        this.entity.SlotEntity();
        monsterElement = this.entity.element;
    }
Пример #8
0
 public static void SeedMap(Graphics g)
 {
     for (int i = 0; i < mapWidth; i++)
     {
         for (int j = 0; j < mapHeight; j++)
         {
             if (map[i, j] == 10)
             {
                 g.DrawImage(spriteSheet, new Rectangle(new Point(j * cellSize, i * cellSize), new Size(cellSize * 3, cellSize * 3)), 202, 298, 107, 114, GraphicsUnit.Pixel);
                 MapEntity mapEntity = new MapEntity(new Point(j * cellSize, i * cellSize), new Size(cellSize * 3, cellSize * 3));
                 mapObjects.Add(mapEntity);
             }
             if (map[i, j] == 11)
             {
                 g.DrawImage(spriteSheet, new Rectangle(new Point(j * cellSize, i * cellSize), new Size(20, 12)), 581, 114, 19, 11, GraphicsUnit.Pixel);
                 MapEntity mapEntity = new MapEntity(new Point(j * cellSize, i * cellSize), new Size(20, 12));
                 mapObjects.Add(mapEntity);
             }
             if (map[i, j] == 12)
             {
                 g.DrawImage(spriteSheet, new Rectangle(new Point(j * cellSize, i * cellSize), new Size(20, 18)), 453, 225, 18, 22, GraphicsUnit.Pixel);
                 MapEntity mapEntity = new MapEntity(new Point(j * cellSize, i * cellSize), new Size(20, 18));
                 mapObjects.Add(mapEntity);
             }
         }
     }
 }
Пример #9
0
    /// <summary>
    /// 指定した足場に接する位置までの距離を返す
    /// </summary>
    /// <returns>指定した足場に接する位置までの距離(Y座標上方向の距離)</returns>
    /// <param name="aEntity">Entity</param>
    /// <param name="aScaffold">足場</param>
    private static float getCorrectDistanceToScaffold(MapEntity aEntity, Collider aScaffold)
    {
        Collider tEntityCollider = aEntity.mEntityPhysicsBehaviour.mScaffoldRigideCollider;

        //上方向に移動させて離せる距離
        ColliderEditer.CubeEndPoint tEntityEnd = tEntityCollider.minimumCircumscribedCubeEndPoint();
        ColliderEditer.CubeEndPoint tHitEnd    = aScaffold.minimumCircumscribedCubeEndPointWorld();
        float tUpperDistance = (tHitEnd.top) - (tEntityCollider.transform.position.y + tEntityEnd.bottom);

        //cast
        RaycastHit[] tHits = scaffoldRigideCast(aEntity, tUpperDistance + kDelta, tHitEnd.top - tHitEnd.bottom + kDelta);
        //指定されたscaffoldのHitを探す
        for (int i = 0; i < tHits.Length; ++i)
        {
            RaycastHit  tHit      = tHits[i];
            MapScaffold tScaffold = tHit.collider.gameObject.GetComponent <MapScaffold>();
            if (tScaffold == null)
            {
                continue;
            }
            if (tHit.collider != aScaffold)
            {
                continue;
            }
            return(tUpperDistance - tHit.distance + kDelta);
        }
        //return tUpperDistance - (tHitEnd.top - tHitEnd.bottom);
        throw new System.Exception("MapHeightUpdateSystem : 衝突するはずの足場と衝突できなかった");
    }
Пример #10
0
 internal void UnRegisterEntity(MapEntity mapEntity)
 {
     if (EntityHash.Remove(mapEntity))
     {
         ActiveEntity.Remove(mapEntity);
     }
 }
Пример #11
0
        public void Paste()
        {
            if (this.Initialized)
            {
                MemoryStream stream = null;
                IDataObject  obj    = Clipboard.GetDataObject();
                const string format = "aeon_entities";

                if (obj.GetDataPresent(format))
                {
                    stream = obj.GetData(format) as MemoryStream;
                }

                EntitySelectionTool.Instance.SelectedEntities.Clear();
                BinaryInput bin = new BinaryInput(stream);

                int c = bin.ReadInt32();
                for (int i = 0; i < c; i++)
                {
                    int temp_index = bin.ReadInt32();
                    int x          = (int)bin.ReadSingle() >> 4;
                    int y          = (int)bin.ReadSingle() >> 4;

                    AddEntityAction act = new AddEntityAction(EditorEngine.Instance.World.EntityContainer.All()[temp_index], new Vector2(x, y));
                    EditorEngine.Instance.GetActionManager().Execute(act);

                    MapEntity result = act.worldEntity;
                    EntitySelectionTool.Instance.SelectedEntities.Add(result);
                }
            }
        }
    /// <summary>衝突しているtriggerを取得</summary>
    static private List <MapTrigger> getCollidedTriggers(MapEntity aEntity)
    {
        RaycastHit[] tHits = new RaycastHit[0];
        //衝突しているcollider取得
        switch (aEntity.mEntityPhysicsBehaviour.mAttriubteCollider)
        {
        case BoxCollider box:
            tHits = Physics.BoxCastAll(box.gameObject.transform.position + box.center, box.size / 2f, new Vector3(0, 1, 0), box.transform.rotation, 0);
            break;

        case SphereCollider sphere:
            tHits = Physics.SphereCastAll(sphere.transform.position + sphere.center, sphere.radius, Vector3.zero);
            break;
        }
        //triggerを取得
        List <MapTrigger> tTriggers = new List <MapTrigger>();
        MapTrigger        tTrigger;

        foreach (RaycastHit tHit in tHits)
        {
            tTrigger = tHit.collider.gameObject.GetComponent <MapTrigger>();
            if (tTrigger == null)
            {
                continue;
            }
            tTriggers.Add(tTrigger);
        }
        return(tTriggers);
    }
Пример #13
0
    /// <summary>
    /// ScaffoldRigideのcastを飛ばす
    /// </summary>
    /// <returns>cast結果</returns>
    /// <param name="aEntity">A entity.</param>
    /// <param name="aHeightOffset">entityからcastの起点までの高さ(castの起点が上なら正)</param>
    /// <param name="aDistance">castする距離</param>
    public static RaycastHit[] scaffoldRigideCast(MapEntity aEntity, float aHeightOffset, float aDistance)
    {
        RaycastHit[] tCast = new RaycastHit[0];
        switch (aEntity.mEntityPhysicsBehaviour.mScaffoldRigideCollider)
        {
        case BoxCollider box:
            tCast = Physics.BoxCastAll(box.gameObject.transform.position + box.center + new Vector3(0, aHeightOffset, 0), box.size / 2f, new Vector3(0, -1, 0), new Quaternion(0, 0, 0, 1), aDistance);
            break;

        case SphereCollider sphere:
            tCast = Physics.SphereCastAll(sphere.gameObject.transform.position + sphere.center + new Vector3(0, aHeightOffset, 0), sphere.radius, new Vector3(0, -1, 0), aDistance);
            break;

        default:
            throw new System.Exception("MapHeightUpdateSystem : 未定義のcast「" + aEntity.mEntityPhysicsBehaviour.mScaffoldRigideCollider.GetType() + "」");
        }
        if (tCast.Length < 2)
        {
            return(tCast);
        }
        //衝突距離昇順にソート
        Array.Sort(tCast, (x, y) => {
            if (x.distance >= y.distance)
            {
                return(1);
            }
            else
            {
                return(-1);
            }
        });
        return(tCast);
    }
Пример #14
0
        void PopulateCreateMenu()
        {
            createToolStripMenuItem.Enabled = true;

            var types = Misc.GetAllSubclassesOf(typeof(EntityFactory), false);



            foreach (var factType in types)
            {
                var item = new ToolStripMenuItem();

                item.Text = factType.Name;

                item.Click += (s, e) => {
                    var fact = new MapEntity();

                    var mapEditor = Game.GameEditor.Instance as MapEditor;

                    fact.Factory = (EntityFactory)Activator.CreateInstance(factType);

                    mapEditor.Map.Nodes.Add(fact);
                    mapEditor.Select(fact);
                };

                createToolStripMenuItem.DropDownItems.Add(item);
            }
        }
        public void ConnectLinked()
        {
            if (wireId == null)
            {
                return;
            }

            for (int i = 0; i < MaxLinked; i++)
            {
                if (wireId[i] == 0)
                {
                    continue;
                }

                Item wireItem = MapEntity.FindEntityByID(wireId[i]) as Item;

                if (wireItem == null)
                {
                    continue;
                }
                Wires[i] = wireItem.GetComponent <Wire>();

                if (Wires[i] != null)
                {
                    if (Wires[i].Item.body != null)
                    {
                        Wires[i].Item.body.Enabled = false;
                    }
                    Wires[i].Connect(this, false, false);
                }
            }
        }
Пример #16
0
        public MapEntity CreateEntity(IRegionEntityFactory factory, IResourceContainer resources, bool scrollAffected)
        {
            MapEntity result = null;

            switch (EntityType)
            {
            case EntityType.None:
                result = new MapEntity(factory, scrollAffected);
                break;

            case EntityType.Building:
                result = new BuildingEntity(factory, scrollAffected);
                break;

            case EntityType.Player:
                result = new PlayerEntity(factory, scrollAffected);
                break;

            case EntityType.Npc:
                result = new NPCEntity(factory, scrollAffected);
                break;

            case EntityType.Door:
                //result = new EntityDoor();
                break;
            }

            if (result != null)
            {
                result.TemplateID = this.ID;
            }
            return(result);
        }
Пример #17
0
        public void DeathAction(MapEntity me)
        {
            float         mosthated  = 0;
            Actor         mosthateda = null;
            List <Player> players    = new List <Player>();

            foreach (Actor a in HateList.Keys)
            {
                if (HateList[a] > mosthated)
                {
                    mosthated  = HateList[a];
                    mosthateda = a;
                }
                if (a is Player p)
                {
                    players.Add(p);
                }
            }
            foreach (Player p in players)
            {
                if (p == mosthateda)
                {
                    p.GiveExp(EXPDrop);
                }
                else
                {
                    p.GiveExp((int)(Math.Round((float)EXPDrop / 2f)));
                }
            }
        }
Пример #18
0
        public Map CreateMap(World world)
        {
            Map result = new Map(world.EntityFactory, Name, Author, Width, Height);

            result.Tilesets = this.Tilesets;
            foreach (MockupTileset tileset in result.Tilesets)
            {
                tileset.world = world;
            }
            result.Tiles = Tiles;

            for (int i = 0; i < result.Width; i++)
            {
                for (int j = 0; j < result.Height; j++)
                {
                    for (int k = 0; k < Map.LayerCount; k++)
                    {
                        Tiles[i][j][k].map = result;
                    }
                }
            }

            foreach (Tuple <Int32, Vector2> token in Entities)
            {
                MapEntity e = world.EntityContainer.Get(token.Item1).CreateEntity(world.EntityFactory);
                e.Position = token.Item2;
                result.Entities.Add(e);
            }
            return(result);
        }
Пример #19
0
        private MapEntity[,] ObtainEntitiesFromLayer(string objectGroupName)
        {
            MapEntity[,] entityGrid = new MapEntity[tmxMap.Width, tmxMap.Height];

            //Handle the Entities Layer
            foreach (TmxObject currentObject in tmxMap.ObjectGroups[objectGroupName].Objects)
            {
                for (int row = 0; row < tmxMap.Height; row++)
                {
                    for (int col = 0; col < tmxMap.Width; col++)
                    {
                        //NOTE: For some reason, ObjectLayer objects in Tiled measure Y-axis from the bottom of the tile.c Compensate in the calculation here.
                        if ((col * GameDriver.CellSize) == (int)currentObject.X &&
                            (row * GameDriver.CellSize) == ((int)currentObject.Y - GameDriver.CellSize))
                        {
                            int objectTileId = currentObject.Tile.Gid;
                            if (objectTileId != 0)
                            {
                                Dictionary <string, string> currentProperties =
                                    GetDefaultPropertiesAndOverrides(currentObject);
                                TileCell tileCell = new TileCell(mapSprite, GameDriver.CellSize, objectTileId);

                                entityGrid[col, row] = new MapEntity(currentObject.Name, currentObject.Type, tileCell,
                                                                     new Vector2(col, row), currentProperties);
                            }
                        }
                    }
                }
            }

            return(entityGrid);
        }
Пример #20
0
        private void copyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (contextMenuNode == null)
            {
                return;
            }
            // allow user to copy entire entity (along with key valeus and brushes)
            MapEntity entity = contextMenuNode.Tag as MapEntity;

            if (entity != null)
            {
                Clipboard.SetText(entity.ToString());
                return;
            }
            // allow user to copy single brushdef block
            MapBrushBase brush = contextMenuNode.Tag as MapBrushBase;

            if (brush != null)
            {
                Clipboard.SetText(brush.ToString());
                return;
            }
            // allow user to copy single keyvalues list
            KeyValuesList epairs = contextMenuNode.Tag as KeyValuesList;

            if (epairs != null)
            {
                Clipboard.SetText(epairs.ToString());
                return;
            }
        }
Пример #21
0
 public void Reset()
 {
     this.Location = Vector2.Zero;
     this.Scale    = 1f;
     this.Rotation = 0f;
     FocusEntity   = null;
 }
Пример #22
0
 public void Update(Microsoft.Xna.Framework.GameTime time)
 {
     for (int i = 0; i < Entities.Count; i++)
     {
         MapEntity e = Entities[i];
         e.Update(time);
     }
 }
Пример #23
0
 /// <summary>
 /// 加载当前场景
 /// </summary>
 public void LoadCurrentMap(string mapName)
 {
     currentMap = GetMapByName(mapName);
     if (currentMap == null)
     {
         Debug.LogError(mapName + "对应的mapEntity为空");
     }
 }
Пример #24
0
    /// <summary>
    /// 足場までの距離を返す(負の値の場合は上方向の距離を示す)
    /// </summary>
    /// <returns>足場までの距離</returns>
    /// <param name="aEntity">A entity.</param>
    public static float getDistanceToScaffold(MapEntity aEntity)
    {
        RaycastHit[] tHits = scaffoldRigideCast(aEntity, kDelta, 2f + kDelta);
        //最寄りの足場を探す
        MapScaffold tScaffold = null;
        RaycastHit  tHit;
        Collider    tScaffoldCollider = null;

        for (int i = 0; i < tHits.Length; ++i)
        {
            tHit      = tHits[i];
            tScaffold = tHit.collider.gameObject.GetComponent <MapScaffold>();
            if (tScaffold == null)
            {
                continue;
            }
            if (tHit.distance > 0)
            {
                return(tHit.distance - kDelta);
            }
            else
            {
                //足場と衝突している場合
                tScaffoldCollider = tHit.collider;
                break;
            }
        }
        if (tScaffold == null)
        {
            Debug.LogWarning("MapHeightUpdateSystem : 足場がない");
            return(0);
        }
        //足場と衝突している場合
        float tUpperDistance = 0;

        for (; ;)
        {
            if (tScaffold == null)
            {
                break;
            }
            //上方向に移動して離せる距離
            tUpperDistance = getCorrectDistanceToScaffold(aEntity, tScaffoldCollider);
            //移動した結果他の足場に衝突しないか確認
            tHits     = scaffoldRigideCast(aEntity, tUpperDistance + kDelta, 0);
            tScaffold = null;
            foreach (RaycastHit tCastHit in tHits)
            {
                tScaffold = tCastHit.collider.GetComponent <MapScaffold>();
                if (tScaffold != null)  //他の足場に衝突した
                {
                    tScaffoldCollider = tCastHit.collider;
                    break;
                }
            }
        }
        return(-tUpperDistance);
    }
Пример #25
0
        public void AddSight(MapEntity entity)
        {
            var tile = _map.GetTile((entity.x, entity.y));

            foreach (var nearTile in tile.GetAOE(entity.LineOfSight))
            {
                nearTile.VisibleTo.Add(entity.Controller);
            }
        }
Пример #26
0
    public override void Dispose()
    {
        _options.Clear();
        _options = null;

        _currentOption = null;
        _mapEntity = null;

        base.Dispose();
    }
Пример #27
0
 public GameUnit(string id, Team unitTeam, UnitClass unitJobClass, MapEntity mapInfo, UnitStatistics stats,
                 ITexture2D fullPortrait, ITexture2D mediumPortrait, ITexture2D smallPortrait) : base(id, mapInfo)
 {
     this.unitTeam       = unitTeam;
     this.unitJobClass   = unitJobClass;
     this.stats          = stats;
     this.fullPortrait   = fullPortrait;
     this.mediumPortrait = mediumPortrait;
     this.smallPortrait  = smallPortrait;
 }
        public static void Run([ServiceBusTrigger("management", Connection = "AzureWebJobsServiceBus")] string message)
        {
            using (var context = new DatabaseContext())
            {
                var entity = new MapEntity();
                context.TicketDetails.Add(entity.MapTicketDetailsEntity(message));

                context.SaveChanges();
            }
        }
Пример #29
0
    public override void Dispose()
    {
        _options.Clear();
        _options = null;

        _currentOption = null;
        _mapEntity     = null;

        base.Dispose();
    }
Пример #30
0
        public HauntedHouseGame()
        {
            MapEntity mapEntityGhost = new MapEntity
            {
                Description        = "Ghost",
                Icon               = null,
                DisplayText        = "G",
                ScoringWeight      = -100,
                DistributionWeight = 1,
            };
            MapEntity mapEntityZombie = new MapEntity
            {
                Description        = "Zombie",
                Icon               = null,
                DisplayText        = "Z",
                ScoringWeight      = -10,
                DistributionWeight = 3,
            };
            MapEntity mapEntityWeapon = new MapEntity
            {
                Description        = "Weapon",
                Icon               = null,
                DisplayText        = "X",
                ScoringWeight      = 0,
                DistributionWeight = 2
            };
            MapEntity mapEntityExit = new MapEntity
            {
                Description   = "Exit",
                Icon          = null,
                DisplayText   = "Ex",
                ScoringWeight = 0,
                Multiplicity  = MapEntityMultiplicity.Single
            };
            MapEntity mapEntityWall = new MapEntity
            {
                Description         = "Wall",
                Icon                = null,
                DisplayText         = "W",
                ScoringWeight       = 0,
                DistributionWeight  = 1,
                IsMoveAllowedOnThis = false
            };


            Columns     = 5;
            GameTitle   = "Haunted House";
            Rows        = 5;
            MaxScore    = 100;
            MoveScore   = -5;
            MapEntities = new List <IMapEntity> {
                mapEntityGhost, mapEntityWall, mapEntityExit, mapEntityWeapon, mapEntityZombie
            };
            MoveEvaluator = new HauntedHouseGameMoveEvaluation();
        }
Пример #31
0
        public override void UseItem(Level world, Player player, BlockCoordinates blockCoordinates)
        {
            MapEntity mapEntity = new MapEntity(world);

            mapEntity.SpawnEntity();

            // Initialize a new map and add it.
            ItemMap itemMap = new ItemMap(mapEntity.EntityId);

            player.Inventory.SetFirstEmptySlot(itemMap, true);
        }
Пример #32
0
    public override void EnterState(FSMState prevState)
    {
        base.EnterState(prevState);

        /////
        _mapEntity = GameObject.Find("Map").GetComponent<MapEntity>();
        /////

        SetCurrentOption(0);
        SetPlacementBoundary();

        EnableInput();
    }
Пример #33
0
    public override void EnterState(FSMState prevState)
    {
        base.EnterState(prevState);

        _player = GameManager.Instance.Player;
        _player.gameObject.SetActive(false);

        _mapEntity = GameManager.Instance.Map.GetComponent<MapEntity>();
        _cameraMover = GameManager.Instance.GameCamera.GetComponent<TweenMover>();

        // set up camera transition response
        _cameraMover.OnMoveBegin += OnCameraMoveBegin;
        _cameraMover.OnMoveEnd += OnCameraMoveEnd;

        EnableInput();
    }
Пример #34
0
    public override void EnterState(FSMState prevState)
    {
        base.EnterState(prevState);

        ///// init
        _player = GameManager.Instance.Player;
        _mapEntity = GameManager.Instance.Map.GetComponent<MapEntity>();
        _camMover = GameManager.Instance.GameCamera.GetComponent<TweenMover>();

        _visualizer = new MapVisualizer();
        _visualizer.RenderMap(GameManager.Instance.CurrentMap);
        /////

        // set up camera transition response
        _camMover.OnMoveBegin += OnCameraMoveBegin;
        _camMover.OnMoveEnd += OnCameraMoveEnd;

        // set up player move response
        _player.GetComponent<RigidBodyMover>().OnMove += OnPlayerMove;

        EnableInput();
    }
Пример #35
0
    private MapEntity spawnPlayerCharacter(int id, Position position)
    {
        var playerObj = GameObject.Instantiate(Resources.Load("player")) as GameObject;
        playerObj.transform.position = new Vector3(position.X * tilesize, -position.Y * tilesize, -2 - position.Y * tileZLayerFactor);
        playerObj.transform.parent = entitiesNode.transform;
        var playercharacter = new MapEntity(id, playerObj, position.X, position.Y);
        playercharacter.Pokemons.Add(new Pokemon(1, 5));
        playercharacter.IA = false;
        entityMatrix[position.X, position.Y] = playercharacter;
        mapEntities.Add(id, playercharacter);

        return playercharacter;
    }
Пример #36
0
 private void hidePokemon(MapEntity pkmn)
 {
     entityMatrix[pkmn.CurrentPos.X, pkmn.CurrentPos.Y] = null;
     Destroy(pkmn.Object);
 }
Пример #37
0
    private MapEntity spawnPokemon(int id, Position pos, int pkId, int level)
    {
        var prefab = "";
        switch (pkId)
        {
            default:
            case 1:
                prefab = "Rattata";
                break;
            case 2:
                prefab = "Roucool";
                break;
            case 3:
                prefab = "Ptitard";
                break;
        }

        var pkmnObj = GameObject.Instantiate(Resources.Load(prefab)) as GameObject;
        pkmnObj.transform.position = new Vector3(pos.X * tilesize, -pos.Y * tilesize, -2);
        pkmnObj.transform.parent = entitiesNode.transform;
        pkmnObj.SetActive(false);
        var pkmn = new MapEntity(id, pkmnObj, pos.X, pos.Y);
        pkmn.Pokemons.Add(new Pokemon(pkId, level));
        entityMatrix[pos.X, pos.Y] = pkmn;

        return pkmn;
    }
Пример #38
0
    private void updateEntities()
    {
        List<MapEntity> entitiesToRemove = new List<MapEntity>();
        foreach (MapEntity entity in mapEntities.Values)
        {
            entity.MoveTimer += Time.deltaTime;
            entity.IsAliveTimer += Time.deltaTime;

            if (entity.IsAliveTimer > 1)
            {
                entitiesToRemove.Add(entity);
            }
        }

        foreach (MapEntity entityToRemove in entitiesToRemove)
        {
            mapEntities.Remove(entityToRemove.Id);
            entityMatrix[entityToRemove.CurrentPos.X, entityToRemove.CurrentPos.Y] = null;
            Destroy(entityToRemove.Object);
        }

        List<PositionEntity> transferList = new List<PositionEntity>();
        while (Global.Instance.MoveMessages.Count > 0)
        {
            PositionEntity message = Global.Instance.MoveMessages.Dequeue();
            MapEntity entity = null;

            if (mapEntities.ContainsKey(message.Id))
            {
                entity = mapEntities[message.Id];
                entity.Object.SetActive(true);
                entity.IsAliveTimer = 0;

                if (message.Orientation != Direction.None)
                {
                    entity.CurrentDir = message.Orientation;
                }

                if (!entity.CurrentPos.Equals(message.Position)) //todo gérer si la distance est trop grande (>1)
                {
                    if (entity.MoveTimer > entity.MoveTime)
                    {
                        //var currentDir = Utils.GetDirection(entity.CurrentPos, message.Position);
                        moveEntity(entity, message.Position.X, message.Position.Y);
                        if (entity.MoveTimer - Time.deltaTime > entity.MoveTime)
                        {
                            entity.MoveTimer = 0;
                        }
                        else
                        {
                            //Debug.Log("continue");
                            entity.MoveTimer -= entity.MoveTime;
                        }

                        //animation
                        var anim = entity.Object.GetComponent<Animator>();
                        //entity.CurrentDir = currentDir;

                        //test
                        if (anim == null && entity.Pokemons[0].PokedexId == 3)
                        {
                            if (message.State == EntityState.Swimming)
                            {
                                var oldObj = entity.Object;
                                entity.Object = GameObject.Instantiate(Resources.Load("ptitardSwimming_0")) as GameObject;
                                entity.Object.transform.position = new Vector3(oldObj.transform.position.x, oldObj.transform.position.y, oldObj.transform.position.z);
                                entity.Object.transform.parent = entitiesNode.transform;
                                Destroy(oldObj);
                            } else
                            {
                                var oldObj = entity.Object;
                                entity.Object = GameObject.Instantiate(Resources.Load("Ptitard")) as GameObject;
                                entity.Object.transform.position = new Vector3(oldObj.transform.position.x, oldObj.transform.position.y, oldObj.transform.position.z);
                                entity.Object.transform.parent = entitiesNode.transform;
                                Destroy(oldObj);
                            }
                        }

                        if (anim == null && entity.Pokemons[0].PokedexId == 2)
                        {
                            if (message.State == EntityState.Flying)
                            {
                                var oldObj = entity.Object;
                                entity.Object = GameObject.Instantiate(Resources.Load("roucoolFlying_0")) as GameObject;
                                entity.Object.transform.position = new Vector3(oldObj.transform.position.x, oldObj.transform.position.y, oldObj.transform.position.z);
                                entity.Object.transform.parent = entitiesNode.transform;
                                Destroy(oldObj);
                            }
                            else
                            {
                                var oldObj = entity.Object;
                                entity.Object = GameObject.Instantiate(Resources.Load("Roucool")) as GameObject;
                                entity.Object.transform.position = new Vector3(oldObj.transform.position.x, oldObj.transform.position.y, oldObj.transform.position.z);
                                entity.Object.transform.parent = entitiesNode.transform;
                                Destroy(oldObj);
                            }
                        }

                        if (entity.CurrentDir != Direction.None && anim != null)
                        {
                            //Debug.Log("walk");
                            switch (entity.CurrentDir)
                            {
                                case Direction.Down:
                                    anim.CrossFade("player_down", 0f);
                                    break;
                                case Direction.Up:
                                    anim.CrossFade("player_up", 0f);
                                    break;
                                case Direction.Right:
                                    anim.CrossFade("player_right", 0f);
                                    break;
                                case Direction.Left:
                                    anim.CrossFade("player_left", 0f);
                                    break;

                            }
                        }
                    }
                    else
                    {
                        transferList.Add(message);//on remet le message dans la file car on attend la fin de l'animation
                    }
                }

            }
            else
            {
                //Debug.Log("new entity");
                if (message.Type == EntityType.Player)
                {
                    entity = spawnPlayerCharacter(message.Id, message.Position);
                    if (entity.Id == Global.Instance.PlayerId)
                    {
                        player = entity;
                    }
                }
                else
                {
                    entity = spawnPokemon(message.Id, message.Position, message.PokedexId, 5);
                }

                entity.Object.SetActive(true);
                mapEntities.Add(message.Id, entity);
            }
        }

        //Debug.Log(transferList.Count);
        foreach (PositionEntity message in transferList)
        {
            Global.Instance.MoveMessages.Enqueue(message);
        }

        //Debug.Log("update");
        foreach (MapEntity entity in mapEntities.Values)
        {
            var anim = entity.Object.GetComponent<Animator>();

            if (entity.MoveTimer <= entity.MoveTime)
            {
                //moving
                entity.Object.transform.position = Vector3.Lerp(new Vector3(entity.OldPos.X * tilesize, -entity.OldPos.Y * tilesize, -2 - entity.OldPos.Y * tileZLayerFactor), new Vector3(entity.CurrentPos.X * tilesize, -entity.CurrentPos.Y * tilesize, -2 - entity.OldPos.Y * tileZLayerFactor), entity.MoveTimer / entity.MoveTime);

                if (anim == null && entity.MoveTimer % 0.2f < 0.12f)
                {
                    Vector3 currentPos = entity.Object.transform.position;
                    entity.Object.transform.position = new Vector3(currentPos.x + 0.005f, currentPos.y + 0.015f, currentPos.z);

                }

            }
            else
            {
                //if (entity.Id == playerId)  Debug.Log("stop");
                //entity.OldPos = entity.CurrentPos;
                //animation
                if (anim != null)
                {
                    switch (entity.CurrentDir)
                    {
                        case Direction.Down:
                            anim.CrossFade("player_stand_down", 0f);
                            break;
                        case Direction.Right:
                            anim.CrossFade("player_stand_right", 0f);
                            break;
                        case Direction.Up:
                            anim.CrossFade("player_stand_up", 0f);
                            break;
                        case Direction.Left:
                            anim.CrossFade("player_stand_left", 0f);
                            break;
                        default:
                            break;
                    }
                }
            }
        }
    }
Пример #39
0
		public MapEntity CreateEntity(IRegionEntityFactory factory, IResourceContainer resources, bool scrollAffected) {
			MapEntity result = null;

			switch (EntityType) {
				case EntityType.None:
					result = new MapEntity(factory, scrollAffected);
					break;
				case EntityType.Building:
					result = new BuildingEntity(factory, scrollAffected);
					break;
				case EntityType.Player:
					result = new PlayerEntity(factory, scrollAffected);
					break;
				case EntityType.Npc:
					result = new NPCEntity(factory, scrollAffected);
					break;
				case EntityType.Door:
					//result = new EntityDoor();
					break;
			}

			if (result != null) result.TemplateID = this.ID;
			return result;
		}
Пример #40
0
 private void moveEntity(MapEntity entity, int x, int y)
 {
     if (entity.CurrentPos.X != x || entity.CurrentPos.Y != y)
     {
         if (entityMatrix[x, y] == null)
         {
             entityMatrix[entity.CurrentPos.X, entity.CurrentPos.Y] = null;
             entity.OldPos = new Position(entity.CurrentPos);
             entity.CurrentPos = new Position(x, y);
             entityMatrix[entity.CurrentPos.X, entity.CurrentPos.Y] = entity;
         }
     }
 }
Пример #41
0
            void CreateNewDrop()
            {
                Quaternion rotation = GetRotation();
                Vector3 scale = GetScale();

                Common.Entities.Object mapEntity = newDropCallback();
                Common.Classes.Unit uc;
                if (MainWindow.Instance.Map.UnitClasses.TryGetValue(mapEntity.Class, out uc))
                    scale *= uc.Scale;
                MapEntity e = new MapEntity(view, mapEntity)
                {
                    Model = droppingModel,
                    IsSelectable = true,
                    IsClickable = true,
                    Rotation = rotation,
                    Scale = scale
                };

                dropping = e;
                dropping.Entity.Rotation = rotation.W;
                dropping.Entity.Scale = scale.X;
                view.Scene.Add(e);

                /*MapEntity cyl = new MapEntity(view, mapEntity)
                {
                    Model = new Model { XMesh = cylinder, Texture = e.Model.Texture }
                };

                e.Model.SkinnedMesh.CalcBoundingValues(e.Model.SkinnedMesh.RootFrame);

                float z = e.Model.SkinnedMesh.maxZ - e.Model.SkinnedMesh.minZ;
                float y = e.Model.SkinnedMesh.maxY - e.Model.SkinnedMesh.minY;
                float x = e.Model.SkinnedMesh.maxX - e.Model.SkinnedMesh.minX;

                float r = (float)Math.Sqrt((float)Math.Pow((x / 2), 2) + (float)Math.Pow((y / 2), 2)) / 4;

                dropping2 = cyl;

                dropping2.Entity.Rotation = rotation.W;
                dropping2.Scale = new Vector3(r/12, r/12, z/18)*scale.X;
                view.Scene.Add(cyl);*/
            }