TempleOSCDV5.01.ISO
This commit is contained in:
1 parent
f6eacf7744
commit
320c7ee98a
219 files changed
+5211
-4853
No files matched your search
@@ -4,7 +4,7 @@ U0 PlayerIndirect()
|
||||
I64 i,remaining=0,msg_code,arg1,arg2;
|
||||
F64 target_x,target_y;
|
||||
ViewPlayerSet(cur_player);
|
||||
for (i=0;i<MAX_UNITS;i++) {
|
||||
for (i=0;i<UNITS_NUM;i++) {
|
||||
tmpu=&units[cur_player][i];
|
||||
if (tmpu->life>0 && tmpu->indirect_fire)
|
||||
remaining++;
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
Unit *UnitNearestFind(I64 row,I64 col,I64 player,Bool in_LOS,F64 range=-1)
|
||||
{
|
||||
I64 i;
|
||||
F64 dd,best_dd=MAX_F64,x1,y1,x2,y2;
|
||||
F64 dd,best_dd=F64_MAX,x1,y1,x2,y2;
|
||||
Unit *best=NULL;
|
||||
//$LK,"Sqrt",A="MN:Sqrt"$() is slow, so work with squared distances.
|
||||
if (range<0)
|
||||
range=MAX_F64;
|
||||
range=F64_MAX;
|
||||
else
|
||||
range*=range;
|
||||
RowCol2XY(&x1,&y1,row,col);
|
||||
for (i=0;i<MAX_UNITS;i++)
|
||||
for (i=0;i<UNITS_NUM;i++)
|
||||
if (units[player][i].life>0) {
|
||||
if (!in_LOS || LOS(row,col,units[player][i].row,units[player][i].col)) {
|
||||
RowCol2XY(&x2,&y2,units[player][i].row,units[player][i].col);
|
||||
@@ -27,7 +27,7 @@ U0 PlayerIndirect()
|
||||
{
|
||||
Unit *target,*tmpu;
|
||||
I64 i;
|
||||
for (i=0;i<MAX_UNITS;i++) {
|
||||
for (i=0;i<UNITS_NUM;i++) {
|
||||
UserChk;
|
||||
tmpu=&units[cur_player][i];
|
||||
if (tmpu->life>0 && tmpu->indirect_fire &&
|
||||
@@ -43,7 +43,7 @@ U0 PlayerMove()
|
||||
Unit *target,*tmpu;
|
||||
I64 i;
|
||||
F64 x,y;
|
||||
for (i=0;i<MAX_UNITS;i++) {
|
||||
for (i=0;i<UNITS_NUM;i++) {
|
||||
UserChk;
|
||||
tmpu=&units[cur_player][i];
|
||||
if (tmpu->life>0) {
|
||||
@@ -64,7 +64,7 @@ U0 PlayerDirect()
|
||||
{
|
||||
Unit *target,*tmpu;
|
||||
I64 i;
|
||||
for (i=0;i<MAX_UNITS;i++) {
|
||||
for (i=0;i<UNITS_NUM;i++) {
|
||||
UserChk;
|
||||
tmpu=&units[cur_player][i];
|
||||
if (tmpu->life>0 && !tmpu->indirect_fire &&
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
#define MAP_WIDTH 640 //Change this, if you like.
|
||||
#define MAX_UNITS 32 //Change this, if you like.
|
||||
#define UNITS_NUM 32 //Change this, if you like.
|
||||
#define HEX_SIDE 11
|
||||
|
||||
U0 InitDefines()
|
||||
@@ -60,10 +60,10 @@ class Unit
|
||||
Bool vis[2],fired,infantry,indirect_fire,pad[3];
|
||||
};
|
||||
|
||||
Unit units[2][MAX_UNITS];
|
||||
Unit units[2][UNITS_NUM];
|
||||
|
||||
// Bt(vis_unit_bitmap,player1+player0*((MAX_UNITS+7)&~7))
|
||||
U8 vis_unit_bitmap[2][(((MAX_UNITS+7)&~7)*MAX_UNITS)>>3];
|
||||
// Bt(vis_unit_bitmap,player1+player0*((UNITS_NUM+7)&~7))
|
||||
U8 vis_unit_bitmap[2][(((UNITS_NUM+7)&~7)*UNITS_NUM)>>3];
|
||||
|
||||
#define PHASE_START 0
|
||||
#define PHASE_INDIRECT 0
|
||||
|
||||
@@ -234,7 +234,7 @@ U0 InitUnits()
|
||||
I64 i,j,row,col,type;
|
||||
Unit *tmpu;
|
||||
MemSet(units,0,sizeof(units));
|
||||
alive_cnt[0]=alive_cnt[1]=MAX_UNITS;
|
||||
alive_cnt[0]=alive_cnt[1]=UNITS_NUM;
|
||||
for (j=0;j<2;j++)
|
||||
for (i=0;i<alive_cnt[j];i++) {
|
||||
tmpu=&units[j][i];
|
||||
@@ -243,25 +243,25 @@ U0 InitUnits()
|
||||
tmpu->life=100;
|
||||
tmpu->facing=RandU16%6;
|
||||
if (!j) {
|
||||
if (i>=MAX_UNITS/2) {
|
||||
if (i>=15*MAX_UNITS/16)
|
||||
if (i>=UNITS_NUM/2) {
|
||||
if (i>=15*UNITS_NUM/16)
|
||||
type=UT_ARTILLERY;
|
||||
else
|
||||
type=UT_INFANTRY;
|
||||
} else {
|
||||
if (i>=MAX_UNITS/4)
|
||||
if (i>=UNITS_NUM/4)
|
||||
type=UT_MD_TANK;
|
||||
else
|
||||
type=UT_LT_TANK;
|
||||
}
|
||||
} else {
|
||||
if (i>=MAX_UNITS/2) {
|
||||
if (i>=15*MAX_UNITS/16)
|
||||
if (i>=UNITS_NUM/2) {
|
||||
if (i>=15*UNITS_NUM/16)
|
||||
type=UT_ARTILLERY;
|
||||
else
|
||||
type=UT_INFANTRY;
|
||||
} else {
|
||||
if (i>=MAX_UNITS/4)
|
||||
if (i>=UNITS_NUM/4)
|
||||
type=UT_MD_TANK;
|
||||
else
|
||||
type=UT_LT_TANK;
|
||||
|
||||
@@ -61,7 +61,7 @@ Unit *UnitFind(I64 row,I64 col)
|
||||
{//Finds unit in a hexagon.
|
||||
I64 i,j;
|
||||
for (j=0;j<2;j++)
|
||||
for (i=0;i<MAX_UNITS;i++)
|
||||
for (i=0;i<UNITS_NUM;i++)
|
||||
if (units[j][i].life>0 &&
|
||||
units[j][i].row==row &&
|
||||
units[j][i].col==col)
|
||||
|
||||
+20
-20
@@ -22,7 +22,7 @@ U0 VRSetUp(I64 player)
|
||||
Unit *ut0,*ut1;
|
||||
ut0=&units[player][0];
|
||||
ut1=&units[player^1][0];
|
||||
for (i=0;i<MAX_UNITS;i++,ut0++,ut1++) {
|
||||
for (i=0;i<UNITS_NUM;i++,ut0++,ut1++) {
|
||||
LBtr(&ut1->vis[player],0);
|
||||
LBEqu(&ut0->vis[player],0,ut0->life>0);
|
||||
}
|
||||
@@ -32,15 +32,15 @@ U0 VRMerge(I64 player)
|
||||
{
|
||||
I64 i,j;
|
||||
Unit *ut1;
|
||||
U8 *dst,*src,*mask=CAlloc((MAX_UNITS+7)>>3);
|
||||
for (j=0;j<MAX_UNITS;j++) {//p0
|
||||
src=&vis_unit_bitmap[player][(((MAX_UNITS+7)&~7)*j)>>3];
|
||||
U8 *dst,*src,*mask=CAlloc((UNITS_NUM+7)>>3);
|
||||
for (j=0;j<UNITS_NUM;j++) {//p0
|
||||
src=&vis_unit_bitmap[player][(((UNITS_NUM+7)&~7)*j)>>3];
|
||||
dst=mask;
|
||||
for (i=0;i<(MAX_UNITS+7)>>3;i++) //player1
|
||||
for (i=0;i<(UNITS_NUM+7)>>3;i++) //player1
|
||||
*dst++|=*src++;
|
||||
}
|
||||
ut1=&units[player^1][0];
|
||||
for (j=0;j<MAX_UNITS;j++,ut1++)
|
||||
for (j=0;j<UNITS_NUM;j++,ut1++)
|
||||
LBEqu(&ut1->vis[player],0,Bt(mask,j) && ut1->life>0);
|
||||
Free(mask);
|
||||
}
|
||||
@@ -63,7 +63,7 @@ Bool MPVisRecalc(MPCtrl1 *job)
|
||||
case VR_UPDATE_FRIENDLY_UNIT:
|
||||
case VR_ONE_FRIENDLY_UNIT:
|
||||
if (job->mode==VR_UPDATE_FRIENDLY_UNIT)
|
||||
range=MAX_F64;
|
||||
range=F64_MAX;
|
||||
RowCol2XY(&x1,&y1,row,col);
|
||||
for (i=job->lo;i<job->hi;i++,ut1++) {
|
||||
seen=FALSE;
|
||||
@@ -78,7 +78,7 @@ Bool MPVisRecalc(MPCtrl1 *job)
|
||||
}
|
||||
if (job->mode==VR_UPDATE_FRIENDLY_UNIT)
|
||||
LBEqu(&vis_unit_bitmap[cur_player],
|
||||
i+job->tmpu->num*((MAX_UNITS+7)&~7),seen);
|
||||
i+job->tmpu->num*((UNITS_NUM+7)&~7),seen);
|
||||
}
|
||||
break;
|
||||
case VR_ONE_ENEMY_UNIT:
|
||||
@@ -87,15 +87,15 @@ Bool MPVisRecalc(MPCtrl1 *job)
|
||||
if (ut1->life>0 &&
|
||||
LOS(row,col,ut1->row,ut1->col)) {
|
||||
LBts(&vis_unit_bitmap[enemy_player],
|
||||
job->tmpu->num+i*((MAX_UNITS+7)&~7));
|
||||
job->tmpu->num+i*((UNITS_NUM+7)&~7));
|
||||
res=TRUE;
|
||||
} else
|
||||
LBtr(&vis_unit_bitmap[enemy_player],
|
||||
job->tmpu->num+i*((MAX_UNITS+7)&~7));
|
||||
job->tmpu->num+i*((UNITS_NUM+7)&~7));
|
||||
break;
|
||||
case VR_ALL_UNITS:
|
||||
ut0=&units[cur_player][0];
|
||||
for (i=0;i<MAX_UNITS;i++,ut0++)
|
||||
for (i=0;i<UNITS_NUM;i++,ut0++)
|
||||
if (ut0->life>0) {
|
||||
RowCol2XY(&x1,&y1,ut0->row,ut0->col);
|
||||
ut1=&units[enemy_player][job->lo];
|
||||
@@ -103,15 +103,15 @@ Bool MPVisRecalc(MPCtrl1 *job)
|
||||
if (ut1->life>0 &&
|
||||
LOS(ut0->row,ut0->col,ut1->row,ut1->col)) {
|
||||
LBts(&ut1->vis[cur_player],0);
|
||||
LBts(&vis_unit_bitmap[cur_player],j+i*((MAX_UNITS+7)&~7));
|
||||
LBts(&vis_unit_bitmap[cur_player],j+i*((UNITS_NUM+7)&~7));
|
||||
} else
|
||||
LBtr(&vis_unit_bitmap[cur_player],j+i*((MAX_UNITS+7)&~7));
|
||||
LBtr(&vis_unit_bitmap[cur_player],j+i*((UNITS_NUM+7)&~7));
|
||||
}
|
||||
} else
|
||||
for (j=job->lo;j<job->hi;j++)
|
||||
LBtr(&vis_unit_bitmap[cur_player],j+i*((MAX_UNITS+7)&~7));
|
||||
LBtr(&vis_unit_bitmap[cur_player],j+i*((UNITS_NUM+7)&~7));
|
||||
ut0=&units[enemy_player][0];
|
||||
for (i=0;i<MAX_UNITS;i++,ut0++)
|
||||
for (i=0;i<UNITS_NUM;i++,ut0++)
|
||||
if (ut0->life>0) {
|
||||
RowCol2XY(&x1,&y1,ut0->row,ut0->col);
|
||||
ut1=&units[cur_player][job->lo];
|
||||
@@ -119,13 +119,13 @@ Bool MPVisRecalc(MPCtrl1 *job)
|
||||
if (ut1->life>0 &&
|
||||
LOS(ut0->row,ut0->col,ut1->row,ut1->col)) {
|
||||
LBts(&ut1->vis[enemy_player],0);
|
||||
LBts(&vis_unit_bitmap[enemy_player],j+i*((MAX_UNITS+7)&~7));
|
||||
LBts(&vis_unit_bitmap[enemy_player],j+i*((UNITS_NUM+7)&~7));
|
||||
} else
|
||||
LBtr(&vis_unit_bitmap[enemy_player],j+i*((MAX_UNITS+7)&~7));
|
||||
LBtr(&vis_unit_bitmap[enemy_player],j+i*((UNITS_NUM+7)&~7));
|
||||
}
|
||||
} else
|
||||
for (j=job->lo;j<job->hi;j++)
|
||||
LBtr(&vis_unit_bitmap[enemy_player],j+i*((MAX_UNITS+7)&~7));
|
||||
LBtr(&vis_unit_bitmap[enemy_player],j+i*((UNITS_NUM+7)&~7));
|
||||
break;
|
||||
}
|
||||
return res;
|
||||
@@ -148,13 +148,13 @@ $LK,"MAlloc",A="MN:MAlloc"$() would probably be the better choice.
|
||||
|
||||
if (mode==VR_FRIENDLY_UNIT_DIED) {
|
||||
MemSet((&vis_unit_bitmap[enemy_player])(U8 *)+
|
||||
(tmpu->num*((MAX_UNITS+7)&~7))>>3,0,(MAX_UNITS+7)>>3);
|
||||
(tmpu->num*((UNITS_NUM+7)&~7))>>3,0,(UNITS_NUM+7)>>3);
|
||||
VRMerge(enemy_player);
|
||||
return 0; //Return any value--don't care
|
||||
}
|
||||
|
||||
cnt=mp_cnt; //Cores
|
||||
hi=MAX_UNITS;
|
||||
hi=UNITS_NUM;
|
||||
if (mode==VR_ONE_ENEMY_UNIT) {
|
||||
for (hi--;hi>=0;hi--)
|
||||
if (units[enemy_player][hi].life>0)
|
||||
|
||||
@@ -7,7 +7,7 @@ U0 TurnNew()
|
||||
{
|
||||
I64 i,j;
|
||||
for (j=0;j<2;j++)
|
||||
for (i=0;i<MAX_UNITS;i++) {
|
||||
for (i=0;i<UNITS_NUM;i++) {
|
||||
units[j][i].remaining_movement=units[j][i].movement;
|
||||
units[j][i].fired=FALSE;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user