Skip to content

Commit

Permalink
Split the functions exported by Common into child modules
Browse files Browse the repository at this point in the history
Updated scripts to use new common module structure
Initial work on WeaponHelper module
  • Loading branch information
kg committed Nov 28, 2010
1 parent c627359 commit ea8fc9b
Show file tree
Hide file tree
Showing 26 changed files with 1,139 additions and 425 deletions.
106 changes: 11 additions & 95 deletions ActiveTanker/activetanker.py
@@ -1,5 +1,7 @@
import shootblues
from shootblues.common import forceStartService, forceStopService, log, SafeTimer
from shootblues.common import log
from shootblues.common.eve import SafeTimer, findModule, getModuleAttributes, activateModule
from shootblues.common.service import forceStart, forceStop
import service
import json
import base
Expand All @@ -8,8 +10,7 @@

prefs = {}
serviceInstance = None

ActionThreshold = 20000000L
serviceRunning = False

def getPref(key, default):
global prefs
Expand Down Expand Up @@ -73,118 +74,33 @@ def updateHealth(self):
self.repairIfNeeded("structure")

def repairIfNeeded(self, repairType):
module = self.findModule(repairType)
module = self.findRepairModule(repairType)
if module:
attributeName = RepairTypes[repairType]["attributeName"]
repairAmount = self.getModuleAttributes(module)[attributeName]
repairAmount = getModuleAttributes(module)[attributeName]
threshold = getattr(self, repairType + "Max") - repairAmount
current = getattr(self, repairType)
if current < threshold:
self.pulseModule(module)
activateModule(module, pulse=True)

def findModule(self, repairType):
def findRepairModule(self, repairType):
groupName = RepairTypes.get(repairType, {}).get("groupName", None)
if not groupName:
log("Invalid repair module type: %r", repairType)
return None

shipui = uicore.GetLayer("l_shipui")
godma = eve.LocalSvc("godma")

if not shipui:
return None
if not getattr(shipui, "sr", None):
return
if not getattr(shipui.sr, "modules", None):
return

for moduleId, module in shipui.sr.modules.items():
item = godma.GetItem(moduleId)
if not item:
continue

if cfg.invgroups.Get(item.groupID).name != groupName:
continue

if not hasattr(module, "sr"):
continue

return module

return None

def getModuleAttributes(self, module):
moduleInfo = module.sr.moduleInfo
moduleName = cfg.invtypes.Get(moduleInfo.typeID).name

def_effect = getattr(module, "def_effect", None)
if not def_effect:
log("Module %r has no default effect", moduleName)
return None

result = {}

attribs = cfg.dgmtypeattribs.get(moduleInfo.typeID, None)
if not attribs:
return result

for attrib in attribs:
attribName = cfg.dgmattribs.get(attrib.attributeID, None).attributeName
result[attribName] = attrib.value

return result

def pulseModule(self, module):
moduleInfo = module.sr.moduleInfo
moduleName = cfg.invtypes.Get(moduleInfo.typeID).name

def_effect = getattr(module, "def_effect", None)
if not def_effect:
log("Module %s cannot be activated", moduleName)
return

if def_effect.isActive:
return

if module.state == uix.UI_DISABLED:
log("Module %s is disabled", moduleName)
return

onlineEffect = moduleInfo.effects.get("online", None)
if onlineEffect and not onlineEffect.isActive:
log("Module %s is not online", moduleName)
return

timestamp = blue.os.GetTime()
if abs(self.__lastAction - timestamp) <= ActionThreshold:
return

self.__lastAction = timestamp
log("Activating %s", moduleName)

oldautorepeat = getattr(module, "autorepeat", False)
if oldautorepeat:
# Temporarily disable auto-repeat for this module so that we can just pulse it once
module.SetRepeat(0)

try:
module.Click()
except Exception, e:
log("Pulsing module %s failed: %r", moduleName, e)
finally:
if oldautorepeat:
module.SetRepeat(oldautorepeat)
return findModule(groupName=groupName)

