NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)