Esempio n. 1
0
    private void RespawnTree(GameObjectInstance tree)
    {
        var obj = GameData.GetGameObject(tree.ObjectId);

        tree.Type = obj.Type;
        World.UpdateObject(tree);
    }
Esempio n. 2
0
 public void Hide()
 {
     if (GameObjectInstance != null)
     {
         GameObjectInstance.SetActive(false);
     }
 }
Esempio n. 3
0
 public void InstantiateGameObject()
 {
     GameObjectInstance = (GameObject)Instantiate(Resources.Load("Prefabs/" + "buyButton"));
     GameObjectInstance.AddComponent <BoxCollider2D>();
     GameObjectInstance.AddComponent <PurchaseEventHandler>();
     XPos = GameObjectInstance.transform.position.x;
     YPos = GameObjectInstance.transform.position.y;
 }
Esempio n. 4
0
 public void Show()
 {
     if (GameObjectInstance != null)
     {
         GameObjectInstance.SetActive(true);
         MenuSytleAdapter.UpdateContainerColor();
     }
 }
Esempio n. 5
0
 public static ObjectAdd Create(GameObjectInstance obj, Transform transform)
 {
     return(new ObjectAdd
     {
         ObjectServerId = obj.Id,
         ObjectId = obj.Type,
         Position = transform.GetPosition()
     });
 }
Esempio n. 6
0
        public EntityActionInvoker GetAction(GameObjectInstance obj, int actionId)
        {
            var type = gameData.GetGameObject(obj.ObjectId).Type;

            if (entityActions.TryGetValue(type, out var actions))
            {
                return(actions.Select(x => x.Value).FirstOrDefault(x => x.Id == actionId));
            }
            return(null);
        }
Esempio n. 7
0
        public ItemDrop[] GetItemDrops(GameObjectInstance obj)
        {
            var type = gameData.GetGameObject(obj.ObjectId).Type;

            if (objectItemDrops.TryGetValue(type, out var drops))
            {
                return(drops);
            }

            return(new ItemDrop[0]);
        }
        public void UpdateObject(GameObjectInstance obj)
        {
            var session   = sessions.Get(obj);
            var gobj      = gameData.GetGameObject(obj.ObjectId);
            var transform = gameData.GetTransform(gobj.TransformId);

            foreach (var playerConnection in connectionProvider.GetAllActivePlayerConnections(session))
            {
                playerConnection.Send(ObjectUpdate.Create(obj, transform, gobj.Static), SendOption.Reliable);
            }
        }
Esempio n. 9
0
        public GameObjectInstance CreateGameObjectInstance()
        {
            var id  = GetNextId(objectInstances.Entities);
            var obj = new GameObjectInstance()
            {
                Id = id
            };

            Add(obj);
            return(obj);
        }
Esempio n. 10
0
    protected bool HandleObjectTick(Player player, GameObjectInstance obj, TimeSpan totalTime, TimeSpan deltaTime)
    {
        var session = Sessions.Get(player);

        if (!session.Objects.HasAcquiredLock(obj, player))
        {
            StopAnimation(player, obj);
            return(true);
        }

        var skillLevel = statsProvider.GetLevel(player.Id, skillName);
        var chance     = 0.05f + skillLevel * 0.05f;

        if (random.NextDouble() <= chance)
        {
            StartAnimation(player, obj);
            return(false);
        }
        var gobj         = GameData.GetGameObject(obj.ObjectId);
        var levelsGaiend = statsProvider.AddExperience(player.Id, skillName, gobj.Experience);
        var itemDrops    = session.Objects.GetItemDrops(obj);

        foreach (var itemDrop in itemDrops)
        {
            if (random.NextDouble() > itemDrop.DropChance)
            {
                continue;
            }

            World.AddPlayerItem(player, GameData.GetItem(itemDrop.ItemId));
        }

        var exp = statsProvider.GetExperience(player.Id, skillName);

        World.UpdatePlayerStat(player, skillName, skillLevel + levelsGaiend, exp);

        if (levelsGaiend > 0)
        {
            World.PlayerStatLevelUp(player, skillName, levelsGaiend);
        }

        StopAnimation(player, obj);
        if (AfterAction != null)
        {
            AfterAction?.Invoke(this, new AfterActionEventArgs(player, obj));
        }
        return(true);
    }
Esempio n. 11
0
 public void PlayerObjectInteraction(
     Player player, GameObjectInstance obj, EntityActionInvoker action, int parameterId)
 {
     // use
     if (action.Invoke(player, obj, parameterId))
     {
         foreach (var playerConnection in connectionProvider.GetAll())
         {
             playerConnection.Send(new PlayerObjectActionResponse
             {
                 PlayerId       = player.Id,
                 ActionId       = action.Id,
                 ObjectServerId = obj.Id,
                 ParameterId    = parameterId,
                 Status         = 1 // 0: fail, 1: success
             }, SendOption.Reliable);
         }
     }
 }
Esempio n. 12
0
    protected void StopAnimation(Player player, GameObjectInstance obj)
    {
        var session      = Sessions.Get(player);
        var gobj         = GameData.GetGameObject(obj.ObjectId);
        var inventory    = inventoryProvider.GetInventory(player.Id);
        var requiredItem = inventory.GetItemOfType(gobj.InteractItemType);

        if (requiredItem != null)
        {
            var reqItem = GameData.GetItem(requiredItem.ItemId);
            if (reqItem.Equippable)
            {
                World.SetItemEquipState(player, reqItem, false);
            }
            if (reqItem.Consumable)
            {
                World.RemovePlayerItem(player, reqItem);
            }
            World.PlayAnimation(player, skillName, false);
        }

        session.Objects.ReleaseLocks(player);
    }
Esempio n. 13
0
 public void Add(GameObjectInstance entity) => Update(() => objectInstances.Add(entity));
Esempio n. 14
0
 private void MakeTreeStump(GameObjectInstance tree)
 {
     tree.Type = 0;
     World.UpdateObject(tree);
     kernel.SetTimeout(() => RespawnTree(tree), GameData.GetGameObject(tree.ObjectId).RespawnMilliseconds);
 }
Esempio n. 15
0
 protected void StartAnimation(Player player, GameObjectInstance obj)
 {
     World.PlayAnimation(player, skillName, true, true);
     World.SetEntityTimeout(actionTime, player, obj, HandleObjectTick);
 }
Esempio n. 16
0
 public void Remove(GameObjectInstance obj) => objectInstances.Remove(obj);
 public AfterActionEventArgs(Player player, GameObjectInstance obj)
 {
     this.Player = player;
     this.Object = obj;
 }
Esempio n. 18
0
 public void Update(GameObjectInstance obj, IGameSession session, TimeSpan deltaTime)
 {
 }