def initialize():
global serviceRunning, serviceInstance
serviceRunning = True
serviceInstance = forceStartService("activetanker", ActiveTankerSvc)
serviceInstance = forceStart("activetanker", ActiveTankerSvc)

def __unload__():
global serviceRunning, serviceInstance
if serviceInstance:
serviceInstance.disabled = True
serviceInstance = None
if serviceRunning:
forceStopService("activetanker")
forceStop("activetanker")
serviceRunning = False
25 changes: 21 additions & 4 deletions AutoTargeter/AutoTargeterConfig.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions AutoTargeter/AutoTargeterConfig.cs
Expand Up @@ -22,6 +22,7 @@ public AutoTargeterConfig (AutoTargeter script)
Prefs = new IBoundMember[] {
BoundMember.New(() => TargetNeutralPlayers.Checked),
BoundMember.New(() => TargetHostilePlayers.Checked),
BoundMember.New(() => TargetFriendlyPlayers.Checked),
BoundMember.New(() => TargetHostileNPCs.Checked),
BoundMember.New(() => ReservedTargetSlots.Value)
};
Expand Down
27 changes: 22 additions & 5 deletions AutoTargeter/autotargeter.py
@@ -1,5 +1,7 @@
import shootblues
from shootblues.common import forceStartService, forceStopService, log, SafeTimer, MainThreadInvoker, getFlagName, getNamesOfIDs
from shootblues.common import log
from shootblues.common.eve import SafeTimer, MainThreadInvoker, getFlagName, getNamesOfIDs
from shootblues.common.service import forceStart, forceStop
import service
import uix
import json
Expand All @@ -11,6 +13,7 @@

prefs = {}
serviceInstance = None
serviceRunning = False

try:
from shootblues.enemyprioritizer import getPriority
Expand Down Expand Up @@ -151,10 +154,17 @@ def filterTargets(self, ids):
elif flag == "StandingNeutral":
if not getPref("TargetNeutralPlayers", False):
continue
elif ((flag == "StandingGood") or
(flag == "StandingHigh") or
(flag == "SameGang") or
(flag == "SameFleet") or
(flag == "Alliance") or
(flag == "SameCorp")):
if not getPref("TargetFriendlyPlayers", False):
continue

distance = ballpark.DistanceBetween(eve.session.shipid, id)
if distance > maxTargetRange:
log("distance %r > %r", distance, maxTargetRange)
continue

result.append(id)
Expand Down Expand Up @@ -260,7 +270,14 @@ def DoBallsAdded(self, lst, **kwargs):
(flag == "AtWarCanFight")):
self.__potentialTargets.append(slimItem.itemID)
elif flag == "StandingNeutral":
self.__potentialTargets.append(slimItem.itemID)
self.__potentialTargets.append(slimItem.itemID)
elif ((flag == "StandingGood") or
(flag == "StandingHigh") or
(flag == "SameGang") or
(flag == "SameFleet") or
(flag == "Alliance") or
(flag == "SameCorp")):
self.__potentialTargets.append(slimItem.itemID)

def DoBallRemove(self, ball, slimItem, *args, **kwargs):
if slimItem and (slimItem.itemID in self.__potentialTargets):
Expand Down Expand Up @@ -290,13 +307,13 @@ def OnTarget(self, what, tid=None, reason=None):
def initialize():
global serviceRunning, serviceInstance
serviceRunning = True
serviceInstance = forceStartService("autotargeter", AutoTargeterSvc)
serviceInstance = forceStart("autotargeter", AutoTargeterSvc)

def __unload__():
global serviceRunning, serviceInstance
if serviceInstance:
serviceInstance.disabled = True
serviceInstance = None
if serviceRunning:
forceStopService("autotargeter")
forceStop("autotargeter")
serviceRunning = False
67 changes: 65 additions & 2 deletions BroadcastHelper/BroadcastHelperConfig.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit ea8fc9b

Please sign in to comment.