invertika_game.Game.Thing.inserted C# (CSharp) Method

inserted() public method

public inserted ( ) : void
return void
        public void inserted()
        {
            int debug=555;
            //    for (Listeners::iterator i = mListeners.begin(),
            //         i_end = mListeners.end(); i != i_end;)
            //    {
            //        const EventListener &l = **i;
            //        ++i; // In case the listener removes itself from the list on the fly.
            //        if (l.dispatch->inserted) l.dispatch->inserted(&l, this);
            //    }
        }

Usage Example

Example #1
0
        public static bool insert(Thing ptr)
        {
            //assert(!dbgLockObjects);

            MapComposite map=ptr.getMap();
            //assert(map && map.isActive());

            /* Non-visible objects have neither position nor public ID, so their
               insertion cannot fail. Take care of them first. */
            if(!ptr.isVisible())
            {
                map.insert(ptr);
                ptr.inserted();
                return true;
            }

            // Check that coordinates are actually valid.
            Actor obj=(Actor)ptr;
            Map mp=map.getMap();

            Point pos=obj.getPosition();
            if((int)pos.x/mp.getTileWidth()>=mp.getWidth()||
                (int)pos.y/mp.getTileHeight()>=mp.getHeight())
            {
                Logger.Write(LogLevel.Error, "Tried to insert an actor at position {0}, {1} outside map {2}.", pos.x, pos.y, map.getID());

                // Set an arbitrary small position.
                pos=new Point(100, 100);
                obj.setPosition(pos);
            }

            if(!map.insert(obj))
            {
                // The map is overloaded, no room to add a new actor
                Logger.Write(LogLevel.Error, "Too many actors on map {0}.", map.getID());
                return false;
            }

            obj.inserted();

            // DEBUG INFO //TODO Implementieren
            //            switch(obj.getType())
            //            {
            //                case ThingType.OBJECT_ITEM:
            //                    Logger.Write(LogLevel.Debug, "Item inserted: "
            //                       (Item)(obj).getItemClass().getDatabaseID());
            //                    break;
            //
            //                case ThingType.OBJECT_NPC:
            //                    Logger.Write(LogLevel.Debug, "NPC inserted: "<<static_cast<NPC*>(obj).getNPC());
            //                    break;
            //
            //                case ThingType.OBJECT_CHARACTER:
            //                    Logger.Write(LogLevel.Debug, "Player inserted: "
            //                        <<static_cast<Being*>(obj).getName());
            //                    break;
            //
            //                case ThingType.OBJECT_EFFECT:
            //                    Logger.Write(LogLevel.Debug, "Effect inserted: "
            //                        <<static_cast<Effect*>(obj).getEffectId());
            //                    break;
            //
            //                case ThingType.OBJECT_MONSTER:
            //                    Logger.Write(LogLevel.Debug, "Monster inserted: "
            //                        <<static_cast<Monster*>(obj).getSpecy().getId());
            //                    break;
            //
            //                case ThingType.OBJECT_ACTOR:
            //                case ThingType.OBJECT_OTHER:
            //                default:
            //                    Logger.Write(LogLevel.Debug, "Thing inserted: "<<obj.getType());
            //            }

            obj.raiseUpdateFlags((byte)UpdateFlag.UPDATEFLAG_NEW_ON_MAP);
            if(obj.getType()!=ThingType.OBJECT_CHARACTER)
                return true;

            /* Since the player does not know yet where in the world its character is,
               we send a map-change message, even if it is the first time it
               connects to this server. */
            MessageOut mapChangeMessage=new MessageOut(Protocol.GPMSG_PLAYER_MAP_CHANGE);
            mapChangeMessage.writeString(map.getName());
            mapChangeMessage.writeInt16(pos.x);
            mapChangeMessage.writeInt16(pos.y);
            Program.gameHandler.sendTo((Character)(obj), mapChangeMessage);

            // update the online state of the character
            Program.accountHandler.updateOnlineStatus(((Character)obj).getDatabaseID(), true);

            return true;
        }