@Override public void run() { nextTickTime = System.currentTimeMillis() + tickTime; // final String oldThreadName=Thread.currentThread().getName(); try { currentThread = Thread.currentThread(); lastStart = System.currentTimeMillis(); lastClient = null; final boolean allSuspended = CMLib.threads().isAllSuspended(); if ((CMProps.getBoolVar(CMProps.Bool.MUDSTARTED)) && (!allSuspended)) { for (final Iterator<TickClient> i = tickers(); i.hasNext(); ) { final TickClient client = i.next(); lastClient = client; // if(client.getCurrentTickDown()<=1) // currentThread.setName(oldThreadName+":"+getName()+":"+client.getName()); if (client.tickTicker(false)) { delTicker(client); // cant do i.remove, its an streeset } } } } finally { lastStop = System.currentTimeMillis(); milliTotal += (lastStop - lastStart); tickTotal++; currentThread = null; // Thread.currentThread().setName(oldThreadName); } if (tickers.size() == 0) { if (CMLib.threads() instanceof ServiceEngine) ((ServiceEngine) CMLib.threads()).delTickGroup(this); } }
@Override public String getStatus() { final TickClient lastTicked = getLastTicked(); if (!isAwake()) return "Sleeping"; if ((lastTicked == null) || (lastTicked.getClientObject() == null)) return "Shutdown"; final Tickable ticker = lastTicked.getClientObject(); return ticker.ID() + ": " + ticker.name() + ": " + ((myEngine != null) ? myEngine.getTickStatusSummary(ticker) : "null"); }
@Override public Iterator<TickClient> getLocalItems(int itemTypes, Room R) { LinkedList<TickClient> localItems = null; for (TickClient C : tickers) { switch (itemTypes) { case 0: if (C.getClientObject() instanceof MOB) { if (((MOB) C.getClientObject()).getStartRoom() == R) { if (localItems == null) localItems = new LinkedList<TickClient>(); localItems.add(C); } } else if ((C.getClientObject() instanceof ItemTicker) && ((((ItemTicker) C.getClientObject()).properLocation() == R))) { if (localItems == null) localItems = new LinkedList<TickClient>(); localItems.add(C); } break; case 1: if ((C.getClientObject() instanceof ItemTicker) && ((((ItemTicker) C.getClientObject()).properLocation() == R))) { if (localItems == null) localItems = new LinkedList<TickClient>(); localItems.add(C); } break; case 2: if ((C.getClientObject() instanceof MOB) && (((MOB) C.getClientObject()).getStartRoom() == R)) { if (localItems == null) localItems = new LinkedList<TickClient>(); localItems.add(C); } break; } } if (localItems == null) return null; return localItems.iterator(); }