Exemple #1
0
void swat_crossing_people(void)
{
	OBJECT *odog,*owagon;
	void *dogani,*wagonani;

	current_proc->pdata.p_otherguy=current_proc->pa8;

	process_sleep(0x50);

	/* create dog */
	get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND);						// get ptr to anim table
	dogani=current_proc->pa9;
	current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9));	// get ptr to frame
	gso_dmawnz(odog,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0);
	alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,odog);

	odog->oxpos.u.intpos=worldtlx.u.intpos-SCX(0x30);
	odog->oxvel.pos=SCX(0x30000);
	odog->oypos.u.intpos=ground_y-SCY(0x20);
	odog->ozval=100;
	insert_object(odog,&objlst);

	/* create wagon */
	get_char_ani(ANIM_TABLE2,ANIM_F3_FRIEND);						// get ptr to anim table
	wagonani=current_proc->pa9;
	current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9));	// get ptr to frame
	gso_dmawnz(owagon,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0);
	alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,owagon);

	match_ani_points(odog,owagon);				// match to two
	multi_adjust_xy(owagon,-66,-25);				// lineup wagon with dog
	owagon->oxvel.pos=SCX(0x30000);				// set speed to match dog
	owagon->ozval=200;
	insert_object(owagon,&objlst);

	/* cross */
	do
	{
		process_sleep(3);

		/* update dog */
		current_proc->pa8=odog;
		current_proc->pa9=dogani;
		frame_a9(odog);
		dogani=current_proc->pa9;

		/* update wagon */
		current_proc->pa8=owagon;
		current_proc->pa9=wagonani;
		frame_a9(owagon);
		wagonani=current_proc->pa9;
	} while (abs(worldtlx.u.intpos-odog->oxpos.u.intpos)<700);

	delobjp(odog);
	delobjp(owagon);

	process_suicide();
}
Exemple #2
0
void create_baiters(void)
{
	BAITPOS *pa10;
	OBJECT *obj;

	pa10=baiter_pos_list;
	/* cb_1 */
	do
	{
		if (pa10->b_ypos<0)
			return;

		gso_dmawnz_ns(obj,(ADDRESS)pa10->b_frame,hidden_anims,0);
		alloc_cache(pa10->b_frame,&hidden_anims,obj);

		(short)obj->ochar=pa10->b_xpos;
		(short)obj->oid=pa10->b_ypos;
		set_xy_coordinates(obj,pa10->b_xpos+wave_x_position,pa10->b_ypos+wave_y_position);
		insert_object(obj,&objlst);
		CREATE(PID_PONG_SPEED,baiter_enemy);

		pa10++;
	}
	while(1);
}
Exemple #3
0
void ce4b(void)
{
	OBJECT *obj;
	XYTYPE temp;

	gso_dmawnz(obj,(ADDRESS)&expld1,hidden_anims,0);
	alloc_cache(&expld1,&hidden_anims,obj);
	temp.yx=(LONG)current_proc->pa9;
	set_xy_coordinates(obj,temp.u.xpos+2,temp.u.ypos+5);
	insert_object(obj,&objlst);
	process_sleep(2);

	set_xy_coordinates(obj,temp.u.xpos+2,temp.u.ypos+5);
 	animate(SINGLE_ANI,&expld2,obj->oflags);
	process_sleep(2);

 	animate(SINGLE_ANI,&expld3,obj->oflags);
	process_sleep(2);

 	animate(SINGLE_ANI,&expld4,obj->oflags);
	process_sleep(2);

 	animate(SINGLE_ANI,&expld5,obj->oflags);
	process_sleep(2);

	delobj(obj);
	process_suicide();
}
Exemple #4
0
void rhb3(void)
{
	insert_object(current_proc->pa8,&objlst);
	current_proc->pa9=a_decap_spray;
	framew(3);
	blood_death(current_proc->pa8);
}
Exemple #5
0
/******************************************************************************
 Function: void face_punch_blood(void)

 By: David Schwartz

 Date: Mar 1995

 Parameters: current_proc->a11 - dude to bloody

 Returns: None

 Description:	hit in the face blood
******************************************************************************/
void face_punch_blood(void)
{
	current_proc->a11=(ADDRESS)current_proc->pa8;

	if (random()>0)
	{
		(long)current_proc->a0=1;						// xvel range
		(long)current_proc->a1=SCX(0x30000);		// xvel min
		(long)current_proc->a2=SCY(0x20000);		// yvel range
		(long)current_proc->a3=SCY(0x20000);		// yvel min
		current_proc->a4=SCY(0x0010)<<16|(-SCX(0x10));
		current_proc->a5=0x00040002;
		spawn_drip_neg;
	}

	/* face3 */
	get_tg_blood;
	lineup_1pwm(current_proc->pa8,(OBJECT *)current_proc->a11);
	flip_single(current_proc->pa8);

	current_proc->a0=((OBJECT*)current_proc->a11)->ochar;
	if (current_proc->a0==FT_JAX)
		multi_adjust_xy(current_proc->pa8,SCX(0xc),SCY(0x15));
	else multi_adjust_xy(current_proc->pa8,SCX(0x8),SCY(0x10));

	(current_proc->pa8)->oyvel.pos=-SCY(0x8000);

	set_proj_vel(current_proc->pa8,SCX(0x10000),-1);
	insert_object(current_proc->pa8,&objlst);

	current_proc->pa9=a_face_blood;
	framew(3);
	blood_death(current_proc->pa8);
}
Exemple #6
0
void Model_Impl::Load(CL_DomDocument &doc, const char *geometry_name, std::vector<CL_Collada_Image> &library_images)
{
	CL_Collada object;
	object = CL_Collada(doc, library_images);
	insert_object(object, geometry_name, library_images, CL_Angle(89.53f, cl_degrees));

	update_vbo = true;
}
Exemple #7
0
void sp1m1(OBJECT *pa0)
{
	set_xy_coordinates(current_proc->pa8,pa0->oxpos.u.intpos+SCX(4),pa0->oypos.u.intpos);
	insert_object(current_proc->pa8,&objlst);
	(current_proc->pa8)->oyvel.u.intpos=-5;
	missile_count++;
	return;
}
Exemple #8
0
void tdrip2(void)
{
	insert_object(current_proc->pa8,&objlst);

	current_proc->a0=(current_proc->pdata.p_store6>>16) & 0xffff;
	current_proc->pa9=drip_ani_table[current_proc->pdata.p_store6 & 0xffff];
	current_proc->a10=SCY(0x4000);
	drip_fall_2();
}
Exemple #9
0
NTSTATUS SERVICECALL
NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle,
		IN ACCESS_MASK DesiredAccess,
		IN POBJECT_ATTRIBUTES ObjectAttributes)
{
	POBJECT_DIRECTORY Directory;
	HANDLE hDirectory;
	OBJECT_ATTRIBUTES obj_attr;
	UNICODE_STRING obj_name;
	KPROCESSOR_MODE PreviousMode = KernelMode;
	NTSTATUS Status = STATUS_SUCCESS;
	
	if ((ULONG)ObjectAttributes < TASK_SIZE) {
		if ((copy_from_user(&obj_attr, ObjectAttributes, sizeof(OBJECT_ATTRIBUTES))))
			return STATUS_NO_MEMORY;
		if ((copy_from_user(&obj_name, ObjectAttributes->ObjectName, sizeof(UNICODE_STRING))))
			return STATUS_NO_MEMORY;
	} else {
		obj_attr = *ObjectAttributes;
		obj_name = *ObjectAttributes->ObjectName;
	}
	obj_attr.ObjectName = &obj_name;
	
	*DirectoryHandle = NULL;

	Status = create_object(PreviousMode,
			dir_object_type,
			&obj_attr,
			PreviousMode,
			NULL,
			sizeof(OBJECT_DIRECTORY),
			0,
			0,
			(PVOID*)&Directory);

	if (NT_SUCCESS(Status)) {
		Status = insert_object((PVOID)Directory,
				NULL,
				DesiredAccess,
				0,
				NULL,
				&hDirectory);
		deref_object(Directory);

		if (NT_SUCCESS(Status)) {
			if ((ULONG)DirectoryHandle < TASK_SIZE) {
				if (copy_to_user(DirectoryHandle, &hDirectory, sizeof(HANDLE)))
					return STATUS_NO_MEMORY;
			} else
				*DirectoryHandle = hDirectory;
		}
	}

	return Status;
} /* end NtCreateDirectoryObject */
Exemple #10
0
void create_player_1_ship(void)
{
	OBJECT *obj;

	gso_dmawnz(obj,(ADDRESS)&ship1,hidden_anims,0);
	alloc_cache(&ship1,&hidden_anims,obj);
	set_xy_coordinates(obj,SCX(0x50),SCY(0xe0));
	player_1_ship=obj;
	insert_object(obj,&objlst);
	return;
}
Exemple #11
0
void drip_entry(void)
{
	(current_proc->pa8)->oyvel.pos=-(randu(SCY(0x40000))+SCY(0x30000));

	flip_single(current_proc->pa8);
	insert_object(current_proc->pa8,&objlst);

	current_proc->a0=8;
	current_proc->pa9=a_drip;
	(long)current_proc->a10=SCY(0x6000);
	blood_fall_splat_12_die();
}
Exemple #12
0
OBJECT *make_a_spike(void)
{
	OBJECT *obj;

	gso_dmawnz(obj,(ADDRESS)EJBSPIKE,bell_anims,0);
	alloc_cache((OIMGTBL *)EJBSPIKE,&bell_anims,obj);
	obj->oxpos.u.intpos=(short)current_proc->a3;
	obj->oypos.u.intpos=SCY(0xa80)+12;
	(short)current_proc->a3+=SCX(15);			// spike spacing
	insert_object(obj,&objlst);
	return(obj);
}
Exemple #13
0
OBJECT *makestar(void)
{
	OBJECT *obj;

	gso_dmawnz(obj,(ADDRESS)&star,hidden_anims,0);
	alloc_cache(&star,&hidden_anims,obj);
	obj->ozval=-100;
	obj->oxpos.u.intpos=randu(SCX(400))-1;
	obj->oypos.u.intpos=randu(SCY(254))-1;
	insert_object(obj,&objlst);
	obj->oyvel.pos=randu(SCY(0x20000))+SCY(0x20000);

	return(obj);
}
Exemple #14
0
void hatb2(void)
{
	(current_proc->pa8)->oyvel.pos=srandarc(SCY(0x10000));

	set_proj_vel(current_proc->pa8,SCX(0x10000)+randu(SCX(0x20000)),-1);

	flip_single(current_proc->pa8);

	insert_object(current_proc->pa8,&objlst);

	current_proc->pa9=a_bigger;
	framew(6);
	blood_death(current_proc->pa8);
}
Exemple #15
0
void wall_dragon_proc(void)
{
	current_proc->a10=(ADDRESS)current_proc->pa8;
	//current_proc->pa9=a_wall_dragon;
	get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND);
	gmo_proc((current_proc->pa8)->oheap);

	lineup_a0_onto_a1(current_proc->pa8,(OBJECT *)current_proc->a10);
	multi_adjust_xy(current_proc->pa8,0,-SCY(0x30));
	insert_object(current_proc->pa8,&objlst);
	mframew_5;
	process_sleep(0x20);
	mframew_4;
	process_suicide();
}
Exemple #16
0
/******************************************************************************
 Function: void temple_calla(void)

 By: David Schwartz

 Date: Feb 1995

 Parameters: None

 Returns: None

 Description:	setup the bridge background
******************************************************************************/
void temple_calla(void)
{
	OBJECT *obj;

	alloc_vram_perm_bg_list((ADDRESS *)temple_perm_list,&temple_anims);

	current_proc->a10=10;
	(long)current_proc->a11=-1;

	do
	{
		/* candd */
		gso_dmawnz(obj,(ADDRESS)KANDLE1,temple_anims,0);
		obj->oxpos.u.intpos=(short)current_proc->a11+8+2;
		obj->oypos.u.intpos=0xb2+6;	//+36;
		alloc_cache(KANDLE1,temple_anims,obj);
		insert_object(obj,&baklst6);

		/* flame */
		(OBJECT *)current_proc->pa9=obj;
		gso_dmawnz(obj,(ADDRESS)wik1,temple_anims,0);
		alloc_cache(wik1,temple_anims,current_proc->pa8);
		insert_object(current_proc->pa8,&baklst6);

		obj->oxpos.u.intpos=((OBJECT *)current_proc->pa9)->oxpos.u.intpos+SCX(7);
		obj->oypos.u.intpos=((OBJECT *)current_proc->pa9)->oypos.u.intpos-SCY(12);

		CREATE(PID_BANI,candle_flame);
		(long)current_proc->a11+=SCX(0x96);
	}
	while(--current_proc->a10>0);

	create_dumb_animators(tony_candle_table,&temple_anims);

	return;
}
Exemple #17
0
/******************************************************************************
 Function: void face_blood(void)

 By: David Schwartz

 Date: Mar 1995

 Parameters: current_proc->a11 - dude to bloody

 Returns: None

 Description:	hit in the face hard blood
******************************************************************************/
void face_blood(void)
{
	get_jt_blood;

	lineup_with_a11_offset(SCX(0x0000),-SCY(0x0010));
	insert_object(current_proc->pa8,&objlst);

	(current_proc->pa8)->oyvel.pos=-randu(SCY(0x12000));

	set_proj_vel(current_proc->pa8,-(SCX(0x30000)+randu(SCX(0x20000))),-1);

	current_proc->pa9=a_bigger;
	framew(6);
	blood_death(current_proc->pa8);
}
Exemple #18
0
void dinger_proc(void)
{
	ochar_sound(0x21);

	current_proc->a10=(ADDRESS)current_proc->pa8;
	//current_proc->pa9=a_dinger;
	//gmo_proc(&friendship_anims);
	get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND);
	gmo_proc((current_proc->pa8)->oheap);
	lineup_a0_onto_a1(current_proc->pa8,(OBJECT *)current_proc->a10);
	insert_object(current_proc->pa8,&objlst);
	mframew_4;
	process_sleep(0x40);
	mframew_4;
	process_suicide();
}
Exemple #19
0
void flr2(OIMGTBL *pa5)
{
	OBJECT *obj;

	gso_dmawnz(obj,(ADDRESS)pa5,bell_anims,0);
	alloc_cache(pa5,&bell_anims,obj);
	if (current_proc->a3)
		flip_single(obj);

	/* flr3 */
	obj->oypos.u.intpos=(short)current_proc->a7;
	obj->oxpos.u.intpos=(short)current_proc->a6;
	obj->ozval=1000;
	(short)current_proc->a6+=obj->osize.u.xpos;
	insert_object(obj,&baklst8);
	return;
}
Exemple #20
0
void f_indian(void)
{
	OBJECT *obj,*ta8;
	void *animframe;

	//current_proc->pa9=a_ind_friend;
	get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND);

	other_ochar_sound(4,FT_ST);

	mframew_5;
	process_sleep(0x20);

	ta8=current_proc->pa8;
	current_proc->a10=(ADDRESS)current_proc->pa8;

	current_proc->a0=(ADDRESS)current_proc->pa9;
	animframe=(void*)get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND);		// get mk2game frame ptr
	current_proc->pa9=(void*)current_proc->a0;
	animframe=(void*)COMPUTE_ADDR(ta8->oheap,GET_LONG(animframe));

	gso_dmawnz(obj,(ADDRESS)animframe,ta8->oheap,0);
	alloc_cache((OIMGTBL*)animframe,ta8->oheap,obj);

	lineup_1pwm(obj,(OBJECT *)current_proc->a10);
	multi_adjust_xy(obj,-(SCX(0x70)),-SCY(0x100));
	insert_object(obj,&objlst);
	gravity_ani_ysize(SCY(0x20000),SCY(0x6000));
	shake_n_sound();

	if ( random()<0 )
	{
		p7_centered(txt_raiden1,160,SCY(0xf0)-14);
		p7_centered(txt_raiden2,160,SCY(0xf0));
	}
	else
	{
		p7_centered(txt_kano,160,SCY(0xf0));
	}

	current_proc->pa8=ta8;
	process_sleep(0x60);
	death_blow_complete();

	wait_forever();
}
Exemple #21
0
void boomb1(void) 
{
	(OBJECT *)current_proc->a11=current_proc->pa8;
	get_jt_blood;
	a11_blood_lineup(SCX(0x0),SCY(0x20));
	(current_proc->pa8)->oyvel.pos=srandarc(SCY(0x10000));
	set_proj_vel(current_proc->pa8,SCX(0x10000)+randu(SCX(0x20000)),-1);

	flip_single(current_proc->pa8);

	insert_object(current_proc->pa8,&objlst);

	current_proc->pa9=a_bigger;
	framew(6);
	blood_death(current_proc->pa8);
	
}
Exemple #22
0
void start_enemy_missile(void)
{
	OBJECT *obj=current_proc->pa8;

	if ( missile_count<(BOXPRIM_SIZE-7) )
	{
		make_solid_object(0x001c,3,6);
		set_xy_coordinates(current_proc->pa8,obj->oxpos.u.intpos+SCX(4),obj->oypos.u.intpos);
		insert_object(current_proc->pa8,&objlst);
		(current_proc->pa8)->oyvel.u.intpos=2;
		CREATE(PID_PONG_SPEED,watch_enemy_missile);
		current_proc->pa8=obj;
		missile_count++;
	}

	return;
}
Exemple #23
0
void boomerang_drip(void) 
{
	(OBJECT *)current_proc->a11=current_proc->pa8;
	get_jt_blood;
	a11_blood_lineup(SCX(0x0),SCY(0x50));

	set_proj_vel(current_proc->pa8,SCX(0x20000)+randu(SCX(0x60000)),-1);

	(current_proc->pa8)->oyvel.pos=-(randu(SCY(0x40000))+SCY(0x30000));

	flip_single(current_proc->pa8);
	insert_object(current_proc->pa8,&objlst);

	current_proc->a0=8;
	current_proc->pa9=a_drip;
	(long)current_proc->a10=SCY(0x6000);
	blood_fall_splat_12_die();
}
Exemple #24
0
void hat_proc(void)
{
	OBJECT *obj;

	current_proc->a10=(ADDRESS)current_proc->pa8;
	//gso_dmawnz(obj,(ADDRESS)&FETCHHAT2,friendship_anims,0);
	//alloc_cache(&FETCHHAT2,&friendship_anims,obj);
	get_char_ani(ANIM_TABLE2,ANIM_F3_FRIEND);						// get ptr to anim table
	current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9));	// get ptr to frame
	gso_dmawnz(obj,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0);
	alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,obj);

	lineup_a0_onto_a1(obj,(OBJECT *)current_proc->a10);
	multi_adjust_xy(obj,SCX(0x50),SCY(0x10));
	insert_object(obj,&objlst);

	obj->oyvel.pos=-SCY(0x40000);
	set_proj_vel(obj,SCX(0xa0000),2);
	process_suicide();
}
Exemple #25
0
obj_rnum add_object(struct obj_data *newobj, obj_vnum ovnum)
{
  int found = NOTHING;
  zone_rnum rznum = real_zone_by_thing(ovnum);

  /*
   * Write object to internal tables.
   */
  if ((newobj->item_number = real_object(ovnum)) != NOTHING) {
    copy_object(&obj_proto[newobj->item_number], newobj);
    update_objects(&obj_proto[newobj->item_number]);
    add_to_save_list(zone_table[rznum].number, SL_OBJ);
    return newobj->item_number;
  }

  found = insert_object(newobj, ovnum);
  adjust_objects(found);
  add_to_save_list(zone_table[rznum].number, SL_OBJ);
  return (found);
}
Exemple #26
0
void cute_lil_doggy(void)
{
	OBJECT *obj;

	current_proc->a10=(ADDRESS)current_proc->pa8;
	get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND);						// get ptr to anim table
	current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9));	// get ptr to frame
	gso_dmawnz(obj,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0);
	alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,obj);

	if (((OBJECT *)current_proc->a10)->oflags & M_FLIPH)
	{
		obj->oxpos.u.intpos=SCRRGT+SCX(0x30)+SCX(0x30)+worldtlx.u.intpos-SCX(0x30);
		obj->oxvel.pos=-SCX(0x60000);
		flip_single(obj);
	}
	else
	{
		obj->oxpos.u.intpos=worldtlx.u.intpos-SCX(0x30);
		obj->oxvel.pos=SCX(0x60000);
	}

	/* cute3 */
	obj->oypos.u.intpos=ground_y-SCY(0x20);
	obj->ozval=100;
	insert_object(obj,&objlst);

	//current_proc->pa9=a_dog;
	get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND);
	init_anirate(3);
	do
	{
		next_anirate();
		process_sleep(1);

	} while (abs(worldtlx.u.intpos-obj->oxpos.u.intpos)<700);

	stop_a8(obj);

	wait_forever();
}
Exemple #27
0
void pop_up_my_toy(void) 
{
	ADDRESS animframe;
	OBJECT *obj;

	tsound(0x92);
	shake_a11(6,6);
	takeover_him(r_scared_of_monkey);

	animframe=(ADDRESS)COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9));
	gso_dmawnz(obj,(ADDRESS)animframe,(current_proc->pa8)->oheap,0);
	alloc_cache((OIMGTBL *)animframe,(current_proc->pa8)->oheap,obj);
	obj->ozval=100;
	lineup_1pwm(obj,(OBJECT*)current_proc->a11);
	insert_object(obj,&objlst);

	framew(4);
	process_sleep(0x30);
	death_blow_complete();
	wait_forever();
}
Exemple #28
0
void sonya_flower_proc(void) 
{
	ADDRESS animframe;
	OBJECT *obj;

	process_sleep(20+randu(10));
	get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND);
	animframe=(ADDRESS)COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9));
	gso_dmawnz_ns(obj,(ADDRESS)animframe,(current_proc->pa8)->oheap,0);
	alloc_cache((OIMGTBL *)animframe,(current_proc->pa8)->oheap,obj);

	obj->oxpos.u.intpos=randu(SCRRGT);

	ground_a8();
	obj->oypos.u.intpos+=randu(SCY(5));
	a8_front_plus_1(obj);
	insert_object(obj,&objlst);

	get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND);
	framew(3+randu(6));
	process_suicide();
}
Exemple #29
0
//extern OIMGTBL *ostrich1;
void f_shang(void)
{
	OBJECT *obj=current_proc->pa8;
	void *animframe;

	CREATE(PID_BANI,end_friend_proc);
	tsound(0x8c);
	create_fx(FX_INVISO_POOF);

	process_sleep(8);

	set_inviso(current_proc->pa8);
	current_proc->a10=(ADDRESS)current_proc->pa8;

	get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND);
	animframe=(void*)COMPUTE_ADDR(obj->oheap,GET_LONG(current_proc->pa9));

	gso_dmawnz(obj,(ADDRESS)animframe,obj->oheap,0);
	alloc_cache((OIMGTBL *)animframe,obj->oheap,obj);

	obj->oxpos.u.intpos=((OBJECT*)current_proc->a10)->oxpos.u.intpos;
	obj->oypos.u.intpos=ground_y-SCY(0x20);
	insert_object(obj,&objlst);
	process_sleep(0x40);

	bounce();
	bounce();

	obj->oxvel.pos=SCX(0x30000);
	/* shang4 */
	current_proc->a10=5;
	do
	{
		bounce();
	}
	while(--current_proc->a10>0 );
	stop_a8(current_proc->pa8);
	wait_forever();
}
Exemple #30
0
CURRINT_REPOSITORY_TEMPL_
Guard<Obj,wait_m>& RepositoryBase<CURRINT_REPOSITORY_T_>
//
::create_object (const Par& param)
{
  Guard<Obj,wait_m>* res = nullptr;
  Obj* obj = 0;
  // <NB> cinfo.objectId is empty at the first call to
  // param
  ObjectCreationInfo cinfo;
  cinfo.repository = this;
  { 
    RLOCK (objectsM);

    const ObjId objId = allocate_new_object_id_internal
      (cinfo, param);

    toString (objId, cinfo.objectId);

    // dynamic cast for use with inherited parameters
    // <NB> this must be called inside the lock to allow
    // query repo data structures from create_derivation
    obj = dynamic_cast<Obj*>
      (param.create_derivation (cinfo));

    SCHECK (obj);
    res = &insert_object (objId, obj);
  }
  LOG_TRACE(log, "Object " << *obj << " is created.");

  if (cinfo.objectCreated)
    cinfo.objectCreated->set(); 
    // <NB> after inserting into repo
    // and unlocking

  assert(res);
  return *res;
}