Official Fulqrum Publishing forum

Official Fulqrum Publishing forum (http://forum.fulqrumpublishing.com/index.php)
-   FMB, Mission & Campaign builder Discussions (http://forum.fulqrumpublishing.com/forumdisplay.php?f=203)
-   -   Actor keys help (http://forum.fulqrumpublishing.com/showthread.php?t=30604)

salmo 03-20-2012 06:35 AM

Actor keys help
 
I'm trying to cycle through the battle actors to see if a particular actor type exists, however, the actors don't seem to be registering their keys correctly. The code below constantly return zero in chat irrespective of how many actors are in the battle. Any ideas?

code removed by author

FG28_Kodiak 03-20-2012 06:44 AM

Aha you add the keys of a empty dictonary to a list and wondering why no members is in there?

Code:

    private Dictionary<String, AiActor> allActors = new Dictionary<String, AiActor>();

    public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
    {
        base.OnActorCreated(missionNumber, shortName, actor);

        allActors.Add(shortName, actor); //<=== Added to feed the dictionary

        #region actor keys testing
        List<string> keys = new List<string>(allActors.Keys);
        sendChatMessageTo(-1, "Keys count=" + keys.Count.ToString(), null);
        #endregion
    }


salmo 03-20-2012 08:30 AM

Thankyou again Kodiak. Sometimes you can look & look & can't see the wood for the trees. :oops:

Smokeynz 03-20-2012 11:51 PM

@salmo, If you inspecting the actors to try and test for if they exist in the mission, using this I think we may bypass the null points I keep striking in other thread about testing actors for null.

In the add to list, you may need missionnumber aswell for repeats of the same mission where you will get the same actor shortname repeated. Then look for all 3 parameters.

btw I've just been working on list handling and found a simple way to find the index number of a line listing, with that you can ask for the item contents or delete the line etc.

int indexnm; // declare an int for the index number

Then search for bob as actor name in the example following, I havent done it yet, but im sure you could also look for mission,shortname and actor in one line since that is specific in one case only where as you might find several "bob" references.

indexnm = list.FindIndex(r => r.shortName.Equals("bob"));

Once you have the indexnumber you can report/manupulate the info and any other entry on that line by refering to the indexnumber

sendChatMessageTo(-1, "shortName: " + list[indexnm].shortName);

FG28_Kodiak 03-21-2012 04:35 AM

Quote:

Originally Posted by Smokeynz (Post 401106)
indexnm = list.FindIndex(r => r.shortName.Equals("bob"));

You will get nothing:
Equals compares the complete string, you should use Contains(..).

Smokeynz 03-21-2012 09:28 AM

Oddly, it works:grin:

this is an example, but I am pulling and passing a number of things now

some declarations
Code:


bool timeIO;// = true; //time indicator switch on/off
double timevalue;
double timeindicator;

after I grab data from external text file configlists
i then find the data, and parse to game
Code:

idxIO = ConfigList.FindIndex(r => r.ConfigName.Equals("timeIO"));
idxTV = ConfigList.FindIndex(s => s.ConfigName.Equals("timevalue"));
double.TryParse(ConfigList[idxTV].ConfigValue, out timevalue);

timeIO is set as "ON" or "OFF" in config.
Im trying to set as realtime update, the only bit not working. at the moment it loads on start and stop of mission.

Code:


 timeIO = (ConfigList[idxIO].ConfigValue == "ON" ? true : false);       
        if (timeIO == true)
        {
            if (Time.current() >= timeindicator)
            {
                ScreenMsg(-1, "Elapsed Time:Min:" + timeindicator / 60 + " Secs:" + timeindicator + " Ticks:" + timeindicator * 30);
            }               
        }
        if (Time.current() >= timeindicator)
        {           
            timeindicator = timeindicator + timevalue;
        }



All times are GMT. The time now is 03:42 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.