invertika_game.Game.GameState.informPlayer C# (CSharp) Method

informPlayer() static private method

static private informPlayer ( MapComposite map, Character p, int worldTime ) : void
map MapComposite
p Character
worldTime int
return void
        static void informPlayer(MapComposite map, Character p, int worldTime)
        {
            //MessageOut moveMsg(GPMSG_BEINGS_MOVE);
            //MessageOut damageMsg(GPMSG_BEINGS_DAMAGE);
            //const Point &pold = p.getOldPosition(), ppos = p.getPosition();
            //int pid = p.getPublicID(), pflags = p.getUpdateFlags();
            //int visualRange = Configuration::getValue("game_visualRange", 448);

            //// Inform client about activities of other beings near its character
            //for (BeingIterator i(map.getAroundBeingIterator(p, visualRange)); i; ++i)
            //{
            //    Being *o = *i;

            //    const Point &oold = o.getOldPosition(), opos = o.getPosition();
            //    int otype = o.getType();
            //    int oid = o.getPublicID(), oflags = o.getUpdateFlags();
            //    int flags = 0;

            //    // Check if the character p and the moving object o are around.
            //    bool wereInRange = pold.inRangeOf(oold, visualRange) &&
            //                       !((pflags | oflags) & UPDATEFLAG_NEW_ON_MAP);
            //    bool willBeInRange = ppos.inRangeOf(opos, visualRange);

            //    if (!wereInRange && !willBeInRange)
            //    {
            //        // Nothing to report: o and p are far away from each other.
            //        continue;
            //    }

            //    if (wereInRange && willBeInRange)
            //    {
            //        // Send attack messages.
            //        if ((oflags & UPDATEFLAG_ATTACK) && oid != pid)
            //        {
            //            MessageOut AttackMsg(GPMSG_BEING_ATTACK);
            //            AttackMsg.writeInt16(oid);
            //            AttackMsg.writeInt8(o.getDirection());
            //            AttackMsg.writeInt8(static_cast< Being * >(o).getAttackId());
            //            gameHandler.sendTo(p, AttackMsg);
            //        }

            //        // Send action change messages.
            //        if ((oflags & UPDATEFLAG_ACTIONCHANGE))
            //        {
            //            MessageOut ActionMsg(GPMSG_BEING_ACTION_CHANGE);
            //            ActionMsg.writeInt16(oid);
            //            ActionMsg.writeInt8(static_cast< Being * >(o).getAction());
            //            gameHandler.sendTo(p, ActionMsg);
            //        }

            //        // Send looks change messages.
            //        if (oflags & UPDATEFLAG_LOOKSCHANGE)
            //        {
            //            MessageOut LooksMsg(GPMSG_BEING_LOOKS_CHANGE);
            //            LooksMsg.writeInt16(oid);
            //            Character * c = static_cast<Character * >(o);
            //            serializeLooks(c, LooksMsg, false);
            //            LooksMsg.writeInt16(c.getHairStyle());
            //            LooksMsg.writeInt16(c.getHairColor());
            //            LooksMsg.writeInt16(c.getGender());
            //            gameHandler.sendTo(p, LooksMsg);
            //        }

            //        // Send direction change messages.
            //        if (oflags & UPDATEFLAG_DIRCHANGE)
            //        {
            //            MessageOut DirMsg(GPMSG_BEING_DIR_CHANGE);
            //            DirMsg.writeInt16(oid);
            //            DirMsg.writeInt8(o.getDirection());
            //            gameHandler.sendTo(p, DirMsg);
            //        }

            //        // Send damage messages.
            //        if (o.canFight())
            //        {
            //            Being *victim = static_cast< Being * >(o);
            //            const Hits &hits = victim.getHitsTaken();
            //            for (Hits::const_iterator j = hits.begin(),
            //                 j_end = hits.end(); j != j_end; ++j)
            //            {
            //                damageMsg.writeInt16(oid);
            //                damageMsg.writeInt16(*j);
            //            }
            //        }

            //        if (oold == opos)
            //        {
            //            // o does not move, nothing more to report.
            //            continue;
            //        }
            //    }

            //    if (!willBeInRange)
            //    {
            //        // o is no longer visible from p. Send leave message.
            //        MessageOut leaveMsg(GPMSG_BEING_LEAVE);
            //        leaveMsg.writeInt16(oid);
            //        gameHandler.sendTo(p, leaveMsg);
            //        continue;
            //    }

            //    if (!wereInRange)
            //    {
            //        // o is now visible by p. Send enter message.
            //        MessageOut enterMsg(GPMSG_BEING_ENTER);
            //        enterMsg.writeInt8(otype);
            //        enterMsg.writeInt16(oid);
            //        enterMsg.writeInt8(static_cast< Being *>(o).getAction());
            //        enterMsg.writeInt16(opos.x);
            //        enterMsg.writeInt16(opos.y);
            //        enterMsg.writeInt8(o.getDirection());
            //        switch (otype)
            //        {
            //            case OBJECT_CHARACTER:
            //            {
            //                Character *q = static_cast< Character * >(o);
            //                enterMsg.writeString(q.getName());
            //                enterMsg.writeInt8(q.getHairStyle());
            //                enterMsg.writeInt8(q.getHairColor());
            //                enterMsg.writeInt8(q.getGender());
            //                serializeLooks(q, enterMsg, true);
            //            } break;

            //            case OBJECT_MONSTER:
            //            {
            //                Monster *q = static_cast< Monster * >(o);
            //                enterMsg.writeInt16(q.getSpecy().getId());
            //                enterMsg.writeString(q.getName());
            //            } break;

            //            case OBJECT_NPC:
            //            {
            //                NPC *q = static_cast< NPC * >(o);
            //                enterMsg.writeInt16(q.getNPC());
            //                enterMsg.writeString(q.getName());
            //            } break;

            //            default:
            //                assert(false); // TODO
            //        }
            //        gameHandler.sendTo(p, enterMsg);
            //    }

            //    if (opos != oold)
            //    {
            //        // Add position check coords every 5 seconds.
            //        if (worldTime % 50 == 0)
            //            flags |= MOVING_POSITION;

            //        flags |= MOVING_DESTINATION;
            //    }

            //    // Send move messages.
            //    moveMsg.writeInt16(oid);
            //    moveMsg.writeInt8(flags);
            //    if (flags & MOVING_POSITION)
            //    {
            //        moveMsg.writeInt16(oold.x);
            //        moveMsg.writeInt16(oold.y);
            //    }

            //    if (flags & MOVING_DESTINATION)
            //    {
            //        moveMsg.writeInt16(opos.x);
            //        moveMsg.writeInt16(opos.y);
            //        // We multiply the sent speed (in tiles per second) by ten
            //        // to get it within a byte with decimal precision.
            //        // For instance, a value of 4.5 will be sent as 45.
            //        moveMsg.writeInt8((unsigned short)
            //            (o.getModifiedAttribute(ATTR_MOVE_SPEED_TPS) * 10));
            //    }
            //}

            //// Do not send a packet if nothing happened in p's range.
            //if (moveMsg.getLength() > 2)
            //    gameHandler.sendTo(p, moveMsg);

            //if (damageMsg.getLength() > 2)
            //    gameHandler.sendTo(p, damageMsg);

            //// Inform client about status change.
            //p.sendStatus();

            //// Inform client about health change of party members
            //for (CharacterIterator i(map.getWholeMapIterator()); i; ++i)
            //{
            //    Character *c = *i;

            //    // Make sure its not the same character
            //    if (c == p)
            //        continue;

            //    // make sure they are in the same party
            //    if (c.getParty() == p.getParty())
            //    {
            //        int cflags = c.getUpdateFlags();
            //        if (cflags & UPDATEFLAG_HEALTHCHANGE)
            //        {
            //            MessageOut healthMsg(GPMSG_BEING_HEALTH_CHANGE);
            //            healthMsg.writeInt16(c.getPublicID());
            //            healthMsg.writeInt16(c.getModifiedAttribute(ATTR_HP));
            //            healthMsg.writeInt16(c.getModifiedAttribute(ATTR_MAX_HP));
            //            gameHandler.sendTo(p, healthMsg);
            //        }
            //    }
            //}

            //// Inform client about items on the ground around its character
            //MessageOut itemMsg(GPMSG_ITEMS);
            //for (FixedActorIterator i(map.getAroundBeingIterator(p, visualRange)); i;
            //                                                                        ++i)
            //{
            //    assert((*i).getType() == OBJECT_ITEM ||
            //           (*i).getType() == OBJECT_EFFECT);

            //    Actor *o = *i;
            //    Point opos = o.getPosition();
            //    int oflags = o.getUpdateFlags();
            //    bool willBeInRange = ppos.inRangeOf(opos, visualRange);
            //    bool wereInRange = pold.inRangeOf(opos, visualRange) &&
            //                       !((pflags | oflags) & UPDATEFLAG_NEW_ON_MAP);

            //    if (willBeInRange ^ wereInRange)
            //    {
            //        switch (o.getType())
            //        {
            //            case OBJECT_ITEM:
            //            {
            //                Item *o = static_cast< Item * >(*i);
            //                if (oflags & UPDATEFLAG_NEW_ON_MAP)
            //                {
            //                    /* Send a specific message to the client when an item appears
            //                       out of nowhere, so that a sound/animation can be performed. */
            //                    MessageOut appearMsg(GPMSG_ITEM_APPEAR);
            //                    appearMsg.writeInt16(o.getItemClass().getDatabaseID());
            //                    appearMsg.writeInt16(opos.x);
            //                    appearMsg.writeInt16(opos.y);
            //                    gameHandler.sendTo(p, appearMsg);
            //                }
            //                else
            //                {
            //                    itemMsg.writeInt16(willBeInRange ? o.getItemClass().getDatabaseID() : 0);
            //                    itemMsg.writeInt16(opos.x);
            //                    itemMsg.writeInt16(opos.y);
            //                }
            //            }
            //            break;
            //            case OBJECT_EFFECT:
            //            {
            //                Effect *o = static_cast< Effect * >(*i);
            //                o.show();
            //                // Don't show old effects
            //                if (!(oflags & UPDATEFLAG_NEW_ON_MAP))
            //                    break;
            //                Being *b = o.getBeing();
            //                if (b)
            //                {
            //                    MessageOut effectMsg(GPMSG_CREATE_EFFECT_BEING);
            //                    effectMsg.writeInt16(o.getEffectId());
            //                    effectMsg.writeInt16(b.getPublicID());
            //                    gameHandler.sendTo(p, effectMsg);
            //                } else {
            //                    MessageOut effectMsg(GPMSG_CREATE_EFFECT_POS);
            //                    effectMsg.writeInt16(o.getEffectId());
            //                    effectMsg.writeInt16(opos.x);
            //                    effectMsg.writeInt16(opos.y);
            //                    gameHandler.sendTo(p, effectMsg);
            //                }
            //            }
            //            break;
            //            default: break;
            //        } // Switch
            //    }
            //}

            //// Do not send a packet if nothing happened in p's range.
            //if (itemMsg.getLength() > 2)
            //    gameHandler.sendTo(p, itemMsg);
        }