All pastes #230785 Raw Edit

jesterKing

public text v1 · immutable
#230785 ·published 2006-10-31 12:55 UTC
rendered paste body
/*
 * Call "talk" method
 */
void b_verse_talk(struct VNode *vnode)
{
	char text[160];
	text[0]='\0';
	if(sbutton(text, 0, 160, "Say:")) {
		waitcursor(1);
		printf("saying %s\n", text);
		waitcursor(0);
	}
}

/*************************/


else if(te->idcode==ID_VN) {
						struct VNode *vnode = (VNode*)te->directdata;
						if (vnode->type==V_NT_OBJECT || vnode->type==V_NT_BITMAP) {
							char subscribed = 0;
							if((vnode->type==V_NT_OBJECT) && (((VObjectData*)vnode->data)->object!=NULL))
								subscribed = 1;
							if((vnode->type==V_NT_BITMAP) && (((VBitmapData*)vnode->data)->image!=NULL))
								subscribed = 1;
							if(subscribed==1)
								event = pupmenu("VerseNode %t| Unsubscribe %x2");
							else {
								int has_methods = 0;
								if(vnode->methodgroups.first) {
									struct VMethodGroup *vmg;
									struct VMethod *vm;
									
									for(vmg= vnode->methodgroups.first; vmg; vmg= vmg->next) {
										for(vm=vmg->methods.first; vm; vm= vm->next) {
											if(strcmp(vm->name, "talk")==0) {
												has_methods=1;
												break;
											}
										}
										if(has_methods) break;
									}
								}
								if(has_methods)
									event = pupmenu("VerseNode %t| Subscribe %x1| Talk %x3");
								else
									event = pupmenu("VerseNode %t| Subscribe %x1");
							}
							switch(event) {
								case 1:
									b_verse_pop_node(vnode);
									break;
								case 2:
									/* Global */
									b_verse_unsubscribe(vnode);
									break;
								case 3:
									b_verse_talk(vnode);
									break;
							}
						}
					}