Beispiel #1
0
 public void Close()
 {
     log("", "Close");
     try {
         m_Fleet.remove(m_Class, m_Enforcer);
         StateTracker.getInstance().removeFleetIfEmpty(m_FleetID, m_OwnerType);
     } catch (NullReferenceException e) {
         log("Error: " + e, "Close", Logger.severity.ERROR);
     }
     m_Fleet    = null;
     m_Enforcer = null;
     m_Logger   = null;
 }
Beispiel #2
0
        public GridOwner(GridEnforcer ge)
        {
            m_Enforcer = ge;
            m_Logger   = new Logger(m_Enforcer.Grid.EntityId.ToString(), "GridOwner");
            log("Loaded into new grid", "ctr");

            // the grid will update ownership later b/c this is initialized with the grid,
            // and the grid doesn't have any blocks yet
            m_OwnerType = OWNER_TYPE.UNOWNED;
            m_FleetID   = getFleetID();

            m_Class = ge.Class;
            m_Fleet = getFleet();
            m_Fleet.add(m_Class, ge);
        }
Beispiel #3
0
        public GridOwner(GridEnforcer ge)
        {
            m_Enforcer = ge;
            m_Logger = new Logger(m_Enforcer.Grid.EntityId.ToString(), "GridOwner");
            log("Loaded into new grid", "ctr");

            // the grid will update ownership later b/c this is initialized with the grid,
            // and the grid doesn't have any blocks yet
            m_OwnerType = OWNER_TYPE.UNOWNED;
            m_FleetID = getFleetID();

            m_Class = ge.Class;
            m_Fleet = getFleet();
            m_Fleet.add(m_Class, ge);
        }
