Worked on City Maintenance Console

Implementation of SUI windows and menus
This commit is contained in:
CharonInferar
2014-04-24 14:10:45 +02:00
parent 9da8803100
commit 83ae55ec7c
8 changed files with 534 additions and 24 deletions
@@ -2,6 +2,7 @@ import sys
from services.housing import HouseTemplate
from engine.resources.scene import Point3D
def setup(core):
<<<<<<< HEAD
houseTemplate = HouseTemplate("object/tangible/deed/city_deed/shared_cityhall_tatooine_deed.iff", "object/building/player/city/shared_cityhall_tatooine.iff", 5)
@@ -25,5 +25,9 @@ def setup(core, object):
city_vote_terminal = core.objectService.createChildObject(object, 'object/tangible/terminal/shared_terminal_city_vote.iff', Point3D(float(0), float(1.85), float(-8.5)), Quaternion(float(1), float(1), float(1), float(0)),3)
>>>>>>> upstream/master
#cityterminal.setAttachment('housing_parentstruct', object)
cityterminal.setAttachment('radial_filename', 'terminal/city_maintenance_terminal')
sign = core.objectService.createChildObject(object, 'object/tangible/sign/player/shared_house_address.iff', -7.39, 2.36, 2, -1, 0, -1)
object.setAttachment("structureSign", sign)
return
@@ -1,4 +1,5 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'terminal/city_maintenance_terminal')
return
@@ -3,32 +3,37 @@ from protocol.swg import ResourceListForSurveyMessage
from services.sui.SUIService import MessageBoxType
from services.sui.SUIWindow import Trigger
from java.util import Vector
import main.NGECore
import sys
def createRadial(core, owner, target, radials):
#(byte parentId, short optionId, byte optionType, String description)
radials.clear()
radials.add(RadialOptions(0, 7, 0, 'Examine'))
radials.add(RadialOptions(0, 78, 0, '@city/city:city_management @player_structure:management'))
radials.add(RadialOptions(0, 117, 0, '@city/city:city_info @player_structure:permissions'))
radials.add(RadialOptions(2, 50, 0, '@city/city:city_name_new_t'))
radials.add(RadialOptions(2, 127, 0, '@city/city:city_register'))
radials.add(RadialOptions(2, 125, 0, '@city/city:unzone'))
radials.add(RadialOptions(2, 171, 0, '@city/city:city_militia'))
radials.add(RadialOptions(2, 173, 0, '@city/city:treasury_taxes'))
radials.add(RadialOptions(2, 174, 0, '@city/city:treasury_withdraw'))
radials.add(RadialOptions(2, 175, 0, '@city/city:city_specializations'))
radials.add(RadialOptions(0, 216, 0, '@city/city:city_management'))
radials.add(RadialOptions(0, 226, 0, '@city/city:city_info'))
radials.add(RadialOptions(0, 227, 0, '@city/city:remove_trainers'))
radials.add(RadialOptions(2, 217, 0, '@city/city:city_name_new_t'))
radials.add(RadialOptions(2, 222, 0, '@city/city:city_register'))
radials.add(RadialOptions(2, 224, 0, '@city/city:unzone'))
radials.add(RadialOptions(2, 218, 0, '@city/city:city_militia'))
radials.add(RadialOptions(2, 219, 0, '@city/city:treasury_taxes'))
radials.add(RadialOptions(2, 221, 0, '@city/city:treasury_withdraw'))
radials.add(RadialOptions(2, 225, 0, '@city/city:city_specializations'))
radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_enter'))
radials.add(RadialOptions(3, 123, 0, '@player_structure:permission_banned'))
radials.add(RadialOptions(3, 121, 0, '@city/city:citizens'))
radials.add(RadialOptions(3, 123, 0, '@city/city:citizens'))
return
def handleSelection(core, owner, target, option):
if option == 128:
playerCity = core.playerCityService.getPlayerCity(owner)
if playerCity==None:
return
if option == 217:
if owner is not None:
core.housingService.createDestroySUIPage(owner,target)
handleSetCityName(core, owner, target, option)
return
if option == 124:
if owner is not None:
@@ -42,9 +47,9 @@ def handleSelection(core, owner, target, option):
if owner is not None:
core.housingService.createRenameSUIPage(owner,target)
return
if option == 127:
if option == 222:
if owner is not None:
core.housingService.declareResidency(owner,target)
handleRegisterMap(core, owner, target, option)
return
if option == 171:
if owner is not None:
@@ -54,21 +59,428 @@ def handleSelection(core, owner, target, option):
if owner is not None:
core.housingService.handleDeleteAllItems(owner,target)
return
if option == 173:
if option == 225:
if owner is not None:
core.housingService.handleFindLostItems(owner,target)
handleSpecialization(core, owner, target, option)
return
if option == 174:
if option == 221:
if owner is not None:
core.housingService.handleSearchForItems(owner,target)
handleWithdrawal(core, owner, target, option)
return
if option == 121:
if owner is not None:
core.housingService.handlePermissionEntry(owner,target)
handleCitizenList(core, owner, target, option)
return
if option == 123:
if owner is not None:
core.housingService.handlePermissionBan(owner,target)
handleCitizenList(core, owner, target, option)
return
def handleSetCityName(core, owner, target, option):
window = core.suiService.createInputBox(2,'@player_structure:structure_status','@player_structure:structure_name_prompt', owner, target, 0)
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, setnameCallBack)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, setnameCallBack)
core.suiService.openSUIWindow(window);
return
def setnameCallBack(owner, window, eventType, returnList):
if returnList.size()==0:
return
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
playerCity.setCityName(returnList.get(0))
owner.sendSystemMessage('@city/city:name_changed', 0)
return
def handleTaxes(core, owner, target, option):
window = core.suiService.createInputBox(2,'@player_structure:structure_status','@player_structure:structure_name_prompt', owner, target, 0)
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, setnameCallBack)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, setnameCallBack)
core.suiService.openSUIWindow(window);
return
def setTaxesCallBack(owner, window, eventType, returnList):
if returnList.size()==0:
return
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
playerCity.setCityName(returnList.get(0))
owner.sendSystemMessage('@city/city:name_changed', 0)
return
def handleWithdrawal(core, owner, target, option):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
window = core.suiService.createSUIWindow("Script.transfer", owner, target, 10)
window.setProperty("bg.caption.lblTitle:Text", "@city/city:treasury_withdraw_subject")
window.setProperty("Prompt.lblPrompt:Text", "@city/city:treasury_withdraw_prompt" + "\n \n @city/city:treasury_status : %s" % playerCity.getCityTreasury())
window.setProperty("msgPayMaintenance", "transaction.txtInputFrom");
window.setProperty("transaction.lblFrom:Text", "@city/city:treasury_balance_t");
window.setProperty("transaction.lblTo:Text", "@city/city:treasury_withdraw");
window.setProperty("transaction.lblFrom", "@city/city:treasury_balance_t");
window.setProperty("transaction.lblTo", "@city/city:treasury_withdraw");
window.setProperty("transaction.lblStartingFrom:Text", '%s' % playerCity.getCityTreasury());
window.setProperty("transaction.lblStartingTo:Text", '0');
window.setProperty("transaction:InputFrom", "555555");
window.setProperty("transaction:InputTo", "666666");
window.setProperty("transaction:txtInputFrom", '%s' % playerCity.getCityTreasury());
window.setProperty("transaction:txtInputTo", "1");
window.setProperty("transaction.txtInputFrom:Text", '%s' % playerCity.getCityTreasury());
window.setProperty("transaction.txtInputTo:Text", "" + "0");
window.setProperty("transaction.ConversionRatioFrom", "1");
window.setProperty("transaction.ConversionRatioTo", "0");
window.setProperty("btnOk:visible", "True");
window.setProperty("btnCancel:visible", "True");
window.setProperty("btnOk:Text", "@ok");
window.setProperty("btnCancel:Text", "@cancel");
returnList = Vector()
returnList.add('transaction.txtInputFrom:Text')
returnList.add('ransaction.txtInputTo:Text')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, setWithdrawalCallBack)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, setWithdrawalCallBack)
core.suiService.openSUIWindow(window);
return
def setWithdrawalCallBack(owner, window, eventType, returnList):
if returnList.size()==0:
return
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
playerCity.setCityName(returnList.get(0))
owner.sendSystemMessage('@city/city:name_changed', 0)
return
def handleCitizenList(core, owner, target, option):
window = core.suiService.createSUIWindow('Script.listBox', owner, target, 0);
window.setProperty('bg.caption.lblTitle:Text', '@city/city:citizen_list_t')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:citizen_list_prompt')
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
index = 1;
for citizen in playerCity.getCitizens():
citizenObject = core.objectService.getObject(citizen)
window.addListBoxMenuItem(citizenObject.getCustomName(),index)
index += 1
window.setProperty('btnOk:visible', 'True')
window.setProperty('btnCancel:visible', 'True')
window.setProperty('btnOk:Text', '@ok')
window.setProperty('btnCancel:Text', '@cancel')
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, setCitizenListCallBack)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, setCitizenListCallBack)
core.suiService.openSUIWindow(window);
return
def setCitizenListCallBack(owner, window, eventType, returnList):
#handle waypoint creation to citizen's house
return
def handleRegisterMap(core, owner, target, option):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
if playerCity.getCityRank()<3:
owner.sendSystemMessage('@city/city:cant_register_rank', 0)
return
if owner.getObjectId()!=playerCity.getMayorID():
owner.sendSystemMessage('@city/city:cant_register', 0)
return
# now register it somehow
return
def setRegisterMapCallBack(owner, window, eventType, returnList):
if returnList.size()==0:
return
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
playerCity.setCityName(returnList.get(0))
owner.sendSystemMessage('@city/city:name_changed', 0)
return
def handleSpecialization(core, owner, target, option):
window = core.suiService.createSUIWindow('Script.listBox', owner, target, 0);
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_specs_t')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_specs_d')
window.addListBoxMenuItem('Cloning Lab',0)
window.addListBoxMenuItem('DNA Laboratory',1)
window.addListBoxMenuItem('Encore Performance',2)
window.addListBoxMenuItem('Entertainment District',3)
window.addListBoxMenuItem('Improved Job Market',4)
window.addListBoxMenuItem('Manufacturing Center',5)
window.addListBoxMenuItem('Medical Center',6)
window.addListBoxMenuItem('Research Center',7)
window.addListBoxMenuItem('Sample Rich',8)
window.setProperty('btnOk:visible', 'True')
window.setProperty('btnCancel:visible', 'True')
window.setProperty('btnOk:Text', '@ok')
window.setProperty('btnCancel:Text', '@cancel')
returnList = Vector()
returnList.add('List.lstList:SelectedRow')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, setSpecializationCallBack)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, setSpecializationCallBack)
core.suiService.openSUIWindow(window);
return
def setSpecializationCallBack(owner, window, eventType, returnList):
if returnList.size()==0:
owner.sendSystemMessage('NULL', 0)
return
if returnList.get(0)=='0':
showCloning(owner)
return
if returnList.get(0)=='1':
showDNA(owner)
return
if returnList.get(0)=='2':
showEncore(owner)
return
if returnList.get(0)=='3':
showEntertainment(owner)
return
if returnList.get(0)=='4':
showImproved(owner)
return
if returnList.get(0)=='5':
showManufacturing(owner)
return
if returnList.get(0)=='6':
showMedical(owner)
return
if returnList.get(0)=='7':
showResearch(owner)
return
if returnList.get(0)=='8':
showSample(owner)
return
return
def showCloning(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_cloning')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_cloning_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleCloningCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleCloningCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleCloningCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',1)
showSpecConfirmWindow(owner)
return
def showDNA(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_bm_incubator')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_bm_incubator_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleDNACallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleDNACallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleDNACallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',2)
showSpecConfirmWindow(owner)
return
def showEncore(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_storyteller')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_storyteller_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleEncoreCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleEncoreCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleEncoreCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',3)
showSpecConfirmWindow(owner)
return
def showEntertainment(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_entertainer')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_entertainer_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleEntertainmentCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleEntertainmentCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleEntertainmentCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',4)
showSpecConfirmWindow(owner)
return
def showImproved(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_missions')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_missions_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleImprovedCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleImprovedCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleImprovedCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',5)
showSpecConfirmWindow(owner)
return
def showManufacturing(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_industry')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_industry_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleManufacturingCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleManufacturingCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleManufacturingCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',6)
showSpecConfirmWindow(owner)
return
def showMedical(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_doctor')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_doctor_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleMedicalCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleMedicalCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleMedicalCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',7)
showSpecConfirmWindow(owner)
return
def showResearch(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_research')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_research_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleResearchCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleResearchCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleResearchCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',8)
showSpecConfirmWindow(owner)
return
def showSample(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:city_spec_sample_rich')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:city_spec_sample_rich_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Select")
window.setProperty("btnCancel:Text", "@cancel")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleSampleCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleSampleCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleSampleCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
owner.setAttachment('ChosenCitySpec',9)
showSpecConfirmWindow(owner)
return
def showSpecConfirmWindow(owner):
window = main.NGECore.getInstance().suiService.createSUIWindow('Script.messageBox', owner, owner, 0)
window.setProperty('bg.caption.lblTitle:Text', '@city/city:confirm_spec_t')
window.setProperty('Prompt.lblPrompt:Text', '@city/city:confirm_spec_d')
window.setProperty("btnOk:visible", "True")
window.setProperty("btnCancel:visible", "True")
window.setProperty("btnOk:Text", "Yes")
window.setProperty("btnCancel:Text", "No")
returnList = Vector()
returnList.add('txtInput:LocalText')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleSpecConfirmCallback)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handleSpecConfirmCallback)
main.NGECore.getInstance().suiService.openSUIWindow(window);
return
def handleSpecConfirmCallback(owner, window, eventType, returnList):
playerCity = main.NGECore.getInstance().playerCityService.getPlayerCity(owner)
chosenSpec = owner.getAttachment('ChosenCitySpec')
playerCity.setSpecialisation(chosenSpec)
return
+6
View File
@@ -1226,6 +1226,12 @@ public class DevService implements INetworkDispatch {
<<<<<<< HEAD
inventory.add(deed);
templateString="object/tangible/deed/city_deed/shared_cityhall_tatooine_deed.iff";
deed = (Player_House_Deed)core.objectService.createObject(templateString, planet);
deed.setBMR(15);
deed.setAttributes();
inventory.add(deed);
break;
=======
inventory.add(deed);
+8
View File
@@ -42,6 +42,7 @@ import resources.objects.creature.CreatureObject;
import resources.objects.deed.Player_House_Deed;
import resources.objects.player.PlayerObject;
import resources.objects.tangible.TangibleObject;
import services.playercities.PlayerCity;
import services.sui.SUIWindow;
import services.sui.SUIWindow.SUICallback;
import services.sui.SUIWindow.Trigger;
@@ -133,6 +134,13 @@ public class HousingService implements INetworkDispatch {
building.setBMR(playerHourseDeed.getBMR());
building.setConditionDamage(100);
if (structureTemplate.contains("cityhall")){
PlayerCity newCity = core.playerCityService.addNewPlayerCity(actor);
building.setAttachment("structureCity", newCity.getCityID());
actor.setAttachment("residentCity", newCity.getCityID());
}
// Save structure to DB
//building.createTransaction(core.getBuildingODB().getEnvironment());
//core.getBuildingODB().put(building, Long.class, BuildingObject.class, building.getTransaction());
+30 -2
View File
@@ -59,6 +59,8 @@ public class PlayerCity {
public static int SHUTTLEPORT = 6;
private String cityName = "";
private int cityID = -1;
private Point3D cityCenterPosition = new Point3D(0,0,0);
private int cityRadius = 0;
private int cityRank = 0;
@@ -86,7 +88,7 @@ public class PlayerCity {
public PlayerCity(){}
public PlayerCity(CreatureObject founder){
public PlayerCity(CreatureObject founder, int cityID){
setCityCenterPosition(founder.getPosition());
setCityRadius(150);
@@ -94,7 +96,8 @@ public class PlayerCity {
setMaintenanceFee(1);
setNextCityUpdate(foundationTime+cityUpdateSpan);
setNextElectionDate(foundationTime+legislationPeriod);
citizens.add(founder.getObjectID());
citizens.add(founder.getObjectID());
this.cityID = cityID;
}
public void handleGrantZoning() {
@@ -121,6 +124,7 @@ public class PlayerCity {
public void processCityUpdate() {
// has something changed?
System.out.println("processCityUpdate");
int censusResult = citizens.size();
if (censusResult<5){
setRank(DESERTED); // City is technically not a city anymore
@@ -246,6 +250,7 @@ public class PlayerCity {
public void setSpecialisation(int specialisation) {
this.specialisation = specialisation;
sendSpecUpdateMail(specialisation);
}
public long getMayorID() {
@@ -409,4 +414,27 @@ public class PlayerCity {
this.founded = founded;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public int getCityID() {
return cityID;
}
public void setCityID(int cityID) {
this.cityID = cityID;
}
public void sendSpecUpdateMail(int cityID) {
this.cityID = cityID;
// city_version_update_subject_4
// city_version_update_body_4
}
}
@@ -28,6 +28,14 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import resources.common.OutOfBand;
import resources.common.RGB;
import resources.objects.building.BuildingObject;
import resources.objects.creature.CreatureObject;
import services.sui.SUIWindow;
import services.sui.SUIWindow.SUICallback;
import services.sui.SUIWindow.Trigger;
import engine.resources.objects.SWGObject;
import engine.resources.service.INetworkDispatch;
import engine.resources.service.INetworkRemoteEvent;
import main.NGECore;
@@ -38,6 +46,7 @@ public class PlayerCityService implements INetworkDispatch {
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private Vector<PlayerCity> playerCities = new Vector<PlayerCity>();
private int cityID = 0; // This must be persisted or handled via objectservice somehow
public PlayerCityService(NGECore core) {
this.core = core;
@@ -70,6 +79,47 @@ public class PlayerCityService implements INetworkDispatch {
playerCities.removeAll(Collections.singleton(null));
}
}
public PlayerCity addNewPlayerCity(CreatureObject founder) {
PlayerCity newCity = null;
synchronized(playerCities){
newCity = new PlayerCity(founder,cityID++);
playerCities.add(newCity);
}
newCitySUI1(founder,newCity);
return newCity;
}
public PlayerCity getPlayerCity(CreatureObject citizen) {
PlayerCity foundCity = null;
synchronized(playerCities){
for (PlayerCity city : playerCities){
int id = (int)citizen.getAttachment("residentCity");
if (city.getCityID()==id){
foundCity = city;
}
}
}
return foundCity;
}
public void newCitySUI1(CreatureObject citizen, final PlayerCity newCity) {
final SUIWindow window = core.suiService.createSUIWindow("Script.messageBox", citizen, citizen, 0);
window.setProperty("bg.caption.lblTitle:Text", "@city/city:rank0");
window.setProperty("Prompt.lblPrompt:Text", "@city/city:new_city_body");
window.setProperty("btnOk:visible", "True");
window.setProperty("btnCancel:visible", "True");
window.setProperty("btnOk:Text", "@ok");
window.setProperty("btnCancel:Text", "@cancel");
Vector<String> returnList = new Vector<String>();
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
}
});
core.suiService.openSUIWindow(window);
}
@Override
public void insertOpcodes(Map<Integer, INetworkRemoteEvent> arg0,