Files
NGECore2/scripts/commands/createvendor.py
2014-05-26 20:41:51 +02:00

171 lines
6.3 KiB
Python

import sys
from java.util import HashMap
from java.util import Vector
from services.sui.SUIService import ListBoxType
from services.sui.SUIService import InputBoxType
from main import NGECore
from java.lang import Long
from services.sui.SUIWindow import Trigger
def setup():
return
def run(core, actor, target, commandString):
if actor.getCombatFlag() > 0:
return
cell = actor.getContainer()
building = actor.getGrandparent()
ghost = actor.getSlottedObject('ghost')
if not ghost or not cell or not building or not core.housingService.getPermissions(actor, cell):
return
if ghost.getAmountOfVendors() >= actor.getSkillModBase('manage_vendor'):
actor.sendSystemMessage('@player_structure:full_vendors', 0)
return
suiOptions = HashMap()
suiOptions.put(Long(1), '@player_structure:terminal')
suiOptions.put(Long(2), '@player_structure:droid')
# TODO add creatures
window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, '@player_structure:vendor_type_t', '@player_structure:vendor_type_d', suiOptions, actor, None, 5)
returnList = Vector()
returnList.add('List.lstList:SelectedRow')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleFirstWindow)
core.suiService.openSUIWindow(window)
return
def handleFirstWindow(actor, window, eventType, returnList):
core = NGECore.getInstance()
index = int(returnList.get(0))
selected = window.getObjectIdByIndex(index)
hiring = actor.getSkillModBase('hiring')
if selected == 1:
suiOptions = HashMap()
if hiring >= 10:
suiOptions.put(Long(1), '@player_structure:terminal_bulky')
if hiring >= 30:
suiOptions.put(Long(2), '@player_structure:terminal_standard')
if hiring >= 50:
suiOptions.put(Long(3), '@player_structure:terminal_small')
if hiring >= 75:
suiOptions.put(Long(4), '@player_structure:terminal_fancy')
if hiring >= 90:
suiOptions.put(Long(5), '@player_structure:terminal_slim')
window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, '@player_structure:terminal_type_t', '@player_structure:terminal_type_d', suiOptions, actor, None, 5)
returnList = Vector()
returnList.add('List.lstList:SelectedRow')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleTerminalWindow)
core.suiService.openSUIWindow(window)
if selected == 2:
suiOptions = HashMap()
if hiring >= 20:
suiOptions.put(Long(1), '@player_structure:droid_bartender')
if hiring >= 50:
suiOptions.put(Long(2), '@player_structure:droid_power')
if hiring >= 60:
suiOptions.put(Long(3), '@player_structure:droid_wed')
if hiring >= 90:
suiOptions.put(Long(4), '@player_structure:droid_surgical')
if hiring >= 100:
suiOptions.put(Long(5), '@player_structure:droid_protocol')
window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, '@player_structure:droid_type_t', '@player_structure:droid_type_d', suiOptions, actor, None, 5)
returnList = Vector()
returnList.add('List.lstList:SelectedRow')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleDroidWindow)
core.suiService.openSUIWindow(window)
return
def handleTerminalWindow(actor, window, eventType, returnList):
core = NGECore.getInstance()
index = int(returnList.get(0))
selected = window.getObjectIdByIndex(index)
if selected == 1:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_bulky.iff')
elif selected == 2:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_standard.iff')
elif selected == 3:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_small.iff')
elif selected == 4:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_fancy.iff')
elif selected == 5:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_slim.iff')
createNameVendorWindow(core, actor)
return
def handleDroidWindow(actor, window, eventType, returnList):
core = NGECore.getInstance()
index = int(returnList.get(0))
selected = window.getObjectIdByIndex(index)
if selected == 1:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_bartender.iff')
elif selected == 2:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_power.iff')
elif selected == 3:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_wed.iff')
elif selected == 4:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_surgical.iff')
elif selected == 5:
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_protocol.iff')
createNameVendorWindow(core, actor)
return
def createNameVendorWindow(core, actor):
window = core.suiService.createInputBox(InputBoxType.INPUT_BOX_OK_CANCEL, '@player_structure:name_t', '@player_structure:name_d', actor, None, 5, handleVendorName)
core.suiService.openSUIWindow(window)
return
def handleVendorName(actor, window, eventType, returnList):
core = NGECore.getInstance()
name = returnList.get(0)
print name
inventory = actor.getSlottedObject('inventory')
ghost = actor.getSlottedObject('ghost')
if not core.characterService.checkName(name, actor.getClient()):
actor.sendSystemMessage('@player_structure:obscene', 0)
createNameVendorWindow(core, actor)
return
if not actor.getAttachment('selectedVendorTemplate') or not inventory or not ghost:
actor.sendSystemMessage('@player_structure:create_failed', 0)
return
if actor.getInventoryItemCount() >= 80:
actor.sendSystemMessage('@player_structure:inventory_full_generic', 0)
return
vendor = core.objectService.createObject(actor.getAttachment('selectedVendorTemplate'), actor.getPlanet())
if not vendor:
actor.sendSystemMessage('@player_structure:create_failed', 0)
return
actor.setAttachment('selectedVendorTemplate', None)
vendor.setAttachment('isVendor', True)
vendor.setAttachment('onMap', True)
vendor.setAttachment('maintenanceAmount', 0)
vendor.setAttachment('vendorOwner', Long(actor.getObjectID()))
vendor.setAttachment('initialized', False)
vendor.setAttachment('vendorSearchEnabled', False)
vendor.setCustomName('Vendor: ' + name)
ghost.addVendor(vendor.getObjectID())
inventory.add(vendor)
actor.sendSystemMessage('@player_structure:create_success', 0)
return