Beispiel #4
0
        /// <summary>
        /// Gets the fleet this grid belongs to
        /// </summary>
        /// <returns></returns>
        public FactionFleet getFleet()
        {
            if (GridEnforcer.StateTracker != null)
            {
                log("retreiving fleet from state tracker", "getFleet");
                FactionFleet loadedFleet = GridEnforcer.StateTracker.getFleet(m_FleetID, OwnerType);

                if (loadedFleet != null)
                {
                    m_StateLoaded = true;
                    return(loadedFleet);
                }
                else
                {
                    log("state tracker returned null fleet", "getFleet",
                        Logger.severity.ERROR);
                }
            }
            else
            {
                log("null state, probably initing", "getFleet");
            }

            log("failed to load fleet from state tracker", "getFleet");
            m_StateLoaded = false;

            if (m_Fleet == null)
            {
                log("creating temporary untracked fleet", "getFleet");
                return(new FactionFleet(m_FleetID, OwnerType));
            }
            else
            {
                log("returning existing stored fleet", "getFleet");
                return(m_Fleet);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Figures out who owns the grid now
        /// </summary>
        /// <returns>Returns true if the owner has changed</returns>
        public bool reevaluateOwnership(List <long> bigOwners)
        {
            log("Reevaluating owner", "reevaluateOwnership");
            bool changed = false;

            // = Get new ownership details
            OWNER_TYPE newType      = OWNER_TYPE.UNOWNED;
            long       newPlayerID  = 0;
            long       newFactionID = 0;

            if (bigOwners.Count == 0)
            {
                newType = OWNER_TYPE.UNOWNED;
            }
            else
            {
                if (bigOwners.Count > 1)
                {
                    log("bigOwner tie! Using first owner.",
                        "reevaluateOwnership", Logger.severity.WARNING);
                }

                newPlayerID = bigOwners[0];
                IMyFaction fac = MyAPIGateway.Session.Factions.TryGetPlayerFaction(newPlayerID);

                // Is the player solo?
                if (fac == null)
                {
                    newType = OWNER_TYPE.PLAYER;
                }
                else
                {
                    newType      = OWNER_TYPE.FACTION;
                    newFactionID = fac.FactionId;
                }
            }

            long newFleetID = calcFleetID(newType, newPlayerID, newFactionID);

            // = Effect changes
            if (m_OwnerType != newType)
            {
                log(String.Format("type changed from {0} => {1}",
                                  m_OwnerType, newType), "reevaluateOwnership");
                m_OwnerType = newType;
                changed     = true;
            }

            if (m_PlayerID != newPlayerID)
            {
                log(String.Format("player changed from {0} => {1}",
                                  m_PlayerID, newPlayerID), "reevaluateOwnership");
                m_PlayerID = newPlayerID;
                changed    = true;
            }

            if (m_FactionID != newFactionID)
            {
                log(String.Format("faction changed from {0} => {1}",
                                  m_FactionID, newFactionID), "reevaluateOwnership");
                m_FactionID = newFactionID;
                changed     = true;
            }

            // If the fleet tracking ID has changed, or if we've got a temp fleet, update the fleet
            if ((m_FleetID != newFleetID) || (!m_StateLoaded && GridEnforcer.StateTracker != null))
            {
                log(String.Format("Doing fleet change {0} => {1}, was temp? {2}",
                                  m_FleetID, newFleetID, !m_StateLoaded), "reevaluateOwnership");

                // Remove the grid from the previous fleet
                if (m_Fleet == null)
                {
                    log("Fleet is null", "reevaluateOwnership", Logger.severity.ERROR);
                }
                else
                {
                    m_Fleet.remove(m_Class, m_Enforcer);
                }

                m_FleetID = newFleetID;
                m_Fleet   = getFleet();

                // Add the grid to the new fleet
                if (m_Fleet == null)
                {
                    log("Failed to get new fleet for " + m_FleetID,
                        "reevaluateOwnership", Logger.severity.ERROR);
                }
                else
                {
                    m_Fleet.add(m_Class, m_Enforcer);
                }

                changed = true;
            }

            if (changed)
            {
                return(true);
            }
            else
            {
                log(String.Format("no change, owner: {0} {1}", m_OwnerType, m_FleetID),
                    "reevaluateOwnership");
                return(false);
            }
        }
Beispiel #6
0
        /// <summary>
        /// Figures out who owns the grid now
        /// </summary>
        /// <returns>Returns true if the owner has changed</returns>
        public bool reevaluateOwnership(List<long> bigOwners)
        {
            log("Reevaluating owner", "reevaluateOwnership");
            bool changed = false;

            // = Get new ownership details
            OWNER_TYPE newType = OWNER_TYPE.UNOWNED;
            long newPlayerID = 0;
            long newFactionID = 0;

            if (bigOwners.Count == 0) {
                newType = OWNER_TYPE.UNOWNED;

            } else {
                if (bigOwners.Count > 1) {
                    log("bigOwner tie! Using first owner.",
                        "reevaluateOwnership", Logger.severity.WARNING);
                }

                newPlayerID = bigOwners[0];
                IMyFaction fac = MyAPIGateway.Session.Factions.TryGetPlayerFaction(newPlayerID);

                // Is the player solo?
                if (fac == null) {
                    newType = OWNER_TYPE.PLAYER;
                } else {
                    newType = OWNER_TYPE.FACTION;
                    newFactionID = fac.FactionId;
                }
            }

            long newFleetID = calcFleetID(newType, newPlayerID, newFactionID);

            // = Effect changes
            if (m_OwnerType != newType) {
                log(String.Format("type changed from {0} => {1}",
                    m_OwnerType, newType), "reevaluateOwnership");
                m_OwnerType = newType;
                changed = true;
            }

            if (m_PlayerID != newPlayerID) {
                log(String.Format("player changed from {0} => {1}",
                    m_PlayerID, newPlayerID), "reevaluateOwnership");
                m_PlayerID = newPlayerID;
                changed = true;
            }

            if (m_FactionID != newFactionID) {
                log(String.Format("faction changed from {0} => {1}",
                    m_FactionID, newFactionID), "reevaluateOwnership");
                m_FactionID = newFactionID;
                changed = true;
            }

            // If the fleet tracking ID has changed, or if we've got a temp fleet, update the fleet
            if ((m_FleetID != newFleetID) || (!m_StateLoaded && GridEnforcer.StateTracker != null)) {
                log(String.Format("Doing fleet change {0} => {1}, was temp? {2}",
                    m_FleetID, newFleetID, !m_StateLoaded), "reevaluateOwnership");

                // Remove the grid from the previous fleet
                if (m_Fleet == null) {
                    log("Fleet is null", "reevaluateOwnership", Logger.severity.ERROR);
                } else {
                    m_Fleet.remove(m_Class, m_Enforcer);
                }

                m_FleetID = newFleetID;
                m_Fleet = getFleet();

                // Add the grid to the new fleet
                if (m_Fleet == null) {
                    log("Failed to get new fleet for " + m_FleetID,
                        "reevaluateOwnership", Logger.severity.ERROR);
                } else {
                    m_Fleet.add(m_Class, m_Enforcer);
                }

                changed = true;
            }

            if (changed) {
                return true;
            } else {
                log(String.Format("no change, owner: {0} {1}", m_OwnerType, m_FleetID),
                    "reevaluateOwnership");
                return false;
            }
        }
Beispiel #7
0
 public void Close()
 {
     log("", "Close");
     try {
         m_Fleet.remove(m_Class, m_Enforcer);
         StateTracker.getInstance().removeFleetIfEmpty(m_FleetID, m_OwnerType);
     } catch (NullReferenceException e) {
         log("Error: " + e, "Close", Logger.severity.ERROR);
     }
     m_Fleet = null;
     m_Enforcer = null;
     m_Logger = null;
 }