def AddMessage(self, prefix, prefixColor, message): parent = self.displayFrame.attachNewNode('messageParent') prefixTextNode = TextNode('prefixMessage') prefixTextNode.setText(prefix) prefixTextNode.setTextColor(prefixColor) prefixTextNode.setShadow(0.05, 0.05) prefixTextNode.setShadowColor(Globals.COLOR_BLACK) prefixTextNodePath = parent.attachNewNode(prefixTextNode) prefixTextNodePath.setScale(Settings.CHAT_HEIGHT) messageTextNode = TextNode('prefixMessage') messageTextNode.setText(message) messageTextNode.setTextColor(1, 1, 1, 1) messageTextNode.setShadow(0.05, 0.05) messageTextNode.setShadowColor(Globals.COLOR_BLACK) messageTextNodePath = parent.attachNewNode(messageTextNode) messageTextNodePath.setScale(Settings.CHAT_HEIGHT) messageTextNodePath.setPos(Vec3(prefixTextNode.calcWidth(prefix) * Settings.CHAT_HEIGHT, 0, 0)) taskMgr.remove('HideMessageLog') taskMgr.doMethodLater(ChatBox.MESSAGE_LIFE, self.HideMessageLog, 'HideMessageLog') self.ShowMessageLog() self.textNodes.append(parent) if(len(self.textNodes) > ChatBox.MAX_NUM_MESSAGES): self.RemoveMessage(self.textNodes[0]) self.RedrawMessages()
def AddMessage(self, victimName, attackerName, itemName, attackerColor = Globals.COLOR_WHITE, victimColor = Globals.COLOR_WHITE): parent = self.displayFrame.attachNewNode('messageParent') attackerTextNode = TextNode('attackerTextNode') attackerTextNode.setText(attackerName) attackerTextNode.setTextColor(attackerColor) attackerTextNode.setShadow(0.05, 0.05) attackerTextNode.setShadowColor(Globals.COLOR_BLACK) attackerTextNodePath = parent.attachNewNode(attackerTextNode) attackerTextNodePath.setScale(Settings.CHAT_HEIGHT) attackerTextNodePath.setPos(Vec3(-attackerTextNode.calcWidth('%s [%s] %s' % (attackerName, itemName, victimName)) * Settings.CHAT_HEIGHT, 0, 0)) itemNameTextNode = TextNode('itemNameTextNode') itemNameTextNode.setText('[%s]' % (itemName)) itemNameTextNode.setTextColor(Globals.COLOR_WHITE) itemNameTextNode.setShadow(0.05, 0.05) itemNameTextNode.setShadowColor(Globals.COLOR_BLACK) itemNameTextNodePath = parent.attachNewNode(itemNameTextNode) itemNameTextNodePath.setScale(Settings.CHAT_HEIGHT) itemNameTextNodePath.setPos(Vec3(-attackerTextNode.calcWidth('[%s] %s' % (itemName, victimName)) * Settings.CHAT_HEIGHT, 0, 0)) victimTextNode = TextNode('prefixMessage') victimTextNode.setText(victimName) victimTextNode.setTextColor(victimColor) victimTextNode.setShadow(0.05, 0.05) victimTextNode.setShadowColor(Globals.COLOR_BLACK) victimTextNodePath = parent.attachNewNode(victimTextNode) victimTextNodePath.setScale(Settings.CHAT_HEIGHT) victimTextNodePath.setPos(Vec3(-attackerTextNode.calcWidth(victimName) * Settings.CHAT_HEIGHT, 0, 0)) taskMgr.remove('HideMessageLog') taskMgr.doMethodLater(DeathNotifications.MESSAGE_LIFE, self.RemoveMessage, 'RemoveMessage', extraArgs = [parent]) self.textNodes.append(parent) if(len(self.textNodes) > DeathNotifications.MAX_NUM_MESSAGES): self.RemoveMessage(self.textNodes[0]) self.RedrawMessages()