Jump to content

madmax

Community Members
  • Posts

    165
  • Joined

  • Last visited

Posts posted by madmax

  1. I see this in ICmpPlayerManager


    /**
    * Player manager. This maintains the list of players that exist in the game.
    */
    class ICmpPlayerManager : public IComponent
    {
    public:
    virtual void AddPlayer(entity_id_t ent) = 0;
    virtual int32_t GetNumPlayers() = 0;
    virtual entity_id_t GetPlayerByID(int32_t id) = 0;
    DECLARE_INTERFACE_TYPE(PlayerManager)
    };

    Will try to use it. But then what the user's player id...hmm Maybe it's always 0 or 1 ?

  2. Ok and I guess there is no way to set a global variable kind of in JS that holds the user's player id. Then this can be used to check in parts of the JS code ?

    What I need is something like bool doesEntityBelongToPlayer(entityid, player id)

    I see some of the components call back to the script like:


    virtual bool MoveToTargetRange(entity_id_t target, entity_pos_t minRange, entity_pos_t maxRange)
    {
    return m_Script.Call<bool>("MoveToTargetRange", target, minRange, maxRange);
    }

    Maybe if such a function is there in JS that messages.js is using, I could call back there.

  3. Thanks, so I have committed the change which allows pinging to appear in the minimap via the interface and message thing.

    https://github.com/z...5950b98fc72e238

    The minimap interface implements only dumb pinging. It has no notion of why the pinging occurs as it can be for any reason. We may want pinging to happen to indicate other things later on. Also it does not do any check on the user's player ID. The JS sim code currently sends messages for attack on any entity. I think what the JS code should do is send messages only if entities of the current user is being attacked. Right now any attacked entity, even those of the enemy is being pinged. It was working correctly with the earlier JS where you were using the global PingMinimap()

    Also currently the pinging will stop if the unit is no longer attacked, after a duration decided by the user's frame rate. Which is weird but I guess not an issue as it doesnt affect the sim, only notification to the user. Trying to use the number of turns adds more code to no real purpose.

  4. Yes it has only 1 component of a particular type, so just 1 Minimap component.

    Ok so I have done all the C++ changes, but I still get a JS error even though the game plays fine. You can pull my latest commit an check.

    https://github.com/laxmax/0ad/commit/b1e5e5b2cee620bbdce74afc06b4ab04ee3a3479

    Seems the following is the location of the problem:


    var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
    var event = {target: target, position: cmpPosition.GetPosition(), time: cmpTimer.GetTime()};

    Engine.PostMessage(target, MT_EntityAttacked, event);

    position: cmpPosition.GetPosition() ...maybe it should be received in a var called pos and then split up



    var event = {target: target, pos.x, pos.z, time: cmpTimer.GetTime()};

  5. I changed the order of the args in the event to make it consistent with the remaning messages, entity id first :


    // Message of the form { "event": { "target": 123, "position": { "x": 123, "z": 456 }, "time": 1 }.
    // sent when an entity is attacked.
    Engine.RegisterMessageType("EntityAttacked");
    // Message of the form { "player": 1, "event": { "target": 123 , "position": { "x": 123, "z": 456 }, "time": 1, }.
    // sent when a new attack is detected.
    Engine.RegisterMessageType("AttackDetected");

    and line 46 in AttackDetection.js :

    var event = {target: target, position: cmpPosition.GetPosition(), time: cmpTimer.GetTime()};

    Would any other code be affected. What about consumers of the message MT_AttackDetected. This message will not be declared or used in C++ (unless we plan to , not sure)


  6. abhi@ABHI-PC /f/Code/0ad/0ad (attack-notification)
    $ git remote add zootzoot https://github.com/zootzoot/0ad.git

    abhi@ABHI-PC /f/Code/0ad/0ad (attack-notification)
    $ git pull zootzoot/attack-notification
    fatal: 'zootzoot/attack-notification' does not appear to be a git repository
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

    abhi@ABHI-PC /f/Code/0ad/0ad (attack-notification)

    Unable to pull in your changes :(

    ----------

    ok got it, no slash there

  7. ok, yeah that makes sense. Then there is no need for extra code to expose yet another global function for a functionality that isnt really global but specific to an entity.

    2 questions here :

    First, my local repo was cloned from your repo, so a git checkout attack-notification should suffice to pull in your latest JS changes ? Or rather a

    git pull I guess

    Secondly.I ll need to figure out how to access the minimap object from CCmpMinimap. Need to look at the code in other components to see if they access GUI objects using CGuiManager or something similar

  8. Right, yeah I ll work on it today. Can you tell me where in Attack.js you will be putting the PingMinimap calls so I can put them there and test after I have moved the PingMinimap function to the ICmpMinimap interface.

    So just to clear it in my big confused head, we are doing this :

    but then instead of triggering it from messages.js once, together with the sound, it would be triggered directly by the AttackDetection.js component every time a unit is hit

    because AttackDetection.js needs to notify the minimap much more frequently than the sound needs to be played. So if an unit has died, other units in the area may still be under attack but we choose to no longer emit a sound as the user's attention has (hopefully!) already been drawn to the battle.

    But we choose to notify the user on the minimap about these other units as all units under attack should be pinging in the minimap. This is to ensure that the user does not think that the battle has ended and go back to tending the economy !

    Also can't AttackDetection.js call the currently exposed global PingMinimap function. If I make the change will I be able to revert to the current situation of the files later using the commit hash code ?

  9. Ok thanks, will do.

    There is 1 thing I noticed with 2 Ashoka units on the map, that the blinking continues even if the unit is not under attack anymore. Thats because I have made it blink for a certain number of frames before shutting down. So if the frame rate is high it will probably stop sooner. That can be fixed by using the number of game turns instead.

    I wonder though, if the units should keep on blinking after the player has moved it away from peril. Then we would need a attack stopped notification from the JS sim code. Guess its not worth it.


  10. abhi@ABHI-PC /f/Code/0ad/0ad (attack-notification)
    $ git remote add k776-master https://github.com/0ad/0ad.git
    abhi@ABHI-PC /f/Code/0ad/0ad (attack-notification)
    $ git remote -v
    k776-master https://github.com/0ad/0ad.git (fetch)
    k776-master https://github.com/0ad/0ad.git (push)
    origin https://github.com/laxmax/0ad.git (fetch)
    origin https://github.com/laxmax/0ad.git (push)
    abhi@ABHI-PC /f/Code/0ad/0ad (attack-notification)
    $

    oh ok, just read your post. So ok it looks similar. Now for the pulling part. If I pull his changes in, then it will merge into my current branch(attack-notification) automatically keeping all my changes in Minimap.cpp etc ?

  11. Thanks.

    Ok, I just opened Atlas and saved a blank map.

    Then started in pyrogenesis and got a bunch of JS errors :


    ERROR: JavaScript error: simulation/ai/qbot-wc/qbot.js line 68 TypeError: myKeyEntities.toEntityArray()[0] is undefined ([object Object],[object Object])@simulation/ai/qbot-wc/qbot.js:68 ([object Object],[object Object])@simulation/ai/common-api-v3/base.js:42 @:0
    ERROR: JavaScript error: gui/session/session.js line 105 TypeError: Engine.GetSimRate is not a function init((void 0),(void 0))@gui/session/session.js:105
    ERROR: GUI page 'page_session.xml': Failed to call init() function
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(142)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(46)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(48)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(4)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(4)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(4)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(4)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(3)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    WARNING: JavaScript warning: simulation/ai/qbot-wc/qbot.js line 287 reference to undefined property this.pathInfo
    ERROR: JavaScript error: simulation/ai/qbot-wc/qbot.js line 287 TypeError: this.pathInfo is undefined ()@simulation/ai/qbot-wc/qbot.js:287 ([object Object],[object Array])@simulation/ai/qbot-wc/qbot.js:90 ([object Object])@simulation/ai/qbot-wc/qbot.js:156 ([object Object],[object Object])@simulation/ai/common-api-v3/base.js:66 @:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(10)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined updateMenuPosition(2)@gui/session/menu.js:69 onTick()@gui/session/session.js:287 __eventhandler0 (tick)([object Object])@sn tick:0
    ERROR: JavaScript error: gui/session/menu.js line 69 TypeError: menu is undefined up

    Should we be catching an empty map and exiting ?

×
×
  • Create New...