empireSelectionMapView.py (6320B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\login\charcreation_new\steps\empireSelection\empireSelectionMapView.py 2 import math 3 from collections import defaultdict 4 import geo2 5 import evecamera 6 import trinity 7 import uthread 8 from carbonui import uiconst 9 from carbonui.uianimations import animations 10 from characterdata import schools 11 from eve.client.script.ui import eveColor 12 from eve.client.script.ui.login.charcreation_new import charCreationSignals 13 from eve.client.script.ui.login.charcreation_new.steps.empireSelection import empireSelectionConst 14 from eve.client.script.ui.login.charcreation_new.steps.empireSelection.empireSelectionConst import FACTIONSELECT_ANIMATION_DURATION, ENTRY_ANIMATION_DURATION 15 from eve.client.script.ui.login.charcreation_new.steps.empireSelection.empireSelectionMapViewFilter import EmpireSelectionMapFilter 16 from eve.client.script.ui.login.charcreation_new.steps.empireSelection.empireSelectipMapViewNavigation import EmpireSelectionMapViewNavigation 17 from eve.client.script.ui.login.charcreation_new.steps.empireSelection.schoolBracket import SchoolBracket 18 from eve.client.script.ui.shared.mapView.mapView import MapView 19 from eve.client.script.ui.shared.mapView.mapViewFiltered import MapViewFiltered 20 from eve.client.script.ui.shared.maps import mapcommon 21 from eve.common.lib import appConst 22 from operations.common.warpSites import GetOperationSites 23 24 class EmpireSelectionMapView(MapViewFiltered): 25 mapViewID = 'EmpireSelectionMapView' 26 mapFilterID = mapcommon.STARMODE_FACTIONEMPIRE 27 cameraID = evecamera.CAM_EMPIRESELECTIONMAP 28 default_bgColor = eveColor.BLACK 29 30 def ApplyAttributes(self, attributes): 31 super(EmpireSelectionMapView, self).ApplyAttributes(attributes) 32 self.animEntry = attributes.animEntry 33 self.connect_signals() 34 self.bracketsByFactionID = None 35 36 def Close(self, *args, **kwds): 37 try: 38 self.disconnect_signals() 39 finally: 40 super(EmpireSelectionMapView, self).Close(*args, **kwds) 41 42 def connect_signals(self): 43 charCreationSignals.onEmpireFactionSelected.connect(self.OnEmpireFactionSelected) 44 charCreationSignals.onStepSwitched.connect(self.OnStepSwitched) 45 46 def disconnect_signals(self): 47 charCreationSignals.onEmpireFactionSelected.disconnect(self.OnEmpireFactionSelected) 48 charCreationSignals.onStepSwitched.disconnect(self.OnStepSwitched) 49 50 def OnStepSwitched(self, oldStepID, newStepID): 51 for brackets in self.bracketsByFactionID.values(): 52 for bracket in brackets: 53 animations.FadeOut(bracket, duration=0.6) 54 55 self.camera.AnimZoomIn() 56 57 def InitCameraFocus(self, zoomToItem = True, mapFilterID = None): 58 duration = ENTRY_ANIMATION_DURATION if self.animEntry else None 59 uthread.new(self.camera.AnimEntry, self.GetCenterOfMassForAllFactions(), duration) 60 61 def LayoutChangeCompleted(self, changedSolarSystems): 62 super(EmpireSelectionMapView, self).LayoutChangeCompleted(changedSolarSystems) 63 if not self.bracketsByFactionID: 64 self.ConstructBrackets() 65 66 def OnEmpireFactionSelected(self, factionID): 67 uthread.new(self.LookAtFaction, factionID) 68 69 def ConstructBrackets(self): 70 self.bracketsByFactionID = defaultdict(list) 71 for raceID, schoolIDs in schools.get_all_schools_by_race().iteritems(): 72 for schoolID in schoolIDs: 73 factionID = appConst.factionByRace.get(raceID, None) 74 if factionID: 75 bracket = self._ConstructBracket(schoolID, factionID) 76 self.bracketsByFactionID[factionID].append(bracket) 77 78 def _ConstructBracket(self, schoolID, factionID): 79 systemID = GetOperationSites().get_solarsystem_id_from_school(schoolID) 80 if systemID: 81 system = self.layoutHandler.nodesBySolarSystemID.get(systemID, None) 82 return SchoolBracket(parent=self.infoLayer, scene=self.scene, curveSet=self.sceneContainer.bracketCurveSet, system=system, schoolID=schoolID, factionID=factionID) 83 84 def ConstructMapNavigation(self): 85 self.mapNavigation = EmpireSelectionMapViewNavigation(parent=self, align=uiconst.TOALL, state=uiconst.UI_NORMAL, mapView=self) 86 87 def _LoadAllMarkers(self): 88 pass 89 90 def _GetDefaultInterestID(self): 91 return None 92 93 def ReconstructMyLocationMarker(self): 94 pass 95 96 def ShowMyHomeStation(self): 97 pass 98 99 def LoadAllJumpBridges(self): 100 pass 101 102 def GetActiveFilter(self): 103 return EmpireSelectionMapFilter() 104 105 def ConstructStarfield(self): 106 self.mapScene.starfield = trinity.Load('res:/dx9/scene/starfield/spritestars.red') 107 self.mapScene.starfield.maxDist = 500 108 self.mapScene.starfield.minDist = 100 109 110 def IsAbstractModeActive(self): 111 return False 112 113 def GetCenterOfMassForFaction(self, factionID): 114 positions = [ bracket.GetPosition() for bracket in self.bracketsByFactionID[factionID] ] 115 return self._GetCenterOfMass(positions) 116 117 def GetCenterOfMassForAllFactions(self): 118 starNodes = self.layoutHandler.nodesBySolarSystemID.values() 119 positions = [ starNode.position for starNode in starNodes if starNode.system.factionID in empireSelectionConst.EMPIRE_FACTIONIDS ] 120 return self._GetCenterOfMass(positions) 121 122 def _GetCenterOfMass(self, positions): 123 center = (0, 0, 0) 124 for position in positions: 125 center = geo2.Vec3Add(center, position) 126 127 return geo2.Vec3Scale(center, 1.0 / len(positions)) 128 129 def LookAtFaction(self, factionID): 130 atPos = self.GetCenterOfMassForFaction(factionID) 131 eyePos = geo2.Vec3Add(atPos, geo2.Vec3Scale(self.camera.GetLookAtDirection(), 22000)) 132 animations.StopAllAnimations(self.camera) 133 animations.MorphVector3(self.camera, 'atPosition', self.camera.atPosition, atPos, duration=FACTIONSELECT_ANIMATION_DURATION) 134 animations.MorphVector3(self.camera, 'eyePosition', self.camera.eyePosition, eyePos, duration=FACTIONSELECT_ANIMATION_DURATION, sleep=True) 135 animations.MorphScalar(self.camera, 'yaw', self.camera.yaw, self.camera.yaw + 2 * math.pi, duration=500.0, curveType=uiconst.ANIM_LINEAR, loops=uiconst.ANIM_REPEAT)