Ejemplo n.º 1
0
 public SimAvatarImpl(UUID id, WorldObjects objectSystem, Simulator sim)
     : base(id, objectSystem, sim)
 {
     Affordances.ObjectType.SuperType.Add(SimTypeSystem.GetObjectType("Avatar"));
     _knownTypeUsages = new ListAsSet <SimTypeUsage>();
     WorldSystem.AddAvatar(this, id);
 }
Ejemplo n.º 2
0
 public void Push(WorldObjects.Player.Player player)
 {
     if(player.PrevPosition.Y >= (Position.Y + Texture.Height))
     {
         ReleasePowerUp();
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Initiates loading for world.
 /// </summary>
 public void InitWorld()
 {
     WorldObjects.Init((Device != null));
     WorldObjectGlobals.Init();
     WorldWalls.Init();
     WorldFloors.Init();
 }
Ejemplo n.º 4
0
        public WorldFile(string fileName, IList <TokenID> allowedTokens)
        {
            try
            {
                if (string.IsNullOrEmpty(fileName))
                {
                    throw new InvalidDataException($"Empty filename could not be parsed for for X and Z tile information.");
                }
                // Parse the tile location out of the filename.
                int p = fileName.LastIndexOf("\\WORLD\\W", StringComparison.OrdinalIgnoreCase);
                if (!int.TryParse(fileName.AsSpan(p + 8, 7), out int tileX) || !int.TryParse(fileName.AsSpan(p + 15, 7), out int tileZ))
                {
                    throw new InvalidDataException($"Could not parse filename {fileName} for X and Z tile information.");
                }
                TileX = tileX;
                TileZ = tileZ;

                using (SBR sbr = SBR.Open(fileName))
                {
                    using (SBR block = sbr.ReadSubBlock())
                    {
                        Objects = new WorldObjects(block, allowedTokens, TileX, TileZ);
                    }
                    // some w files have additional comments at the end
                    //       eg _Skip ( "TS DB-Utility - Version: 3.4.05(13.10.2009), Filetype='World', Copyright (C) 2003-2009 by ...CarlosHR..." )
                    sbr.Skip();
                }
            }
            catch (Exception error)
            {
                throw new FileLoadException(fileName, error);
            }
        }
Ejemplo n.º 5
0
        public void Init()
        {
            RogueEncampmentWp = null;
            RedPortal         = null;
            InGame            = false;
            FullyEnteredGame  = false;
            LastTeleport      = 0;
            Experience        = 0;
            Me = new Player();
            Logging.Logger.Write("Reset self");

            SkillLevels.Clear();
            ItemSkillLevels.Clear();
            Logging.Logger.Write("Cleared Skills");
            Players.Clear();
            Logging.Logger.Write("Cleared Players");
            Npcs.Clear();
            Logging.Logger.Write("Cleared Npcs");
            Items.Clear();
            WorldObjects.Clear();

            Inventory = new Container("Inventory", GameData.InventoryWidth, GameData.InventoryHeight);
            Stash     = new Container("Stash", GameData.StashWidth, GameData.StashHeight);
            Cube      = new Container("Cube", GameData.CubeWidth, GameData.CubeHeight);
            Belt      = new Container("Belt", 4, 4);

            MalahId                  = 0;
            CurrentLife              = 0;
            FirstNpcInfoPacket       = true;
            AttacksSinceLastTeleport = 0;
            WeaponSet                = 0;
            HasMerc                  = false;
        }
Ejemplo n.º 6
0
    public static Player Red(int playerId)
    {
        Player player = new Player();

        player.type     = "Red";
        player.name     = "RedPlayer1";
        player.health   = player.maxHealth;
        player.player   = WorldObjects.RedPlayer();
        player.playerId = playerId;

        player.waiting = new Sprite[]
        {
            Resources.GetSpriteSliceBoth(Resources.GetSprite(Resources.redPlayer), 4, 2, 0, 0),
            Resources.GetSpriteSliceBoth(Resources.GetSprite(Resources.redPlayer), 4, 2, 1, 0)
        };
        player.walking = new Sprite[]
        {
            Resources.GetSpriteSliceBoth(Resources.GetSprite(Resources.redPlayer), 4, 2, 0, 1),
            Resources.GetSpriteSliceBoth(Resources.GetSprite(Resources.redPlayer), 4, 2, 1, 1)
        };
        player.attacking = new Sprite[]
        {
            Resources.GetSpriteSliceBoth(Resources.GetSprite(Resources.redPlayer), 4, 2, 2, 1),
            Resources.GetSpriteSliceBoth(Resources.GetSprite(Resources.redPlayer), 4, 2, 3, 1)
        };
        player.dying = new Sprite[]
        {
            Resources.GetSpriteSliceBoth(Resources.GetSprite(Resources.redPlayer), 4, 2, 2, 0)
        };
        player.corpse = WorldObjects.RedCorpse();

        return(player);
    }
Ejemplo n.º 7
0
 /// <summary>
 /// Initiates loading for world.
 /// </summary>
 public void InitWorld()
 {
     WorldObjects.Init();
     WorldObjectGlobals.Init();
     WorldWalls.Init();
     WorldFloors.Init();
 }
Ejemplo n.º 8
0
        public void Init()
        {
            RogueEncampmentWp = null;
            RedPortal         = null;
            InGame            = false;
            FullyEnteredGame  = false;
            LastTeleport      = 0;
            Experience        = 0;
            Me = new Player();
            Logger.Write("Reset GameData");

            SkillLevels.Clear();
            ItemSkillLevels.Clear();
            Players.Clear();
            Npcs.Clear();
            Items.Clear();
            WorldObjects.Clear();

            Inventory = new Container("Inventory", ContainerType.Inventory, InventoryWidth, InventoryHeight);
            Stash     = new Container("Stash", ContainerType.Stash, StashWidth, StashHeight);
            Cube      = new Container("Cube", ContainerType.Cube, CubeWidth, CubeHeight); //todo make configurable
            Belt      = new Container("Belt", ContainerType.Belt, 4, 4);                  //todo make size depend on belt type...

            MalahId                  = 0;
            CurrentLife              = 0;
            FirstNpcInfoPacket       = true;
            AttacksSinceLastTeleport = 0;
            WeaponSet                = 0;
            HasMerc                  = false;
        }
Ejemplo n.º 9
0
        public override void GetNewTask()
        {
            if (stats.MoneyAmount <= 5)
            {
                var bank = FindObjectOfType <Building_Normal_Service_Bank>();
                if (bank == null)
                {
                    return;
                }

                CurrentAction = new BuyFromStore(this, bank);
                return;
            }


            var rand = Random.Range(1, 4);

            if (rand == 1)
            {
                CurrentAction = new TalkAction(this, WorldObjects.GetPersonTarget(this), Random.Range(5f, 15f));
            }
            if (rand == 2)
            {
                CurrentAction = new IdleMovement(this, Random.Range(5f, 15f));
            }
            if (rand == 3)
            {
                var store = FindObjectOfType <Building_Normal_Service_Store>();
                if (store == null)
                {
                    return;
                }
                CurrentAction = new BuyFromStore(this, store);
            }
        }
Ejemplo n.º 10
0
        public WorldFile(string fileName, List <TokenID> allowedTokens)
        {
            try
            {
                // Parse the tile location out of the filename.
                var p = fileName.LastIndexOf("\\WORLD\\W", StringComparison.OrdinalIgnoreCase);
                TileX = int.Parse(fileName.Substring(p + 8, 7));
                TileZ = int.Parse(fileName.Substring(p + 15, 7));

                using (var sbr = SBR.Open(fileName))
                {
                    using (var block = sbr.ReadSubBlock())
                    {
                        Objects = new WorldObjects(block, allowedTokens, TileX, TileZ);
                    }
                    // some w files have additional comments at the end
                    //       eg _Skip ( "TS DB-Utility - Version: 3.4.05(13.10.2009), Filetype='World', Copyright (C) 2003-2009 by ...CarlosHR..." )
                    sbr.Skip();
                }
            }
            catch (Exception error)
            {
                throw new FileLoadException(fileName, error);
            }
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Initiates loading for world.
 /// </summary>
 public void InitWorld()
 {
     WorldObjects.Init((Device != null));
     WorldObjectGlobals.Init();
     WorldWalls.Init();
     WorldFloors.Init();
     WorldCatalog.Init(this);
     WorldRoofs.Init();
 }
Ejemplo n.º 12
0
 public void InternOnRegion(WorldObjects world)
 {
     if (!needPush)
     {
         return;
     }
     needPush = false;
     world.SendNewRegionEvent(SimEventType.DATA_UPDATE, "OnAssetInfo", this);
 }
Ejemplo n.º 13
0
 public WorldObjectsXml(WorldObjects worldObjects)
 {
     if (worldObjects != null)
     {
         foreach (var worldObject in worldObjects)
         {
             Add(new WorldObjectXml(worldObject));
         }
     }
 }
Ejemplo n.º 14
0
        public World ToEntity(State state)
        {
            var world = new World(state);

            world.CreateInstance();
            world.Water        = Water.ToEntity(state);
            world.Sub          = Sub.ToEntity(state);
            world.WorldObjects = WorldObjects.ToEntity(state);
            return(world);
        }
Ejemplo n.º 15
0
        public WorldObjects ToEntity(State state)
        {
            var worldObjects = new WorldObjects(state);

            foreach (var worldObjectsXml in this)
            {
                worldObjects.Add(worldObjectsXml.ToEntity(state));
            }

            return(worldObjects);
        }
Ejemplo n.º 16
0
        public override CmdResult ExecuteRequest(CmdRequest args)
        {
            if (args.Length == 0)
            {
                return(ShowUsage());
            }
            SimObject o;

            if (!args.TryGetValue("target", out o))
            {
                return(Failure(string.Format("Cant find {0}", args.str)));
            }
            bool      isObject    = !(o is SimAvatar);
            UUID      target      = o.ID;
            Primitive currentPrim = o.Prim;

            if (currentPrim == null)
            {
                return(Failure(string.Format("No Prim localId for {0}", args.str)));
            }
            Primitive.ObjectProperties props = o.Properties;
            WorldObjects.EnsureSelected(currentPrim, WorldSystem.GetSimulator(currentPrim));
            if (props == null)
            {
                return(Failure("no props on " + o + " yet try again"));
            }
            GridClient client = TheBotClient;
            string     strA;

            if (!args.TryGetValue("ammount", out strA))
            {
                return(Success(string.Format("saletype {0} {1} {2}", o.ID, props.SalePrice, props.SaleType)));
            }
            int amount;

            strA = strA.Replace("$", "").Replace("L", "");
            if (!int.TryParse(strA, out amount))
            {
                return(Failure("Cant determine amount from: " + strA));
            }
            SaleType saletype;

            if (!args.TryGetValue("saletype", out saletype))
            {
                saletype = SaleType.Original;
                //return Failure("Cant determine SaleType: " + strA);
            }

            WriteLine("Setting Ammount={0} SaleType={1} for {2}", saletype, amount, o);
            TheBotClient.Objects.SetSaleInfo(WorldSystem.GetSimulator(currentPrim), currentPrim.LocalID, saletype,
                                             amount);

            return(Success(Name + " on " + o));
        }
Ejemplo n.º 17
0
 public void AddObject(WorldObject obj)
 {
     WorldObjects.Add(obj);
     if (obj is IPlayer)
     {
         Player = (IPlayer)obj;
     }
     if (obj is IDynamicObject)
     {
         DynamicObjects.Add((IDynamicObject)obj);
     }
 }
        public WorldObjectBaseAbstract Create(WorldObjects worldObject)
        {
            if (worldObject == WorldObjects.HealthPotion)
            {
                return(new HealthPotion());
            }
            if (worldObject == WorldObjects.Spikes)
            {
                return(new Spikes());
            }

            throw new ArgumentException($"WorldObjectFactory - no object available with that this name {worldObject}");
        }
Ejemplo n.º 19
0
        private void SetPlayers(Player[] players)
        {
            TotalPlayers = players.Length;
            PlayerList   = players;
            var i = 0;

            foreach (var player in players)
            {
                player.CurrentNode    = StartingNode;
                player.ActualLocation = StartingNode.GetTravelPosition(i, TotalPlayers);
                WorldObjects.Add(player);
                i++;
            }
        }
        public ScriptEventListener(ScriptInterpreter interp, BotClient client)
        {
            taskInterperter = interp;
            taskInterperter.Intern("Client", client);
            taskInterperter.Intern("thisClient", client);
            if (client != null)
            {
                WorldSystem = client.WorldSystem;
            }

            thrJobQueue      = new Thread(jobManager);
            thrJobQueue.Name = string.Format("ScriptEventListener Thread for {0}", (client ?? (Object)"ClientManager"));
            thrJobQueue.Start();
        }
        public override CmdResult ExecuteRequest(CmdRequest args)
        {
            if (args.Length == 0)
            {
                WorldObjects.ResetSelectedObjects();
                return(Success("ResetSelectedObjects"));
            }
            string note         = "";
            var    autoDeselect = (args[0] == "re");

            if (autoDeselect)
            {
                note += "re";
                args  = args.AdvanceArgs(1);
            }
            var deSelect = (args[0] == "de");

            if (deSelect)
            {
                note += "de";
                args  = args.AdvanceArgs(1);
            }
            int used;
            List <SimObject> PS = WorldSystem.GetPrimitives(args, out used);

            if (IsEmpty(PS))
            {
                return(Failure("Cannot find objects from " + args.str));
            }
            List <uint> selectobjs = new List <uint>();
            var         fp         = PS[0].RegionHandle;

            foreach (var P in PS)
            {
                if (fp != P.RegionHandle)
                {
                    SelectObjects(deSelect, fp, selectobjs, autoDeselect);
                    fp         = P.RegionHandle;
                    selectobjs = new List <uint>();
                }
                selectobjs.Add(P.LocalID);
                uint pid = P.ParentID;
                if (pid != 0)
                {
                    selectobjs.Add(pid);
                }
            }
            SelectObjects(deSelect, fp, selectobjs, autoDeselect);
            return(Success("objects " + note + "selected " + PS.Count));
        }
Ejemplo n.º 22
0
        public override void Update(GameTime gameTime)
        {
            if (MapManager.ActiveMap != null)
            {
                MapManager.ActiveMap.Update(gameTime);
            }

            var gameobjects = WorldObjects.AllObjects();

            foreach (var gameobject in gameobjects)
            {
                gameobject.Update(gameTime);
            }
        }
Ejemplo n.º 23
0
 /// <inheritdoc />
 public virtual void Update(ISubject subject)
 {
     if (subject is BaseCreature creature)
     {
         if (creature.IsDead)
         {
             Creatures.Remove(creature);
         }
     }
     if (subject is InteractableWorldObject worldObject)
     {
         WorldObjects.Remove(worldObject);
     }
 }
 public SimObject GetSimObject(object target)
 {
     SimObject O = null;
     UUID id = ToUUID(target);
     if (id != UUID.Zero)
         O = WorldObjects.GetSimObjectFromUUID(id);
     else
     {
         if (target is SimObject)
         {
             O = (target as SimObject);
         }
     }
     return O;
 }
Ejemplo n.º 25
0
        static internal SimObject GetSimObjectFromUUID(UUID objid)
        {
            DateTime timeOut = DateTime.Now + TimeSpan.FromSeconds(5);

            while (DateTime.Now < timeOut)
            {
                var O = WorldObjects.GetSimObjectFromUUID(objid);
                if (O != null)
                {
                    return(O);
                }
                Thread.Sleep(500);
            }
            return(null);
        }
Ejemplo n.º 26
0
        public bool ExportPrim(BotClient Client, SimObject exportPrim, OutputDelegate Failure, ImportSettings settings)
        {
            uint localID = exportPrim.LocalID;

            WorldObjects.EnsureRequested(localID + 1, settings.CurSim);
            try
            {
                Client.Objects.SelectObject(settings.CurSim, localID);
                WorldObjects.EnsureRequested(localID, settings.CurSim);
                return(ExportPrim0(Client, exportPrim, Failure, settings));
            }
            finally
            {
                Client.Objects.DeselectObject(settings.CurSim, localID);
            }
        }
 public SimAvatarClient(UUID id, WorldObjects objectSystem, Simulator reg)
     : base(id, objectSystem, reg)
 {
     SingleInstance = this;
     Affordances.ObjectType.SuperType.Add(SimTypeSystem.GetObjectType("PlayerAvatar"));
     //try
     //{
     //    AspectName = slAvatar.Name;
     //}
     //catch (Exception)
     //{
     //    AspectName += objectSystem.client + "_Avatar_" + slAvatar.LocalID;
     //}
     //MakeEnterable(this);
     WorldSystem.AddAvatar(this, id);
 }
Ejemplo n.º 28
0
        /// <summary>
        /// Used in the default world generator to add objects to the world at pseudo-random locations.
        /// </summary>
        /// <param name="randomifier">A pseudo random number. If the number is divisible by 10 and the remainder is 0 you place a mountain
        /// else if you divide by 8 and the remainder is 0 you get an item, else if you divide by 2 and the remainder is 0 you place a creature.</param>
        /// <param name="x">x coordinate for the object</param>
        /// <param name="y">y coordinate for the object</param>
        protected virtual void PlaceObject(int randomifier, int x, int y)
        {
            if (WorldObjects.Contains(WorldObjects.Find(obj => obj.Position == new Point(x, y))))
            {
                return;
            }
            if (Creatures.Contains(Creatures.Find(obj => obj.Position == new Point(x, y))))
            {
                return;
            }

            if (randomifier % 10 == 0)
            {
                WorldObjects.Add(new ImpassableTerrain("Mountain", new Point(x, y)));
            }
            else if (randomifier % 8 == 0)
            {
                WorldObjects.Add(new InteractableWorldObject(new Item("Angel Statue"), new Point(x, y)));
            }
            else if (randomifier % 2 == 0)
            {
                Random       random = new Random();
                BaseCreature creature;
                switch (random.Next(0, 3))
                {
                case 0:
                    creature = _premadeCreatures.Centaur;
                    break;

                case 1:
                    creature = _premadeCreatures.Goblin;
                    break;

                case 2:
                    creature = _premadeCreatures.Mage;
                    break;

                default:
                    creature = _premadeCreatures.Peasant;
                    break;
                }

                creature.Position = new Point(x, y);
                creature.Attach(this);
                Creatures.Add(creature);
            }
        }
Ejemplo n.º 29
0
        public override bool Contributes(object o, Type type)
        {
            if (type == useType)
            {
                return(true);
            }
            if (IsObjectType(ContextType))
            {
                if (o != null)
                {
                    if (ContextType.IsInstanceOfType(o))
                    {
                        lastObject = o;
                        return(true);
                    }
                    if (o is Primitive)
                    {
                        lastObject = o;
                        return(true);
                    }
                    {
                        var uuid = ToUUID(o);
                        if (uuid != UUID.Zero)
                        {
                            var lo = WorldObjects.GetSimObjectFromUUID(uuid);
                            if (lo != null)
                            {
                                lastObject = lo;
                                return(true);
                            }
                            lastObject = uuid;
                        }
                    }
                    if (type == typeof(UUID))
                    {
                        return(false);
                    }
                }
                if (IsObjectType(type))
                {
                    return(true);
                }
                return(!typeof(InventoryBase).IsInstanceOfType(o));
            }

            return(base.Contributes(o, type));
        }
Ejemplo n.º 30
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            if (MapManager.ActiveMap != null)
            {
                MapManager.ActiveMap.Draw(spriteBatch);
            }

            var gameobjects = WorldObjects.GameObjectsOfType <DrawableGameObject>();

            foreach (var gameobject in gameobjects)
            {
                gameobject.Draw(spriteBatch);
            }

            gameobjects.First(
                o => o is FarmPlayer).Draw(spriteBatch);
        }
Ejemplo n.º 31
0
    private void Awake()
    {
        if (_instance == null)
        {
            _instance = this;
        }
        if (_instance != this)
        {
            Destroy(this);
            return;
        }

        _trees = FindObjectsOfType <Tree>().ToList();
        _worldObjects[typeof(Tree)] = _trees.Cast <MonoBehaviour>().ToList();
        _worldObjects[typeof(Ark)]  = new List <MonoBehaviour>()
        {
            FindObjectOfType <Ark>()
        };

        foreach (var tree in _trees)
        {
            tree.OnDead += TreeOnDeadHandler;
        }

        _additionalCheck[typeof(Tree)] = (monoTree) =>
        {
            var tree = monoTree as Tree;
            if (tree == null)
            {
                return(false);
            }

            return(tree.IsAlive);
        };
        _additionalCheck[typeof(TreeTrunk)] = (monoTrunk) =>
        {
            var trunk = monoTrunk as TreeTrunk;
            if (trunk == null)
            {
                return(false);
            }

            return(!trunk.IsCarring && !trunk.IsLoaded);
        };
    }
Ejemplo n.º 32
0
 public void SetTarget(WorldObjects targetObject)
 {
     this.targetObject = targetObject;
 }
    private void ChangeSelection(WorldObjects worldObject, Player controller)
    {
        SetSelection(false, playingArea); // altes worldObject deselect

        if (controller.SelectedObject)
        {
            controller.SelectedObject.SetSelection(false, playingArea);
        }

        controller.SelectedObject = worldObject;
        worldObject.SetSelection(true, controller.hud.GetPlayingArea());//new worldObject ist ausgewählt
    }
    protected virtual void BeginAttack(WorldObjects targetObject)
    {
        this.targetObject = targetObject;

        if (TargetInRange())
        {
            attacking = true;
            PerformAttack();
        }

        else
            AdjustPosition();
    }