Free Hero Mesh

Diff
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.

Differences From Artifact [c9c1928e06]:

To Artifact [6470854eef]:


3255
3256
3257
3258
3259
3260
3261
3262

3263
3264
3265
3266
3267
3268
3269
3255
3256
3257
3258
3259
3260
3261

3262
3263
3264
3265
3266
3267
3268
3269







-
+







}

static Uint32 broadcast(Uint32 from,int c,Uint16 msg,Value arg1,Value arg2,Value arg3,Uint8 s) {
  Uint32 t=0;
  Uint32 n;
  Object*o;
  Value v;
  if(s==2) t=0xFFFFFFFFULL;
  if(s==2) t=1;
  if(lastobj==VOIDLINK) return t;
  n=lastobj;
  if(c && (classes[c]->cflags&CF_GROUP)) Throw("Broadcast for abstract classes is not implemented yet");
  while(o=objects[n]) {
    if(!c || o->class==c) {
      v=send_message(from,n,msg,arg1,arg2,arg3);
      switch(s) {
3277
3278
3279
3280
3281
3282
3283
3284

3285
3286
3287
3288
3289
3290
3291
3277
3278
3279
3280
3281
3282
3283

3284
3285
3286
3287
3288
3289
3290
3291







-
+







            default:
              if(v.t<=TY_MAXTYPE) Throw("Invalid return type for BroadcastSum");
              t++;
          }
          break;
        case 2:
          switch(v.t) {
            case TY_NUMBER: if(!v.u) return 0;
            case TY_NUMBER: if(!v.u) return 0; break;
            case TY_SOUND: case TY_USOUND: Throw("Invalid return type for BroadcastAnd");
          }
          break;
        case 3:
          StackReq(0,1);
          if(v.t!=TY_MARK) Push(v);
          break;